将方向从垂直方向更改为上下方向时,请更改控制器的颜色

时间:2015-10-01 19:30:44

标签: ios objective-c cocoa-touch uiviewcontroller

如何使用[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats:NO] 更改视图控制器的颜色, 当从纵向到倒置肖像的方向发生变化时?

随机颜色的方法:

self.view.backgroundColor = self.randomColor;

2 个答案:

答案 0 :(得分:1)

你必须使用

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

    //you can try somethign like
        if ([UIDevice currentDevice].orientation==UIInterfaceOrientationMaskPortraitUpsideDown) {

    self.view.backgroundColor=[UIColor greenColor];

      }

}
  

通知容器其视图的大小即将更改。

每当您旋转设备时,该方法都会触发。

答案 1 :(得分:1)

过去情况是UIViewController具有可以覆盖以检测方向变化的方法(例如willRotateToInteraceOrientation:duration:)。所有这些都已被弃用,因为Apple希望开发人员不要担心方向,并且更多地考虑UIViewController必须使用的容器的特征和大小。

因此,此时的最佳做法可能是实施viewWillTransitionToSize:withTransitionCoordinator:并在此方法中更改背景颜色。

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

    self.view.backgroundColor = [self randomColor];
}

或者在Swift中:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)

    self.view.backgroundColor = self.randomColor()
}