我正在为iPad开发“仅限横向模式”应用。 问题是我的观点在屏幕上有错误的位置,我找不到原因......
我在Info.plist中设置了必要的属性:
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
我有这样的层次结构:
UIWindow - &gt; MainMenuViewController.view - &gt; MyTableviewController.view
在AppDelegate的application:didFinishLaunchingWithOptions:
方法中,我有以下代码:
CGRect rect = [[UIScreen mainScreen] bounds];
[window setBounds:rect];
mainMenuController = [[MainMenuViewController alloc] init];
[window addSubview:mainMenuController.view];
[window makeKeyAndVisible];
return YES;
在MyMenuController的viewDidload:
我有:
[super viewDidLoad];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
SelectPictureTableViewController *selectPictureViewController = [[SelectPictureTableViewController alloc] initWithStyle:UITableViewStylePlain];
[selectPictureViewController.view setBounds:CGRectMake(0.0, 128.0, 1024.0, 640.0)];
[self.view addSubview:selectPictureViewController.view];
在SelectPictureTableViewController的initWithStyle:
我写道:
if ((self = [super initWithStyle:style])) {
templatesArray = [[NSMutableArray alloc] init];
tumbnailsInRow = 3;
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.allowsSelection = NO;
}
return self;
在两个ViewControllers中,我都有这个实现:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation != UIInterfaceOrientationPortrait &&
interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
对我来说,它看起来应该显示1024x640表视图。 但它显示高度约350px的tableview并移动到屏幕中间(距离顶部约250px)。 你有什么想法可以如此转移吗? 可能我必须在某处设置界限并忘记这样做? 这个问题被困了几个小时。
PS:没有MainMenuViewController tableview的位置很好(当我将tableview添加为UIWindow的subView时)。但是我需要将其他UI元素放到屏幕上,我需要这个MainMenuViewController ......
干杯!
答案 0 :(得分:1)
我找到了答案:
我已将其添加到我的MainMenuViewController
方法viewDidLoad
:
UIViewAutoresizing mask = (1 & !UIViewAutoresizingFlexibleTopMargin);
selectPictureViewController.view.autoresizingMask = mask;
问题是默认的autoresizingMask。
答案 1 :(得分:0)
您可以设置TableView的边界。这也有用吗?我会尝试设置框架。像这样:
selectPictureViewController.view setFrame:CGRectMake(0,0,1024,640)];
但我不知道它是否有效。如果您使用setBounds
...