我正在为我的应用程序使用标签栏控制器。如果我在一个名为“结果”的视图控制器中,并且ios设备旋转到横向模式,它将切换到我创建的另一个名为landScape的视图。这是在方法内完成的

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrient‌​ation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight ||
        toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        self.view=landScape;
    } else {
        self.view=originalView;
    }
}

每当我在选项卡栏中的特定控制器中时,它都可以正常工作(示例结果视图控制器)。然而;如果我转到选项卡栏控制器中的另一个元素,并且手机在横向模式下倾斜,然后决定转到resultsviewcontroller,它将不会调用我的view landScape,而是会尝试自动调整视图的大小并看起来可怕。我应该在viewDidLoad方法中调用方法-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation持续时间:(NSTimeInterval)duration以解决此问题吗?还是这是完全错误的?

先感谢您!

最佳答案

问题是您仅在将resultsViewController.view设置为 Activity 视图控制器并检测到旋转时才进行设置。尝试这个:

- (void)setViewForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
    self.view = UIInterfaceOrientationIsPortrait(orientation)
        ? originalView
        : landScape;
}

- (void)viewWillAppear
{
    [self setViewForInterfaceOrientation:[[UIDevice currentDevice] orientation];
    [super viewWillAppear];
}

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrient‌​ation duration:(NSTimeInterval)duration
{
    [self setViewForInterfaceOrientation:toInterfaceOrientation];
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

10-07 19:02