2016-08-01 89 views
1

在這裏,我得到了在屏幕設計素描:iOS版SDK:刀尖圓弧半徑顯示不正確

enter image description here

有兩個按鈕。現在我在Xcode設計這樣的按鈕,我設置的UIButton的圓角半徑是這樣的:

layer.cornerRadius = 30 
clipsToBounds = true 

但作爲結果我有一些奇怪的事情:

enter image description here

你可以看到在某個角落中心如果按鈕的左側和右側。我能做什麼?

+0

使用'layer.cornerRadius = yourbuttonwidth/2' –

+0

@ Anbu.Karthik:它必須是'layer.cornerRadius = yourbuttonheight/2'? –

回答

4

要在這樣的按鈕上生成圓角,如果將cornerRadius的值設置爲30,則假定按鈕的高度設置爲60

這可能並非在所有設備上都是如此,具體取決於您如何處理佈局。看到你的圖像,它看起來像按鈕比你設計的稍低。

兩個選項:

  1. 使用自動佈局和您的按鈕添加「固定高度」的約束,具有60的值,所以你的按鈕總是有60分的高度。
  2. 執行UIButton子類,並在layoutSubviews方法中,將cornerRadius設置爲按鈕的bounds的高度的一半。這樣,只要系統重新繪製按鈕,角落半徑將被適當更新。
0

現在,您的按鈕的圖層大小不同於Sketch。
layoutSubviews將角落半徑設置爲層高的一半。

override func layoutSubviews() { 
    super.layoutSubviews() 
    layer.cornerRadius = layer.bounds.height/2.0 
} 
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()) 
1

創建自定義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 
    } 

}