Каково идеальное место для установки краевых вставок UIButton, когда его подпредставление UITableViewCell или подпредставление любого другого представления - PullRequest
0 голосов
/ 07 мая 2018

У меня есть сценарий, в котором мне нужно изменить UIEdgeInsets для UIButton, который добавлен в UITableViewCell, я установил его в layoutSubviews, но он вызывается несколько раз, он также работает с init, но я не уверен, что это действительно место потому что это будет вызвано только один раз.

override func layoutSubviews() {
        super.layoutSubviews()
        if imageView != nil {
            titleEdgeInsets = UIEdgeInsets(top: 52, left: -10, bottom: 0, right:-10)
        }
    }

Может кто-нибудь сказать мне, какое из них идеальное место и почему?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

awakeFromNib будет вызываться при загрузке новой ячейки из XIB или раскадровки , но не тогда, когда ячейка используется повторно. Но во время пробуждения от Nib макеты кадров не отображаются. UIEdgeInsets не будет зависеть от кадра, поэтому я предпочитаю вызывать его в awakeFromNib, а не в layoutSubviews

layoutSubviews вы получите правильную рамку, поэтому используйте ее только со стильными, которые нуждаются в правильной рамке, такой как угловой радиус

0 голосов
/ 07 мая 2018

Используйте awakeFromNib(), если вы используете xib.

Вызывается один раз, и это из документации на awakeFromNib():

Как правило, вы реализуете awakeFromNib для объектов, которые требуют дополнительной настройки, которую нельзя выполнить во время разработки. Например, вы можете использовать этот метод для настройки конфигурации по умолчанию любых элементов управления в соответствии с предпочтениями пользователя или значениями в других элементах управления. Вы также можете использовать его для восстановления отдельных элементов управления до какого-либо предыдущего состояния вашего приложения.

Или, если вы не используете xib, просто используйте init, потому что он вызывался один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...