2010-11-25 2 views
0

У меня есть подъярус в навигационном контроллере, когда симулятор ipad поворачивается, чтобы быть портретным или альбомным, основной вид авторотирования вписывается в ориентацию ipad, но subview не является. subview также вращается, но не вписывается в ориентацию ipad, ориентация субвью всегда имеет ландшафт в направлении кнопки ipad home.как авторотировать подсмотр в навигационном контроллере

мой вопрос в том, как сделать автозапуск subview и иметь ориентацию, как ориентация основного вида ???

может некоторое тело помочь мне, пожалуйста ...

ответ

6

Я решил эту проблему.

Я использую функцию NSNotification в подвид ViewController класса, в методе viewWillAppear, это моя реализация:

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(deviceRotated:) 
name:UIDeviceOrientationDidChangeNotification 
object:[UIDevice currentDevice]]; 

, а затем, это метод deviceRotated:

-(void)deviceRotated:(id)sender{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation]; 
    if (orientation == UIDeviceOrientationPortrait) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (0.0); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(0, 30); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    } 
    else if (orientation == UIDeviceOrientationPortraitUpsideDown) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 180/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(-63, -100); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    }else if (orientation == UIDeviceOrientationLandscapeLeft) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 90/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(60, -180); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 


    }else if (orientation == UIDeviceOrientationLandscapeRight) { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation (M_PI * 270/180.0f); 
     CGAffineTransform translate = CGAffineTransformMakeTranslation(-60, -140); 
     self.alertView.transform = CGAffineTransformConcat(translate, rotate); 

    } 
} 

Наконец, проблема решена. И this - это ссылка, которая мне помогает.

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