带有约束的Swift圆形按钮

时间:2015-09-18 14:52:23

标签: ios iphone swift ios9

在iOS 9 iPhone应用程序中,我有一个按钮,我想要圆角,所以它是完全圆润的。我在Storyboard中添加了一个按钮,并添加了两个约束来水平和垂直居中。这一切都有效,直到我添加几行代码以将圆角应用于按钮。这是我的故事板:http://i.imgur.com/Nd3AnEl.png然后我将以下代码行添加到我的视图控制器:

startButton.backgroundColor = UIColor.clearColor()
startButton.layer.cornerRadius = 75
startButton.layer.borderWidth = 2
startButton.layer.borderColor = UIColor.whiteColor().CGColor

当我运行这是iPhone 5s模拟器时,边框乱了,如下所示:http://i.imgur.com/m5akxO4.png 我已经尝试让按钮完全圆润几天,但没有结果。我该怎么办?

3 个答案:

答案 0 :(得分:2)

似乎cornerRadius大于它的高度。在视图控制器中尝试以下代码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    startButton.backgroundColor = UIColor.clearColor()
    startButton.layer.cornerRadius = startButton.bounds.size.height / 2
    startButton.layer.borderWidth = 2
    startButton.layer.borderColor = UIColor.whiteColor().CGColor
}

答案 1 :(得分:2)

如何以编程方式创建它:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let button = UIButton(type: .Custom)
    button.frame = CGRectMake(160, 100, 50, 50) // (x, y, width, height)
    button.backgroundColor = UIColor.redColor()
    button.layer.cornerRadius = 0.5 * button.bounds.size.width
    button.layer.borderWidth = 2
    button.layer.borderColor = UIColor.whiteColor().CGColor
    button.setTitle("Hi!", forState: .Normal)

    button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)


    view.addSubview(button)
}

func buttonAction(sender: UIButton!) {
    print("hello!")
}

显然,很多这些自定义都是可选的(例如背景颜色),但只是为了向您展示您仍然可以使用按钮完成您想要的所有操作。

答案 2 :(得分:0)

首先使按钮完全成正方形,然后在角落的宽度或高度的一半处。

例如:



// 200*200 square button
startButton.frame.size = CGSize(width: 200, height: 200)
startButton.backgroundColor = UIColor.clearColor()

// make the corner rounded like circle
startButton.layer.cornerRadius = startButton.frame.size.height/2

startButton.layer.borderWidth = 2
startButton.layer.borderColor = UIColor.whiteColor().CGColor