2014-09-26 117 views

回答

89

下面是一个例子圆形按钮:

斯威夫特3:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let button = UIButton(type: .custom) 
    button.frame = CGRect(x: 160, y: 100, width: 50, height: 50) 
    button.layer.cornerRadius = 0.5 * button.bounds.size.width 
    button.clipsToBounds = true 
    button.setImage(UIImage(named:"thumbsUp.png"), for: .normal) 
    button.addTarget(self, action: #selector(thumbsUpButtonPressed), for: .touchUpInside) 
    view.addSubview(button) 
} 

func thumbsUpButtonPressed() { 
    print("thumbs up button pressed") 
} 

斯威夫特2.X:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let button = UIButton(type: .Custom) 
    button.frame = CGRect(x: 160, y: 100, width: 50, height: 50) 
    button.layer.cornerRadius = 0.5 * button.bounds.size.width 
    button.clipsToBounds = true 
    button.setImage(UIImage(named:"thumbsUp.png"), forState: .Normal) 
    button.addTarget(self, action: #selector(thumbsUpButtonPressed), forControlEvents: .TouchUpInside) 
    view.addSubview(button) 
} 

func thumbsUpButtonPressed() { 
    print("thumbs up button pressed") 
} 
+3

为了得到这个工作,我不得不添加' button.clipsToBounds = true' – Carl 2016-05-06 17:03:34

+0

有什么办法可以用约束来做到这一点?我没有使用'button.frame = CGRect ...'代码。 – 2017-03-29 19:09:02

+4

@ArchieGertsman,当然。设置宽高比约束(宽度==高度),以便您的按钮是方形的。然后将代码'button.layer.cornerRadius = ...'移到'viewDidLayoutSubviews'的覆盖。你必须在那里做,因为你需要确保* Auto Layout *已经运行。 – vacawama 2017-03-29 19:13:32

相关问题