使用Swift 2.3中的Bezier Path和Storyboarding绘制一个只有两个圆角的矩形

时间:2017-03-03 23:25:19

标签: ios swift uibezierpath

我有NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs个5个单元,如下所述。目的是让Table View具有白色填充并且仅topRoundedBorderCellTopLeft边框呈圆形,然后可以根据需要灵活地添加白色填充和方形角对于所需数量的选项,最后TopRight只有bottomRoundedCornerCellBottomLeft四舍五入的白色填充。创建一个带圆角的长白框的错觉,适合与一组相关的所有选项。 如下所示。

故事板细胞分解:

enter image description here

当我运行应用时:

enter image description here

但是,正如您在第二张图片中看到的那样,只有BottomRight边框被舍入,其余边框保持平方。

我在2个单独的TopLeft类别中使用Bezier路径roundedRect方法,我通过UIView分配给相应的views

热门边框视图:

Storyboard

底部圆角边框视图:

class TopRectangleRoundedCornersView: UIView {

    override func awakeFromNib() {

        let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [UIRectCorner.TopLeft , UIRectCorner.TopRight], cornerRadii: CGSize(width:10.0, height:10.0))
        let mask = CAShapeLayer()
        mask.path = path.CGPath
        self.layer.mask = mask
        self.layer.backgroundColor = UIColor.whiteColor().CGColor //white fill
    }

}

1 个答案:

答案 0 :(得分:1)

您需要在调整视图大小时调整路径。请参阅问题Is there a UIView resize event?中的答案以获得一些好的建议。

我最喜欢的是建议在视图的bounds属性中添加didSet()。