2013-04-18 3 views
0

Я встречаю странное изменение размера.UIView изменяет размер subview

Когда я изменить размер UIView, его высота подвида идет на 0.

Я предположил бы, что следующий код будет только изменить размер вида - это не подтаблицы.

NSLog(@"view = %@", view);  
NSLog(@"subview = %@", subview); 
CGRect frame = view.frame; 
frame.size.height = 50; 
view.frame = frame; 
NSLog(@"view = %@", view); 
NSLog(@"subview = %@", subview); 

Тем не менее, выше, дает следующий результат:

view = <UIView: 0x97e68c0; frame = (0 0; 320 400); autoresize = RM+BM; layer = <CALayer: 0x97e5f10>> 
subview = <UIView: 0xb87f510; frame = (0 0; 320 50); autoresize = W+H; layer = <CALayer: 0xb87f020>> 
view = <UIView: 0x97e68c0; frame = (0 0; 320 50); autoresize = RM+BM; layer = <CALayer: 0x97e5f10>> 
subview = <UIView: 0xb87f510; frame = (0 0; 320 0); autoresize = W+H; layer = <CALayer: 0xb87f020>> 

Любые мысли?

ответ

3

Ключ этот раздел в выходных данных журнала:

autoresize = W+H; 

Это описание логарифм UIView-autoresizingMask. Проверьте документацию here. В принципе, это то, как вы описываете, что должны делать объекты subviews при изменении размера супервизора. Это очень мощно.

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

+0

Это исправлено. Благодаря! Я удалил UIViewAutoresizingFlexibleHeight из маски (через построитель интерфейса), и он работал как шарм. Благодаря! – bbrame

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