Авторазмер не работает при загрузке из XIB после вращения - PullRequest
1 голос
/ 07 декабря 2010

В моем приложении я добавляю представление, загруженное из XIB с UIViewAutosizingMaskFlexibleWidth, и получаю желаемый результат только в одном из двух случаев:

  1. Добавление подпредставления в портретной ориентации и поворот в альбомную ориентацию корректно изменяет размер подпредставления;
  2. Добавление подпредставления в альбомной ориентации не приводит к изменению ширины подпредставления так же, как при вращении;

Вот код:

viewMenuList = [[MenuListController alloc] initWithNibName:@"MenuListController" bundle:[NSBundle mainBundle]];
viewMenuList.view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
self.view.autoresizesSubviews = YES;
[self.view addSubview:viewMenuList.view];
[self.view sendSubviewToBack:viewMenuList.view];
[viewMenuList.view setNeedsLayout];
[viewMenuList.view setNeedsDisplay];
NSLog(@"frame do menu links view %f, %f, %f, %f", self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"frame do menu list view %f, %f, %f, %f", viewMenuList.view.frame.origin.x, viewMenuList.view.frame.origin.y, viewMenuList.view.frame.size.width, viewMenuList.view.frame.size.height);

Вывод в консоли:

2010-12-07 16:34:22.552 SlideShow_iPad[19352:207] frame do menu links view 0.000000, 0.000000, 1030.000000, 111.000000
2010-12-07 16:34:22.596 SlideShow_iPad[19352:207] frame do menu list view 0.000000, 0.000000, 768.000000, 109.000000

Последняя строка должна отображать ширину 1030, не так ли? После поворота в книжную ориентацию и возврата в альбомную ориентацию она изменяется до 1030.

Самое странное, что я использую ту же технику в суперпредставлении и работал.

1 Ответ

0 голосов
/ 08 декабря 2010

Вы не должны смешивать и Interface Builder, и код Objective C для обработки изменения размера.Удалите autoresizingMask и autoresizesSubviews из кода и сделайте оба только в Интерфейсном Разработчике.Возможно, у вас есть конфликтующие определения.

autoresizingMark: command-3 для просмотра свойств размера.Отметьте часть «Авторазмер», анимация показывает, как будет выглядеть ваше изменение размера.

autoresizesSubviews: command-1 для просмотра свойств чертежа.Для этого есть флажок.

...