我有一个垂直的UIStackView,其中多个UIButton堆叠在一起。我希望视图的底部有圆角。
所以,我有这个:
每个彩色条都是UIButton,我希望底部(绿色按钮)有圆角。我尝试设置UIStackView的角半径,但在运行时记录错误,因为堆栈视图只是一个转换视图,因此转角半径设置无效。接下来,我尝试了一个我在SO上找到的解决方案:
extension UIView {
/**
Rounds the given set of corners to the specified radius
- parameter corners: Corners to round
- parameter radius: Radius to round to
*/
func round(corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.CGPath
self.layer.mask = mask
}
}
然后我打电话给:
greenButton.round([.BottomLeft, .BottomRight], radius: 10.0)
哪个有效,就像圆角一样,但它改变了底部按钮的宽度。我猜它与应用蒙版重绘视图并且以某种方式混淆了堆栈的属性这一事实有关?
这就是我得到的。应填充带有红色箭头的空间。 UIStackView分布属性设置为Fill,我尝试在绿色按钮上设置宽度约束以始终将相等宽度与堆栈视图匹配,但仍然没有成功。
我被困了,任何帮助都会受到赞赏。感谢。