Dashed line border around UIView

后端 未结 23 2411
粉色の甜心
粉色の甜心 2020-12-02 04:16

How do I add dashed line border around UIView.

Something Like this

\"\"

23条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-02 04:29

    Swift 5+

    import UIKit
    
    class DashedBorderView: UIView {
    
        private let borderLayer = CAShapeLayer()
    
        init(color: UIColor, width: CGFloat = 1) {
            super.init(frame: CGRect.zero)
    
            let pattern: [NSNumber] = [NSNumber(value: Float(5 * width)), NSNumber(value: Float(3 * width))]
    
            borderLayer.backgroundColor = nil
            borderLayer.fillColor = nil
            borderLayer.lineDashPattern = pattern
            borderLayer.lineWidth = width
            borderLayer.strokeColor = color.cgColor
    
            layer.addSublayer(borderLayer)
        }
    
        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    
        override func draw(_ rect: CGRect) {
            borderLayer.frame = bounds
            borderLayer.path = UIBezierPath(roundedRect: rect, cornerRadius: layer.cornerRadius).cgPath
        }
    }
    

    How to use:

    // f.e. inside UIViewController
    
    let viewWithDashedBorder = DashedBorderView(color: .red, width: 2)
    view.addSubview(viewWithDashedBorder)
    

提交回复
热议问题