ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> IOS开发 >> Swift Swift - 绘制背景线条

Swift Swift - 绘制背景线条

来源:网络整理     时间:2016-08-14     关键词:Swift

本篇文章主要介绍了"Swift Swift - 绘制背景线条",主要涉及到Swift方面的内容,对于IOS开发感兴趣的同学可以参考一下: Swift - 绘制背景线条 效果 源码//// BackgroundLineView.swift// LineBackgroundView//// Cr...

Swift - 绘制背景线条

 Swift - 绘制背景线条

效果

 Swift - 绘制背景线条

源码

////  BackgroundLineView.swift
//  LineBackgroundView
////  Created by YouXianMing on 16/8/14.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//
import UIKit

// MARK: Public class : BackgroundLineViewclass BackgroundLineView: UIView {

    // MARK: Properties./// Line width, default is 5.    var lineWidth : CGFloat {

        get {return backgroundView.lineWidth}

        set(newVal) {

            backgroundView.lineWidth = newVal
            backgroundView.setNeedsDisplay()
        }
    }

    /// Line gap, default is 3.    var lineGap : CGFloat {

        get {return backgroundView.lineGap}

        set(newVal) {

            backgroundView.lineGap = newVal
            backgroundView.setNeedsDisplay()
        }
    }

    /// Line color, default is grayColor.    var lineColor : UIColor {

        get {return backgroundView.lineColor}

        set(newVal) {

            backgroundView.lineColor = newVal
            backgroundView.setNeedsDisplay()
        }
    }

    /// Rotate value, default is 0.    var rotate : CGFloat {

        get {return backgroundView.rotate}

        set(newVal) {

            backgroundView.rotate = newVal
            backgroundView.setNeedsDisplay()
        }
    }

    convenience init(frame: CGRect, lineWidth : CGFloat, lineGap : CGFloat, lineColor : UIColor, rotate : CGFloat) {

        self.init(frame : frame)
        self.lineWidth = lineWidth
        self.lineGap   = lineGap
        self.lineColor = lineColor
        self.rotate    = rotate
    }

    // MARK: Override system method.override func layoutSubviews() {

        super.layoutSubviews()
        setupBackgroundView()
    }

    override init(frame: CGRect) {

        super.init(frame: frame)

        self.layer.masksToBounds = true        self.addSubview(backgroundView)
    }

    required init?(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")
    }

    // MARK: Private value & func.private let backgroundView = LineBackground(length: 0)

    private func setupBackgroundView() {

        let drawLength        = sqrt(self.bounds.size.width * self.bounds.size.width + self.bounds.size.height * self.bounds.size.height)
        backgroundView.frame  = CGRectMake(0, 0, drawLength, drawLength)
        backgroundView.center = CGPointMake(self.bounds.size.width / 2.0, self.bounds.size.height / 2.0)
        backgroundView.setNeedsDisplay()
    }
}

// MARK: Private class : LineBackgroundprivateclass LineBackground : UIView {

    private var rotate    : CGFloat = 0private var lineWidth : CGFloat = 5private var lineGap   : CGFloat = 3private var lineColor : UIColor = UIColor.grayColor()

    override init(frame: CGRect) {

        super.init(frame: frame)
        self.backgroundColor = UIColor.clearColor()
    }

    required init?(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")
    }

    convenience init(length : CGFloat) {

        self.init(frame : CGRectMake(0, 0, length, length))
    }

    override func drawRect(rect: CGRect) {

        super.drawRect(rect)

        if self.bounds.size.width <= 0 || self.bounds.size.height <= 0 {

            return        }

        let context      = UIGraphicsGetCurrentContext()
        let width        = self.bounds.size.width
        let height       = self.bounds.size.width
        let drawLength   = sqrt(width * width + height * height)
        let outerX       = (drawLength - width)  / 2.0        let outerY       = (drawLength - height) / 2.0        let tmpLineWidth = lineWidth <= 0 ? 5 : lineWidth
        let tmpLineGap   = lineGap   <= 0 ? 3 : lineGap

        var red   : CGFloat = 0        var green : CGFloat = 0        var blue  : CGFloat = 0        var alpha : CGFloat = 0
        CGContextTranslateCTM(context, 0.5 * drawLength, 0.5 * drawLength)
        CGContextRotateCTM(context, rotate)
        CGContextTranslateCTM(context, -0.5 * drawLength, -0.5 * drawLength)

        lineColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
        CGContextSetRGBFillColor(context, red, green, blue, alpha)

        var currentX = -outerX

        while currentX < drawLength {

            CGContextAddRect(context, CGRectMake(currentX, -outerY, tmpLineWidth, drawLength))
            currentX += tmpLineWidth + tmpLineGap
        }

        CGContextFillPath(context)
    }
}

使用

////  ViewController.swift
//  LineBackgroundView
////  Created by YouXianMing on 16/8/14.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//
import UIKit

class ViewController: UIViewController {

    let tmpView = BackgroundLineView(frame: CGRectMake(0, 0, 300, 300), lineWidth: 4, lineGap: 4,
                                     lineColor: UIColor.blackColor().colorWithAlphaComponent(0.045), rotate: CGFloat(M_PI_4))

    override func viewDidLoad() {

        super.viewDidLoad()

        tmpView.center = self.view.center
        self.view.addSubview(tmpView)
    }
}

以上就介绍了Swift Swift - 绘制背景线条,包括了Swift方面的内容,希望对IOS开发有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_3276912.html

Swift相关图片

Swift相关文章