2014-09-26 114 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

相關問題