我最近修复了旋转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];
});
}