2012-04-17 4 views
1

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

CGAffineTransform transform = CGAffineTransformIdentity; 

switch ([[UIApplication sharedApplication] statusBarOrientation]) 
{ 

    case UIInterfaceOrientationPortrait: 
     transform = CGAffineTransformMakeRotation(M_PI_2); 
     break; 

    default: 
     break; 
} 

[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortrait]; 

[UIView animateWithDuration:0.2f animations:^ { 

    [self.navigationController.view setTransform:transform]; 

}]; 

[self.view setFrame:CGRectMake(0, 0, 320, 480)]; 
[self.view setNeedsLayout]; 
+0

Навигационная панель автоматически повернута. когда ориентация меняется. И передать ur Эта строка // [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; ... попробуйте – Ayaz

+0

@Ayaz Спасибо, но это решение не работает в моем коде, его остановка моя автоматическая ориентация симулятора. Я просто хочу вращать навигационную панель, поворачивая мое представление, уже вращаясь, если у вас есть решение, помогите мне, приятель, спасибо большое – vishiphone

ответ

1

Этот код не является преступлением, очень любопытным. Я не уверен, что вы пытаетесь сделать. Какую проблему ты пытаешься решить? Игра с CGAffineTransform может определенно генерировать странные результаты, как то, что вы описываете, если вы не очень осторожны.

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Support all orientations on iPad 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return YES; 

    // otherwise, for iPhone, support portrait and landscape left and right 

    return ((interfaceOrientation == UIInterfaceOrientationPortrait) || 
     (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
     (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
} 

Но если я не понял, что вы пытаетесь сделать, то, что вы пытаетесь сделать что-то более сложное, чем просто поддерживает как пейзаж и портрет ориентации, дайте мне знать.


Я извиняюсь, потому что я не помню, где я первоначально получил этот код (но это упоминается в SO here), но может быть использована, чтобы заставить альбомной ориентации следующее:

Во-первых, убедитесь, что ваш shouldAutoRotateToInterfaceOrientation следует читать следующим образом:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
     (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) 
     return YES; 
    else 
     return NO; 
} 

во-вторых, в viewDidLoad, добавьте следующий код:

if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) 
{ 
    UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 
    UIView *view = [window.subviews objectAtIndex:0]; 
    [view removeFromSuperview]; 
    [window addSubview:view]; 
} 

По какой-то причине удаление представления из главного окна, а затем повторное добавление его заставляет его запрашивать запросAutorotateToInterfaceOrientation и правильно установить ориентацию. Учитывая, что это не одобренный Apple подход, возможно, следует воздержаться от его использования, но он работает для меня. Ваш пробег может отличаться. Но that SO discussion также относится и к другим методам.

+0

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

Смежные вопросы