我想创建一个半圆拱。我已经使用UIBezierPath实现了这一点。但是,我的问题是我的拱门位置不是我想要的位置。
从上图中可以看出,我希望蓝色物体居中,但它向左倾斜。代码如下。
@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
}
答案 0 :(得分:1)
一个明显的问题是您的代码位于viewDidLoad
。那是太快,因为各种观点还没有采用它们的实际尺寸。但是你的代码取决于那个大小,因此不能太早运行。
例如,您的bezier路径取决于logo_backdrop.bounds
,但这些边界正是viewDidLoad
中我们不知道的。