2016-08-01 91 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 
    } 

}