在iOS 8上,在旋转时更改XIB无法正常工作

时间:2014-09-23 16:43:25

标签: ios xcode

我在iOS 8上运行我的应用程序时出现问题。当我以纵向模式启动应用程序时,它的工作正常,但在横向模式下启动时,我有类似这样的事情https://www.youtube.com/watch?v=Ds-eOfxhPGc&list=UUWJmewTedt8KvB5kjTam8FA

我使用2个XIB并通过此代码在旋转时更改它。它在iOS 7上运行良好,但在iOS 8上无法正常工作

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation  duration:(NSTimeInterval)duration
{
    if( UIInterfaceOrientationIsLandscape(toInterfaceOrientation) )
    {
        [[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])]
                                      owner: self
                                    options: nil];
        [self viewDidLoad];
    }
    else
    {
        [[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@", NSStringFromClass([self class])]
                                      owner: self
                                    options: nil];
        [self viewDidLoad];
    }
}

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:YES];

    if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
    {
        [[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])]
                                      owner: self
                                    options: nil];
        [self viewDidLoad];

    } else if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){
        [[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@", NSStringFromClass([self class])]
                                      owner: self
                                    options: nil];
        [self viewDidLoad];
    }
}

1 个答案:

答案 0 :(得分:0)

在iOS 8中不推荐使用

-willRotateToInterfaceOrientation:duration:。请改用-viewWillTransitionToSize:withTransitionCoordinator:。如果您需要获取方向,请使用[[UIApplication sharedApplication] statusBarOrientation]