将方向从垂直更改为倒置时更改控制器的颜色
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];
通知容器其视图的大小即将改变。
只要您旋转设备,该方法就会触发。
【讨论】:
以上是关于将方向从垂直更改为倒置时更改控制器的颜色的主要内容,如果未能解决你的问题,请参考以下文章