Установите размер UIButton для отображения на раскадровке - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть класс кнопок, который динамически изменяет размеры, но в раскадровке ширина и высота неверны.Я хочу, чтобы размер обновлялся в раскадровке.

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

Любая помощь будет принята с благодарностью!Благодарю. Чтобы понять, что я имею в виду, посмотрите на этот скриншот.

@IBDesignable class PrimaryButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)
        shared()
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        shared()
    }

    override  func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        shared()
    }
    func shared() {

        //TODO: add any custom settings here

        self.layer.cornerRadius = 4.0
        self.clipsToBounds = true
        self.layer.backgroundColor = UIColor.blue.cgColor
        self.setTitleColor(#colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0), for: UIControl.State.normal)
        self.contentEdgeInsets = UIEdgeInsets(top: 4, left: 12, bottom: 4, right: 12)
        self.titleLabel?.font = UIFont(name: "AvenirNext-DemiBold", size: 16.0)
        self.sizeToFit()

        //Disabled

        self.setTitleColor(#colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1), for: UIControl.State.disabled)
        setBackgroundColor(UIColor.gray, for: UIControl.State.disabled)

        }


    }

//background color method

extension PrimaryButton {

    private func image(withColor color: UIColor) -> UIImage? {
        let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()

        context?.setFillColor(color.cgColor)
        context?.fill(rect)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image
    }

    func setBackgroundColor(_ color: UIColor, for state: UIControl.State) {
        self.setBackgroundImage(image(withColor: color), for: state)
    }
}

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете добавить ограничение ширины и отметить его как «удалить во время выполнения»

...