Изменение размеров контроллера навигации работает только в портретах? - PullRequest
0 голосов
/ 19 июля 2011

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

вот что происходит, когда приложение запускается в портретной ориентации здесь

теперь, когда приложение запускается либо в горизонтальной плоскости вправо / влево, либо в перевернутом портретном положении, это происходит здесь

Я не знаю, есть ли у кого-нибудь решение для этой проблемы, поскольку, поскольку у него есть пространство сверху, всегда есть промежуток, когда происходит вращение.

Для большей справки я включил часть своего кода.

-(void)viewDidLoad{
SongsViewController *viewController = [[SongsViewController alloc] initWithNibName:@"SongsViewController" bundle:nil];

dataView = [[UINavigationController alloc] initWithRootViewController:viewController];
[dataView setDelegate:self];
dataView.view.frame = CGRectMake(192, 85, 768 - 192, 1004 - 85 - 44);
[dataView.view setAutoresizesSubviews:YES];
[dataView.view setAutoresizingMask:UIViewAutoresizingNone];

[self.view addSubview:dataView.view];
[viewController release];
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration{

if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation ==       UIInterfaceOrientationPortraitUpsideDown) {

    dataView.view.frame = CGRectMake(192, 85, 768 - 192, 1004 - 85 - 44);

}

else {

    dataView.view.frame = CGRectMake(192, 85, 1024 - 192, 748 - 85 - 44);

}

}

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Во-первых, в идеале не следует добавлять представление ViewController как подпредставление к представлению другого viewController. Atleast в iOS <= 4.3. </p>

Что вы должны сделать, это запустить ваше приложение с представлением ViewController, встроенным в навигационный контроллер. Я хочу сказать, попробуйте сделать контроллер корневого представления вашего приложения в качестве навигационного контроллера. Или, если у вас есть tabBar в качестве основы вашего приложения, попробуйте сделать viewController каждой вкладки как navigationController.

Далее используйте свойство viewController:

self.navigationController

Для дальнейшего перемещения / извлечения viewControllers в него или из него.

Вам не нужно выполнять эти настройки кадра в методах делегата поворота, все, что вам нужно сделать, это правильно установить маски автоматического изменения размера для компонентов вида (подпредставлений) вашего SongsViewController, а все остальное необходимо позаботиться автоматически.

0 голосов
/ 03 августа 2011

Использование другой функции поворота, казалось, решило проблему.Я использовал:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration
...