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

时间:2016-09-04 18:43:24

标签: ios objective-c cagradientlayer

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

我发现渐变填充在旋转后尺寸错误,导致屏幕块没有正确填充。

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

它完美无缺,但对我来说似乎有些愚蠢。

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

修改 - 每条评论。更好的代码?

/// 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];
    });
}

0 个答案:

没有答案