在這裏,我得到了在屏幕設計素描:iOS版SDK:刀尖圓弧半徑顯示不正確
有兩個按鈕。現在我在Xcode設計這樣的按鈕,我設置的UIButton的圓角半徑是這樣的:
layer.cornerRadius = 30
clipsToBounds = true
但作爲結果我有一些奇怪的事情:
你可以看到在某個角落中心如果按鈕的左側和右側。我能做什麼?
在這裏,我得到了在屏幕設計素描:iOS版SDK:刀尖圓弧半徑顯示不正確
有兩個按鈕。現在我在Xcode設計這樣的按鈕,我設置的UIButton的圓角半徑是這樣的:
layer.cornerRadius = 30
clipsToBounds = true
但作爲結果我有一些奇怪的事情:
你可以看到在某個角落中心如果按鈕的左側和右側。我能做什麼?
要在這樣的按鈕上生成圓角,如果將cornerRadius
的值設置爲30
,則假定按鈕的高度設置爲60
。
這可能並非在所有設備上都是如此,具體取決於您如何處理佈局。看到你的圖像,它看起來像按鈕比你設計的稍低。
兩個選項:
60
的值,所以你的按鈕總是有60分的高度。UIButton
子類,並在layoutSubviews
方法中,將cornerRadius
設置爲按鈕的bounds
的高度的一半。這樣,只要系統重新繪製按鈕,角落半徑將被適當更新。現在,您的按鈕的圖層大小不同於Sketch。
layoutSubviews
將角落半徑設置爲層高的一半。
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = layer.bounds.height/2.0
}
,而不是在每個控制器編寫代碼,如果你要使用多次,你可以擴展用於製作圓形按鈕,意見,以及通過以下code.In,你可以通過cornerRadius,邊框寬度和的UIColor。
import UIKit
extension UIView
{
func makeCircular(cornerRadius: CGFloat, borderWidth: CGFloat, borderColor: UIColor)
{
self.layer.cornerRadius = cornerRadius * self.bounds.size.width
self.layer.borderColor = borderColor.CGColor as CGColorRef
self.layer.borderWidth = borderWidth
self.clipsToBounds = true
}
}
您可以簡單地按照您的要求傳遞值。
用法:
snapButton.makeCircular(0.5, borderWidth: 1.0, borderColor: UIColor.clearColor())
創建自定義UIButton
類,並設置所有你想要的按鈕的那類,所以你並不需要把更多的代碼在每一個UIViewController
類。
自定義UIButton
類應該是這樣的:
import UIKit
class RoundCornerButton: UIButton {
override func drawRect(rect: CGRect) {
// Drawing code
self.clipsToBounds = true
self.layer.cornerRadius = self.frame.size.width/2
}
}
使用'layer.cornerRadius = yourbuttonwidth/2' –
@ Anbu.Karthik:它必須是'layer.cornerRadius = yourbuttonheight/2'? –