2015-11-06 2 views
3

Число видов в UIStackView настраивается в соответствии со стеком. Представления инициализируются без фрейма, поскольку они изменяются по размеру в виде стека. Есть ли способ, которым я могу получить размер представлений после того, как они были изменены размером в стеке?Поиск размера представления, скорректированного с помощью UIStackView swift

ответ

3

Размеры доступны после UIStackView.layoutSubviews() отделки. Вы можете создать подкласс UIStackView и переопределить layoutSubviews:

class MyStackView: UIStackView { 
    override func layoutSubviews() { 
     super.layoutSubviews() 
     print("arrangedSubviews now have correct frames") 
     // Post a notification... 
     // Call a method on an outlet... 
     // etc. 
    } 
} 
+0

Это не всегда так, к сожалению. Я столкнулся со многими случаями, когда геометрия уложенных подзонов ** не корректна после 'super.layoutSubviews()'. В моем конкретном случае мне всегда приходилось проверять их в следующем цикле выполнения, что смешно. – LucasTizma

0

Я думаю, что лучший способ получить подвид Компоновка кадра Stackview является использование convert.

yourStackView.convert(viewInsideStackView.frame to: parentView) 

Это вернет 'кадр в сек parentView' s viewInsideStackView системы координат.

Смежные вопросы