当设备旋转时,是否有更好的方法检测并替换IOS应用程序中的渐变填充视图?
我最近修复了一个在旋转iPad时出现的背景填充渐变的错误 我发现旋转后渐变填充的大小不正确,导致屏幕上的块填充不正确 我按照建议检测设备旋转,并在每次检测到设备方向更改时调用以下方法 它工作得很好,但在我看来有点笨拙 我的问题很简单;这是最佳实践解决方案吗?我该怎么做呢 编辑:-根据评论。更好的代码当设备旋转时,是否有更好的方法检测并替换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
/// 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
行为的已定义消息。