如何为UIView的任何特定边添加虚线边框?

时间:2017-09-12 10:44:22

标签: ios swift view border

如何在UIView的某一侧添加虚线边框?已经引用了Dashed line border around UIView链接,但是在为视图的所有边缘提供路径时我有点困惑。所以,这个是我在视图的特定一侧添加直线边框的代码:

 I want this as my output screen

func addRightBorder(with color: UIColor, andWidth borderWidth: CGFloat,view:UIView) {

            let border = UIView()
            border.backgroundColor = color
            border.autoresizingMask = [.flexibleHeight, .flexibleLeftMargin]
            border.frame = CGRect(x: view.frame.size.width - borderWidth, y: 0, width: borderWidth, height: view.frame.size.height)

            //border.addDashedLine(color: UIColor.red)
            border.addDashedLine(color: UIColor.red)
            view.addSubview(border)
        }*

如何实现相同的功能,但是用于虚线/虚线?

1 个答案:

答案 0 :(得分:1)

在我的一个应用中,我也需要一个类似的东西,我创建了UIView扩展。

查看我的代码段

extension UIView {
func removeDashedLine() {
    _ = layer.sublayers?.filter({ $0.name == "DashedTopLine" }).map({ $0.removeFromSuperlayer() })
}

func addDashedLine(_ path: UIBezierPath ,pattern : [NSNumber] = [1, 5], color: UIColor = UIColor.red) {

    self.backgroundColor = UIColor.clear

    let shapeLayer: CAShapeLayer = CAShapeLayer()
    let frameSize = self.frame.size
    let shapeRect = CGRect(x: 0, y: 0, width: frameSize.width, height: frameSize.height)

    shapeLayer.name = "DashedTopLine"
    shapeLayer.frame = shapeRect
    //shapeLayer.position = CGPoint(x: frameSize.width / 2, y: frameSize.height / 2)
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.strokeColor = color.cgColor
    shapeLayer.lineWidth = 1
    shapeLayer.lineJoin = kCALineJoinRound
    shapeLayer.lineDashPattern = pattern

    shapeLayer.path = nil
    shapeLayer.path = path.cgPath
    self.layer.insertSublayer(shapeLayer, at: 0)

}
}

它可能不会完全符合您的要求,但可以帮助您