Я разрабатываю приложение для iPad, которое должно быть ограничено ландшафтным режимом. У меня есть контроллер корневого представления и контроллер подсмотра. Я добавляю контроллер sub view в контроллер корневого представления и устанавливаю их кадрами в 1024x768. Я ограничил приложение в ландшафтном режиме в info.plist и, на мой взгляд, метод управления shouldAutorotateToInterfaceOrientation:interfaceOrientation
. Однако размеры для subview получают сброс до 768x1024 когда-то до метода viewDidAppear
, что делает его , как если бы он был в портретном режиме.Как по умолчанию контроллер корневого представления для пейзажа с размером 1024x768
странно часть если установить раму для подвид, так что ширина или высота являются чем-то кроме размеров экрана, например: CGRectMake (0, 0, 1024, 767) или CGRectMake (0 , 0, 1024, 769), он не получает сброс, и отображает то, что выглядит как ландшафтный режим.
Так что мой вопрос в том, что вызывает подобное поведение. И что лучший способ просто по умолчанию все представления в ландшафтном режиме
Вот мой взгляд корневой контроллер:
// INTERFACE
#import <UIKit/UIKit.h>
#import "ScrapViewController.h"
@interface ViewController : UIViewController
{
ScrapViewController *svc;
}
@end
// IMPLEMENTATION
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
self.view.frame = CGRectMake(0, 0, 1024, 768);
svc = [[SubViewController alloc] init];
svc.view.backgroundColor = [UIColor redColor];
svc.view.frame = CGRectMake(0, 0, 1024, 768);
[self.view addSubview:svc.view];
NSLog(@"viewDidLoad rvc %f,%f", self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"viewDidLoad svc %f,%f", svc.view.frame.size.width, svc.view.frame.size.height);
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
@end
Вот мой суб контроллер
// INTERFACE
#import <UIKit/UIKit.h>
@interface SubViewController : UIViewController
@end
// IMPLEMENTATION
@implementation SubViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
@end
просто зарегистрируйте ошибку. Это должно быть одно. –