视图在横向模式下的位置和大小错误

时间:2010-07-20 01:11:46

标签: iphone objective-c cocoa-touch ipad uikit

我正在为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 ......

干杯!

2 个答案:

答案 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 ...

,对我来说这看起来很奇怪