当设备旋转时,是否有更好的方法检测并替换IOS应用程序中的渐变填充视图?

当设备旋转时,是否有更好的方法检测并替换IOS应用程序中的渐变填充视图?,ios,objective-c,cagradientlayer,Ios,Objective C,Cagradientlayer,我最近修复了一个在旋转iPad时出现的背景填充渐变的错误 我发现旋转后渐变填充的大小不正确,导致屏幕上的块填充不正确 我按照建议检测设备旋转,并在每次检测到设备方向更改时调用以下方法 它工作得很好,但在我看来有点笨拙 我的问题很简单;这是最佳实践解决方案吗?我该怎么做呢 编辑:-根据评论。更好的代码 /// Adds a gradient background layer to the root of the layer stack, and removes any other one that

我最近修复了一个在旋转iPad时出现的背景填充渐变的错误

我发现旋转后渐变填充的大小不正确,导致屏幕上的块填充不正确

我按照建议检测设备旋转,并在每次检测到设备方向更改时调用以下方法

它工作得很好,但在我看来有点笨拙

我的问题很简单;这是最佳实践解决方案吗?我该怎么做呢

编辑:-根据评论。更好的代码

/// Adds a gradient background layer to the root of the layer stack, and removes any other one that may already be there
+ (void) addGradientBackground:(UIView *)view {

    dispatch_async(dispatch_get_main_queue(), ^{
        CALayer *vl = view.layer.sublayers[0];
        if ([vl isKindOfClass:[CAGradientLayer class]]) {
            [vl removeFromSuperlayer];
        }

        CAGradientLayer *gradient = [CAGradientLayer layer];
        gradient.frame = view.bounds;
        gradient.colors = [NSArray arrayWithObjects:(id)[[UICustomColor featherColor] CGColor], (id)[[UICustomColor marineColor] CGColor], nil];
        gradient.startPoint = CGPointMake(0.0, 0.25);
        gradient.endPoint = CGPointMake(1, 0.75);
        [view.layer insertSublayer:gradient atIndex:0];
    });
}

顺便说一句:Objective-C有一个到
nil
行为的已定义消息。顺便说一句:Objective-C有一个到
nil
行为的已定义消息。