2015-10-01 18 views
1

如何在縱向發生方向更改時使用self.view.backgroundColor = self.randomColor;, 更改視圖控制器的顏色?將方向從垂直向上顛倒時更改控制器的顏色

隨機色法:

-(UIColor *)randomColor 
{ 
    CGFloat hue = (arc4random() % 256/256.0); // 0.0 to 1.0 
    CGFloat saturation = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from white 
    CGFloat brightness = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from black 
    UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; 

    return color; 
} 
+0

你所說的 「可逆」 是什麼意思?你的意思是[「顛倒」](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/c/econst/UIInterfaceOrientationPortraitUpsideDown)? –

+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

它曾經是這樣的情況,UIViewController有一種方法可以覆蓋檢測方向的變化(如willRotateToInteraceOrientation:duration:)。所有這些在這一點上都已被棄用,因爲蘋果希望開發者不必擔心方向,並且更多地考慮UIViewController必須使用的容器的特性和大小。

所以在這一點上的最佳做法可能是實施viewWillTransitionToSize:withTransitionCoordinator:並在此方法中更改您的背景顏色。

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

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

還是在斯威夫特:

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

    self.view.backgroundColor = self.randomColor() 
} 
相關問題