вращающийся вид после загрузки - PullRequest
1 голос
/ 18 января 2011

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

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

Проблема в том, что вид не будет автоматически вращаться.Я понял, что представление вызывает этот метод в контроллере представления только во время загрузки, но как я могу заставить его вызвать его снова?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Краткий ответ: невозможно.

Длинный ответ: просто верните, что вы делаете только портрет, и поверните вид самостоятельно.

Получить уведомления о вращении (поместите его в viewDidAppear или что-то в этом роде):

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

Затем выполните ротацию в "revolutionChange:" (пример веб-просмотра здесь):

- (void)rotationChange:(NSNotification *)notification {
    UIDeviceOrientation o = [[UIDevice currentDevice] orientation];
    CGFloat rotation;
    [self.webView setTransform:CGAffineTransformIdentity];
    switch (o) {
        case UIDeviceOrientationPortrait:
            rotation = 0;
        case UIDeviceOrientationPortraitUpsideDown:
            rotation = 180;
    ...
    }

    [[UIApplication sharedApplication] setStatusBarOrientation:o animated:YES];
    CGAffineTransform transform = CGAffineTransformIdentity;
    transform = CGAffineTransformRotate(transform, rotation * (M_PI / 180.0f));
    [self.webView setTransform:transform];
}

РЕДАКТИРОВАТЬ: не забудьте отключить уведомления, если они вам не нужны (как в "viewDidDisappear:")

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
0 голосов
/ 18 января 2011

Попробуйте использовать код в этом методе

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration{
//required functionality

}

Приветствия

...