Пытаясь сделать UIButton кругом - PullRequest
0 голосов
/ 22 февраля 2020

Я сейчас пытаюсь сделать кнопку в форме круга, и вот мой код:

  var raffleButton:UIButton = {
    var button = UIButton()
    button.translatesAutoresizingMaskIntoConstraints = false
    button.titleLabel?.font = UIFont(name: "AvenirNext-Bold", size: 19)
    button.setTitle("Tap To Enter Raffle!", for: .normal)
    button.setTitleColor(UIColor.red, for: .normal)
    button.backgroundColor = .white
    button.layer.masksToBounds = true

    button.frame = CGRect(x: 1600, y: 160, width: 160, height: 160)
    button.layer.cornerRadius = button.frame.width/2

    return button
}()

Однако, когда я запускаю код, кнопка искажается и выглядит следующим образом ... круг и футбол подобно. enter image description here

Есть ли какая-то причина, по которой кнопка выглядит, а не круг?

Ответы [ 3 ]

1 голос
/ 22 февраля 2020

Поскольку вы установили button.translatesAutoresizingMaskIntoConstraints = false, этот код не будет работать button.frame = CGRect(x: 1600, y: 160, width: 160, height: 160). Размер кнопки будет изменен в процессе макета (больше не будет (160, 160)). Следовательно, это не круг.

Вы можете изменить button.translatesAutoresizingMaskIntoConstraints = false или попробовать установить cornerRadius кнопки в методе viewDidLayoutSubviews.

1 голос
/ 22 февраля 2020

Высота вашей кнопки равна ширине кнопки, а затем установите этот код ..

anyButton.backgroundColor = .clear

anyButton.layer.cornerRadius = anyButton.frame.height / 2

anyButton.layer.borderWidth = 1

anyButton.layer.borderColor = UIColor.black.cgColor
1 голос
/ 22 февраля 2020

Вы не уверены, используете ли вы автоматическое расположение или нет.

Вы установили translatesAutoresizingMaskIntoConstraints на false, но затем пытаетесь манипулировать кадром.

Если вы добавите ограничения, чтобы установить ширину и высоту, вы получите результат, более близкий к тому, что вы хотите, но вам все равно придется настроить метку или шрифт, чтобы он соответствовал:

var raffleButton:UIButton = {
    var button = UIButton()
    button.translatesAutoresizingMaskIntoConstraints = false
    button.titleLabel?.font = UIFont(name: "AvenirNext-Bold", size: 19)
    button.setTitle("Tap To Enter Raffle!!", for: .normal)
    button.setTitleColor(UIColor.red, for: .normal)
    button.backgroundColor = .white
    button.layer.masksToBounds = true

    button.heightAnchor.constraint(equalToConstant: 160).isActive = true
    button.widthAnchor.constraint(equalToConstant: 160).isActive = true
    button.layer.cornerRadius = 80

    return button
}()

enter image description here

...