Почему UIButton изменяет размер при доступе к свойству titleLabel?

Я пытаюсь настроить размер кнопки (это внутренний размер + немного больше), чтобы нарисовать собственный фон. Тем не менее, каждый раз, когда я получаю доступ к self.titleLabel внутри кнопки, размер и позиция переходят к размеру раскадровки. Мне не нужно ничего делать с ярлыком, чтобы воспроизвести это, просто извлеките его из кнопки.

Я поставил код регистрации на всем протяжении своей кнопки и контроллера просмотра, чтобы найти, где это происходит. Это происходит не из ретрансляции из подзонов или любого другого уведомления, которое я вижу, чтобы попасть в контроллер представления. Линия перед доступом к titleLabel, позиция и размер являются правильными. Линия после, она вернулась к позиции раскадровки. Комментирование доступа предотвращает привязку размера / позиции. Может ли кто-нибудь сказать мне, где и почему это происходит?

У меня нет ограничений (я могу сказать), но я борюсь с авто-макетом здесь? Должен ли я делать это иначе, как составление элементов управления или что-то еще?

Что-то подобное (или то же?) Было задано ранее, когда UIButton изменил заголовок, похоже, изменил его фрейм, а UIButton titleLabel изменился на печать? , но оба остались без ответа или объяснены просто «может быть, ошибка».

Если в проекте включена автоматическая компоновка, тогда ДА, вы боретесь с автоматической компоновкой. У вас есть два варианта: либо подкласс UIButton, чтобы вы могли переопределить расчет собственного размера, либо изменить ограничения, чтобы внутренний размер не использовался в каких-либо ограничениях. Если вы сделаете последнее, то вы, вероятно, захотите создать IBOutlet для ограничения ширины, чтобы вы могли при необходимости изменить свойство constant .

Это не ошибка, это следствие автоматической компоновки. При использовании автоматической компоновки вы не должны устанавливать какие-либо фреймы. Вместо этого вы должны изменить размер или положение, изменив ограничения. Что происходит, так это то, что всякий раз, когда представление нужно перерисовать, кадр возвращается к кадру, который определяется ограничениями.

Давайте будем гением компьютера.