[英]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.