Как изменить угол радиуса кнопки из раскадровки с созданным настраиваемым классом IBDesignable

Приведенный ниже класс работает нормально

@IBDesignable class iButton : UIButton {

@IBInspectable var cornerRadius : CGFloat = 0.0{
    didSet{
        layer.cornerRadius = cornerRadius
    }
}}

Но вопрос в том, когда я устанавливаю значение cornerRadius 35 в Attribute Inspector для кнопки с размером (ширина: 70, высота 70). Я получаю закругленную кнопку на раскадровке, но при запуске на симуляторе она не круглая, а скругленный прямоугольник.

Мое представление дизайна на xCode - это iPhone-SE и смоделировано на симуляторе iPhone-7-plus.

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

Проверьте это изображение на предмет дизайна xcode и смоделированного экрана устройства

Инспектор размера для автоматического изменения размера

Насколько мне известно, радиус угла должен составлять половину ширины. И когда размер кнопки изменяется с помощью автоматического изменения размера, почему бы не изменить размер радиуса угла. Как я могу это исправить?

Заранее спасибо.


person Hurdler    schedule 19.07.2017    source источник
comment
задайте ограничения кнопки, а затем используйте это вместо button.layer.cornerRadius = button.frame.width/2   -  person DatForis    schedule 19.07.2017
comment
Для круглых кнопок это было бы полезно, но не для всех случаев @DatForis   -  person Hurdler    schedule 20.07.2017


Ответы (2)


import UIKit

@IBDesignable 
class RoundedCornerButton: UIButton {

    override func drawRect(rect: CGRect) {
        self.clipsToBounds = true
    }

    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            self.layer.cornerRadius = cornerRadius
        }
    }
}

или вы можете проверить эту ссылку по этой ссылке для получения дополнительной информации

https://www.youtube.com/watch?v=JQ5i2YKwvJ8

person Subhojit Mandal    schedule 20.07.2017

Спасибо, я получил ответ.

Нам также нужно масштабировать угол радиуса.

layer.cornerRadius = cornerRadius * (UIScreen.main.bounds.width/320.0) //320.0 be my width of the screen that i designed on storyboard
person Hurdler    schedule 20.07.2017