UIBezierPath不在TopRight角落和BottomRight角落工作

时间:2016-02-28 17:23:01

标签: swift uibezierpath

我想围绕我的右角,但只适用于左角

EntityRepository

3 个答案:

答案 0 :(得分:29)

问题是,在为当前设备调整视图范围之前,您已获得该视图的界限。它比屏幕上显示的要大,所以圆角矩形的右侧偏离屏幕的右侧。

您需要创建path并在视图调整大小后设置maskLayer.path,这意味着在运行循环的布局阶段期间或之后。因此要么对视图进行子类化,要么在视图的layoutSubviews方法中进行,要么在视图控制器的viewDidLayoutSubviews方法中进行。

答案 1 :(得分:16)

Swift 3

对我有用!

override func layoutSubviews() {
    super.layoutSubviews()
    DispatchQueue.main.async {
       self.containerView.roundCorners(corners: [.topRight,.topLeft], radius: 25)
       self.containerView.layer.masksToBounds = true
    }
    self.layoutIfNeeded()
}

您可以在此处查看“roundCorners”方法:https://stackoverflow.com/a/41217863/3687902

答案 2 :(得分:1)

如果您尝试设置在Storyboard OR Xib上设计的View的RoundingCorners,请将角落和MaskLayer.path设置为以下方法。

override func viewDidLayoutSubviews() {
// here you can write the code...
    }