如何创建图像中的UIView?

时间:2019-01-27 12:58:03

标签: ios swift xcode

我想在UIView中添加曲线,如图所示。 如何创建这样的uiview?

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用UIBezierPath并使用addCurve方法创建视图。

//1. Create this new Class 
class ComplexView: UIView {

    var path: UIBezierPath!

    override init(frame: CGRect) {
        super.init(frame: frame)

        self.alpha = 0.3
        complexShape()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func draw(_ rect: CGRect) {
        // Specify the fill color and apply it to the path.
        UIColor.blue.setFill()
        path.fill()

        // Specify a border (stroke) color.
        UIColor.magenta.setStroke()
        path.stroke()
    }


    func complexShape() {
        path = UIBezierPath()
        path.move(to: CGPoint(x: 0.0, y: 0.0))

        path.addCurve(to: CGPoint(x: 0, y: self.frame.size.height),
                      controlPoint1: CGPoint(x: 50.0, y: 25.0),
                      controlPoint2: CGPoint(x: 50.0, y: self.frame.size.height - 25.0))

        path.close()

        let shapeLayer = CAShapeLayer()
        shapeLayer.path = path.cgPath

        self.backgroundColor = UIColor.orange
        self.layer.mask = shapeLayer
    }
}

在您的ViewController中,调用此视图并将此视图添加到主视图中。

//2. In you Viewcontoller add ComplexView
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        let width: CGFloat = 100.0
        let height: CGFloat = 500.0

        let complexView = ComplexView(frame: CGRect(x: 0,
                                              y: self.view.frame.size.height/2 - height/2,
                                              width: width,
                                              height: height))

        self.view.addSubview(complexView)
    }

您需要使用addCurve方法来获得所需的形状。