У меня есть подкласс UIViewController
для обработки моего представления только для ландшафтного приложения. Я бы хотел, чтобы его размер изменился, чтобы автоматически отражать размеры ландшафта, но это не так. Подвид, однако, делает.
Вот код воспроизведения.
@interface MyViewController : UIViewController {
UIView *subview;
}
@implementation MyViewController
- (id)init
{
self = [super init];
if (self) {
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
subview = [[UIView alloc] initWithFrame:self.view.frame];
subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:subview];
}
return self;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
NSLog(@"My view's frame (%f,%f)", self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"Subview's frame (%f,%f)", subview.frame.size.width, subview.frame.size.height);
}
@end
А потом ...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.window.rootViewController = [[MyViewController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
Супер просто. И все же, при загрузке, он регистрирует:
My view's frame (320.000000,480.000000)
Subview's frame (480.000000,320.000000)
Размер подпредставления корректно изменен, но родительский вид по-прежнему имеет портретно-ориентированную рамку.
Как мне изменить размер вида верхнего уровня, чтобы он соответствовал ландшафтному режиму?