2014-09-26 25 views

risposta

89

Ecco un pulsante rotondo esempio:

Swift 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") 
} 

Swift 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

Per arrivare a questo lavoro ho dovuto aggiungere ' button.clipsToBounds = true' – Carl

+0

C'è un modo per farlo con i vincoli? Non sto usando il codice 'button.frame = CGRect ...'. –

+4

@ArchieGertsman, certo. Imposta un vincolo di proporzioni (larghezza == altezza) in modo che il tuo pulsante sia quadrato. Quindi sposta il codice 'button.layer.cornerRadius = ...' su un override di 'viewDidLayoutSubviews'. Devi farlo lì perché devi assicurarti che * Auto Layout * sia eseguito. – vacawama

Problemi correlati