Эти кнопки круглые или узловатые? - PullRequest
0 голосов
/ 07 сентября 2018

Возможно, мои глаза меня обманывают, но после использования этого кода для создания круглых кнопок для цифровой клавиатуры, аналогичной приложению для телефона iPhone:

        for subStack in (mainStackView?.arrangedSubviews)! {

            for thisView in (subStack.subviews) {

                if let button = thisView as? UIButton {


                    button.layer.borderWidth = 2
                    button.layer.borderColor = orangeBorderColor

                    button.frame.size.width = 76
                    button.frame.size.height = 76
                    button.layer.cornerRadius = 0.5 * (button.bounds.size.height)
                    button.layer.masksToBounds = true
//                    button.clipsToBounds = true
                    button.backgroundColor = UIColor.lightGray
                    button.titleLabel?.font = button.titleLabel?.font.withSize(30)
                    button.setTitleColor(.black, for: .normal)
                }
            }
        }

Я получаю вещи, которые выглядят так:

enter image description here

Я пытался использовать clipsToBounds, maskToBounds, я использовал кнопку .frame и ее свойство .bounds в качестве основы для арифметики, но они все еще кажутся мне не узловатыми, а округлыми.

Может кто-нибудь предложить предложение по их сглаживанию?

Спасибо!

Редактировать

Когда я добавлю это:

                print(button.frame.size as Any)
                print(button.bounds.size as Any)
                print(button.layer.cornerRadius as Any)

Я получаю это в консоли:

(76.0, 76.0)
(76.0, 76.0)
38.0

1 Ответ

0 голосов
/ 07 сентября 2018

Вы не можете напрямую устанавливать кадры представлений, которые выложены с использованием ограничений, а упорядоченные подпредставления стекового представления должны быть размечены с использованием ограничений. Это твоя проблема. Автоматическая разметка (позднее) переопределяет вашу попытку установить рамку, поэтому ваш угловой радиус не соответствует размеру ваших кнопок.

Создайте подкласс UIButton. В вашем подклассе переопределите layoutSubviews для установки кнопки cornerRadius (и не забудьте позвонить super.layoutSubviews).

...