2016-12-20 5 views
1

Я создал собственный подкласс UIButton, поэтому я могу добавить дополнительную метку. Когда эта кнопка находится в UIStackView, дополнительная метка не имеет надлежащего размера. Я попытался программно добавить ограничения к родительской кнопке. Это сработало, но у меня были страницы с нарушениями ограничений (небольшое преувеличение). Если бы я знал, когда кнопке присвоен конечный размер, я могу установить добавленный фрейм меток.Когда размер рамки UIButton окончательно установлен

Когда размер UIButton известен после того, как все готово?

+0

Вы проверить StackView заполнить значение свойства? – Adolfo

+1

Рамка кнопки должна быть известна и может использоваться при вызове layoutSubviews(), это может быть переопределено в вашем пользовательском классе –

+0

Это устанавливается, когда вы добавляете кнопку, которая используется в 'UIView'. Или в 'viewDidLoad' –

ответ

0

В соответствии с моими комментариями выше, рамка кнопки должна быть известна и может быть использована при layoutSubviews() вызывается, это может быть переопределены в пользовательском классе

0

видDidLayoutSubViews - метод, который заканчивается последним. При назначении ограничений автоматической компоновки он дает вам Rect информации. Вы можете использовать это для установки ограничений.

0

Попробуйте это: поместите «print (« frame is: », button.frame,« in method name ») в следующие методы.

viewDidLoad

viewDidLayoutSubviews

viewWillLayoutSubviews

viewWillAppear

viewDidAppear

Вы заметите, что фактический последний кадр кнопки не происходит до последнего вызова viewDidLayoutSubviews, а затем viewDidAppear и вызывает viewDidLayoutSubviews несколько раз до этого, что особенно раздражает, когда вы пытаетесь изменить размер шрифта на этом ярлыке в соответствии с размером ярлыка названия кнопки.

Если представление стека возится с вашим размером, перетащите UIView в представление стека и вставьте в него кнопку, а затем вы можете ограничить эту кнопку.