0

我已使用本教程为我的应用程序创建渐变背景。它看起来很漂亮。但是,当我改变方向时会出现问题。

它在纵向模式下看起来很合适,但在横向模式下,渐变不会覆盖整个视图。我已经上传了截图-

http://www.screencast.com/t/c4vUv55Xq0

红色是渐变,蓝色部分是默认的背景颜色,应该被红色渐变完全覆盖。

如何覆盖整个视图?在检测到旋转变化后,我尝试调用梯度方法,但没有成功。这是我使用的代码:

    [[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];
}
4

1 回答 1

3

我的猜测是系统在实际更新横向布局的视图层次结构UIDeviceOrientationDidChangeNotification 之前发送。

与其响应 重做渐变,不如UIDeviceOrientationDidChangeNotificationviewDidLayoutSubviews. 当您的视图控制器收到viewDidLayoutSubviews时,它的视图框架已经针对新的界面方向进行了修改。这样的事情应该做:

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    self.background.frame = self.view.bounds;
}
于 2013-06-23T06:45:34.473 回答