viewWillTransitionToSize和方向

时间:2018-02-06 10:37:02

标签: ios objective-c uiviewcontroller

如果我将属性添加到UIViewController“myisLandscape”(BOOL) 每次调用viewWillTransitionToSize时都会更新此属性

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{     
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    // will execute before rotation
    [coordinator animateAlongsideTransition:^(id  _Nonnull context) {

        self.myIsLandscape = (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]));

    } completion:^(id  _Nonnull context) {

        // will execute after rotation

    }];

}

除了这个方法之外,还有其他方法需要更新self.myIsLandscape以便它始终具有正确的值吗?

我需要这个属性来访问从后台线程检查UIViewController的当前方向(我不想使用dispatch)

1 个答案:

答案 0 :(得分:0)

- (void)viewWillTransitionToSize:(CGSize)size 
       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

此方法是UIContentContainer协议的一部分。此协议定义了根据大小更改重新设计视图控制器内容的方法。当您实现上面的方法时,它会通知View Controller它的视图大小即将发生变化。

因此,您正在进行的检查将始终返回正确的值。无需担心。