iOS, первая страница в UIScrollView включает альбомную ориентацию, а вторая страница отключает альбомную ориентацию

Есть один UIScrollView, и у него две страницы: первая страница в UIScrollView. Я хочу включить альбомную ориентацию, а вторая страница в UIScrollView. Я хочу отключить альбомную ориентацию. Теперь я использую этот код, как показано ниже, но он не работает. усовершенствовано, вторая страница будет горизонтальным экраном, а затем портретным экраном:

- (void)viewWillAppear:(BOOL)animated {
    [ITNotificationCenter addObserver:self selector:@selector(handleDeviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];
}
- (void)handleDeviceOrientationDidChange{
    if(isFirstPage){
        //landscape code
    } else {
        NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
        [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
    }
}

Как я могу этого добиться? Каждый ответ будет оценен.


person RateRebriduo    schedule 03.11.2018    source источник


Ответы (1)


Проблема решена. Просто посмотрите код, как показано ниже.

Файл AppDelegate.h:

@property (nonatomaic, assign, getter=isNeedRotation) BOOL needRotation;

Файл AppDelegate.m:

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if (self.isNeedRotation) {
        return UIInterfaceOrientationMaskPortrait;
    }
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

файл yourUIViewController.m:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == self.mainScrollView) {
        AppDelegate *appDelegate = (AppDelegate *)ITUIApplicationDelegate;
        if (scrollView.contentOffset.x < screen_width) {
            appDelegate.needRotation = YES;
        } else {
            appDelegate.needRotation = NO;
        }
    }
}
person RateRebriduo    schedule 03.11.2018