UIBezierPath:byRoundingCorners:不起作用
Posted
技术标签:
【中文标题】UIBezierPath:byRoundingCorners:不起作用【英文标题】:UIBezierPath: byRoundingCorners: doesn't work 【发布时间】:2015-08-10 12:02:46 【问题描述】:我正在尝试将按钮的两个角变为圆形。这是我正在使用的代码。
let bezierSelectAllPath = UIBezierPath(roundedRect: selectAllButton.bounds, byRoundingCorners: UIRectCorner.BottomRight.union(UIRectCorner.TopRight), cornerRadii: CGSizeMake(4.0, 4.0))
let maskSelectLayer = CAShapeLayer()
maskSelectLayer.frame = selectAllButton.bounds
maskSelectLayer.path = bezierSelectAllPath.CGPath
selectAllButton.layer.mask = maskSelectLayer
我不明白为什么这不起作用。谁能给我解释一下?
【问题讨论】:
【参考方案1】:最后这样做
[selectAllButton.layer addSublayer:maskSelectLayer];
而不是
selectAllButton.layer.mask = maskSelectLayer
您可以像这样设置按钮的角:
UIBezierPath * bezierSelectAllPath = [UIBezierPath bezierPathWithRoundedRect:button.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(4.0, 4.0)];
【讨论】:
如果我添加一个子层,我会得到一些奇怪的结果。按钮超出屏幕。我已经在做你在工会发布的第二件事了。出于某种原因,如果我使用 | 编译器会抛出错误运算符。以上是关于UIBezierPath:byRoundingCorners:不起作用的主要内容,如果未能解决你的问题,请参考以下文章