我使用this tutorial为我的应用创建了渐变背景。 它看起来很漂亮。但是,当我改变方向时会出现问题。
在纵向模式下看起来很合适,但在横向方向上,渐变不会覆盖整个视图。我上传了一个截图 -
红色是渐变,蓝色部分是默认的背景颜色,应该被红色渐变完全覆盖。
如何覆盖整个视图?我试图在检测到旋转变化后调用渐变方法,但它不起作用。这是我使用的代码:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(deviceOrientationDidChangeNotification:)
name:UIDeviceOrientationDidChangeNotification
object:nil];// this is in 'viewWillAppear' method
- (void)deviceOrientationDidChangeNotification:(NSNotification*)note
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
[self addBackground];
}
答案 0 :(得分:3)
我的猜测是系统在实际更新横向布局的视图层次结构之前发送UIDeviceOrientationDidChangeNotification
。
不是重做渐变以响应UIDeviceOrientationDidChangeNotification
,而是在viewDidLayoutSubviews
中执行此操作。当您的视图控制器收到viewDidLayoutSubviews
时,其视图的框架已经针对新的界面方向进行了修改。这样的事情应该做:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.background.frame = self.view.bounds;
}