В моем приложении я добавляю представление, загруженное из XIB с UIViewAutosizingMaskFlexibleWidth
, и получаю желаемый результат только в одном из двух случаев:
- Добавление подпредставления в портретной ориентации и поворот в альбомную ориентацию корректно изменяет размер подпредставления;
- Добавление подпредставления в альбомной ориентации не приводит к изменению ширины подпредставления так же, как при вращении;
Вот код:
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.
Самое странное, что я использую ту же технику в суперпредставлении и работал.