我有一个UIView/CALayer,我想变暗。我如何尽可能快地变暗?有什么方法可以避免混合?使UIView或CALayer变暗的最快方法(性能明智)
以下备选方案是已知的我
- 创建一个非不透明的CALayer并设置背景颜色和不透明度,并添加作为子层上面的主层
- 同上使用的UIView(可以是一点点慢...?)
- 渲染视图/层的UIImage与CoreGraphics在做着拉伸(是太缓慢,内容是动态/改变)
我有一个UIView/CALayer,我想变暗。我如何尽可能快地变暗?有什么方法可以避免混合?使UIView或CALayer变暗的最快方法(性能明智)
以下备选方案是已知的我
创建一个非不透明的CALayer并设置背景颜色和透明度,并将其添加为子层以上主层
有人给了我一个提示有一个大在superview /超级图层上的rk背景,并设置我想要变暗的视图的alpha。这样我就不需要添加额外的图层/视图。
这样做的潜在缺点是,如果groupview opacity处于打开状态(默认情况下在iOS 7及更高版本上),您想要变暗的视图将会脱离屏幕渲染。
不知道这真的是更快的性能明智。 – hfossli
如果没有其他的东西,很高兴不必添加额外的图层。 –
我不得不做这样的事情。对于任何好奇的实际代码:
// assuming the view you're trying to darken is called 'mainUIView'
// make the dark layer the same size as the view you're overlaying
UIView *darkBackgroundView = [[UIView alloc] initWithFrame:mainUIView.frame];
CALayer *darkenLayer = darkBackgroundView.layer;
// background color
darkenLayer.backgroundColor = [UIColor blackColor].CGColor;
// transparency (0 is transparent, 1 is solid)
// you can adjust this for the level of darkness you prefer
darkenLayer.opacity = 0.75f;
[mainUIView addSubview:darkBackgroundView];
我想你有你的答案。 – nielsbot
那么没有其他好的/更好的选择? – hfossli
大概不是我想的。一个填充层很快。如果您确实遇到性能问题可以重新访问。此外,您仅限于我认为的基本混合模式;我认为没关系。 – nielsbot