设置UIBezierPath对象的位置

时间:2017-03-14 02:55:13

标签: ios swift user-interface

我想创建一个半圆拱。我已经使用UIBezierPath实现了这一点。但是,我的问题是我的拱门位置不是我想要的位置。

enter image description here

从上图中可以看出,我希望蓝色物体居中,但它向左倾斜。代码如下。

@IBOutlet weak var logo_backdrop: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    //Setting Login View Background
    let bgColor = UIColor(red: 128, green: 206, blue: 201)
    self.view.backgroundColor = bgColor

    //Setting Logo Backdrop color
    let backdrop = UIColor(red:183, green:227, blue:239)
    logo_backdrop.backgroundColor = backdrop

    //Setting Round Corner for Logo Backdrop
    let maskPath = UIBezierPath(roundedRect: logo_backdrop.bounds,
        byRoundingCorners: [.bottomLeft, .bottomRight],
        cornerRadii: CGSize(width: 100.0, height: 100.0))
    maskPath.move(to: CGPoint(x: view.frame.width, y: 0.0))

    let shape = CAShapeLayer()
    shape.frame = logo_backdrop.bounds
    shape.path = maskPath.cgPath
    logo_backdrop.layer.mask = shape
}

1 个答案:

答案 0 :(得分:1)

一个明显的问题是您的代码位于viewDidLoad。那是太快,因为各种观点还没有采用它们的实际尺寸。但是你的代码取决于那个大小,因此不能太早运行。

例如,您的bezier路径取决于logo_backdrop.bounds,但这些边界正是viewDidLoad中我们不知道的。