對於四捨五入某個角落,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