簡體   English   中英

將方向從垂直更改為上下時,更改控制器的顏色

[英]Change the color of the controller when changing orientation from vertical to upside down

如何使用self.view.backgroundColor = self.randomColor;更改視圖控制器的顏色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;
}

你必須用

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

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

    self.view.backgroundColor=[UIColor greenColor];

      }

}

通知容器其視圖的大小即將更改。

每當旋轉設備時,都會觸發該方法。

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()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM