Виды имеют неправильную позицию и размер в ландшафтном режиме - PullRequest
2 голосов
/ 20 июля 2010

Я разрабатываю приложение "только в ландшафтном режиме" для iPad.Проблема в том, что мои представления имеют неправильные позиции на экране, и я не могу найти причину ...

Я установил необходимые свойства в Info.plist:

    <key>UIInterfaceOrientation</key>
    <string>UIInterfaceOrientationLandscapeRight</string>

    <key>UISupportedInterfaceOrientations</key>
    <array>
       <string>UIInterfaceOrientationLandscapeLeft</string>
       <string>UIInterfaceOrientationLandscapeRight</string>

У меня есть такая иерархия:

UIWindow -> MainMenuViewController.view -> MyTableviewController.view

В методе AppDelegate application:didFinishLaunchingWithOptions: у меня есть этот код: CGRect rect = [[UIScreen mainScreen]оценки];[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's 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 табличное представление.Но он отображает таблицу с высотой около 350 пикселей и смещен к середине экрана (около 250 пикселей сверху).У вас есть идеи, почему это может быть так смещено?Возможно, я должен установить границы где-то и забыл это сделать?Застрял в этой проблеме в течение нескольких часов.

PS: Без MainMenuViewController положение представления таблицы было в порядке (когда я добавил представление таблицы как subView UIWindow).Но мне нужно разместить другие элементы пользовательского интерфейса на экране, и мне нужен этот MainMenuViewController ...

Cheers!

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Я нашел ответ:

Я добавил это к моему MainMenuViewController методу viewDidLoad:

    UIViewAutoresizing mask = (1 & !UIViewAutoresizingFlexibleTopMargin);
    selectPictureViewController.view.autoresizingMask = mask;

По умолчанию задана авторазмерная маска.

0 голосов
/ 20 июля 2010

Вы устанавливаете границы TableView. Это тоже работает? Я бы попробовал установить кадр. Как это:

selectPictureViewController.view setFrame:CGRectMake(0,0,1024,640)];

Но я не знаю, работает ли это. Мне кажется странным, если вы используете setBounds ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...