将方向从垂直更改为倒置时更改控制器的颜色

Posted

技术标签:

【中文标题】将方向从垂直更改为倒置时更改控制器的颜色【英文标题】:Change the color of the controller when changing orientation from vertical to upside down 【发布时间】:2015-10-01 19:30:44 【问题描述】:

如何使用 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;

【问题讨论】:

“updown”是什么意思?你的意思是"upside down"? “颠倒方向” 【参考方案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()

【讨论】:

【参考方案2】:

你必须使用

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

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

    self.view.backgroundColor=[UIColor greenColor];

      


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

只要您旋转设备,该方法就会触发。

【讨论】:

以上是关于将方向从垂直更改为倒置时更改控制器的颜色的主要内容,如果未能解决你的问题,请参考以下文章

当我将滚动方向从垂直更改为水平时,为啥集合视图会崩溃?

主视图控制器在点击项目并快速将方向从纵向更改为横向后消失

如何更改搜索控制器中的 uitextfield 颜色?

如何应用亮度控制和更改文本颜色?

更改方向IOS后视图边界不更新

将方向更改为“水平”不会更改 RadListView 的滚动方向?