对于四舍五入某个角落,SO上有很多答案。我遇到的问题是我试图将按钮角落对齐下方视图的圆角。请参阅图片。黄色的视图四角四舍五入。我试图让右上角的关闭按钮与黄色视图的圆角对齐。我使用了下面的Swift 3代码,但按钮保持正方形。任何人都可以请指出缺少什么?按钮的圆角半径与下方的视图对齐
viewRaised是黄色的视图。
非常感谢!
let path = UIBezierPath(roundedRect: btnCancel.layer.bounds, byRoundingCorners:[.topRight, .bottomLeft], cornerRadii: CGSize(width: 10, height: 10))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
btnCancel.layer.mask = maskLayer
btnCancel.layer.masksToBounds = true
self.viewRaised.layer.cornerRadius = 10
self.viewRaised.layer.masksToBounds = false
self.viewRaised.layer.shadowOffset = CGSize(width: 5, height: 10);
self.viewRaised.layer.shadowRadius = 10;
self.viewRaised.layer.shadowOpacity = 0.5;
UPDATE:
有趣的是,同样的代码似乎是工作,但仅适用于左上角。看到第二个图像。
self.viewRaised.layer.cornerRadius = 10
self.viewRaised.layer.masksToBounds = false
self.viewRaised.layer.shadowOffset = CGSize(width: 5, height: 10);
self.viewRaised.layer.shadowRadius = 10;
self.viewRaised.layer.shadowOpacity = 0.5;
let path = UIBezierPath(roundedRect: btnCancel.layer.bounds, byRoundingCorners:[.allCorners], cornerRadii: CGSize(width: 10, height: 10))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
btnCancel.layer.mask = maskLayer
这很令人困惑。我使用的XCode 8.0版测试版6(8S201h)
你尝试夹到子视图? –
如果该按钮是黄色视图的子视图,则应该按照它自己的方式工作。你不应该做任何事情。 –
@MarcoSantarossa如果OP设置了“图层蒙版”,他们不需要启用“clipsToBounds”。此外,@尼基塔,将该按钮设置为其“图层蒙版”的“子视图”会导致崩溃。 – ZGski