2014-09-26 2 views

ответ

89

Вот пример круглая кнопка:

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

Чтобы получить эту работу, я должен был добавить ' button.clipsToBounds = true' – Carl

+0

Есть ли способ сделать это с ограничениями? Я не использую код 'button.frame = CGRect ... '. –

+4

@ArchieGertsman, конечно. Установите ограничение соотношения сторон (ширина == высота), чтобы ваша кнопка была квадратной. Затем переместите код 'button.layer.cornerRadius = ...' для переопределения 'viewDidLayoutSubviews'. Вы должны сделать это там, потому что вам нужно убедиться, что * Auto Layout * запущен. – vacawama

Смежные вопросы