2012-12-20 37 views
1

我有一个UIView/CALayer,我想变暗。我如何尽可能快地变暗?有什么方法可以避免混合?使UIView或CALayer变暗的最快方法(性能明智)

以下备选方案是已知的我

  • 创建一个非不透明的CALayer并设置背景颜色和不透明度,并添加作为子层上面的主层
  • 同上使用的UIView(可以是一点点慢...?)
  • 渲染视图/层的UIImage与CoreGraphics在做着拉伸(是太缓慢,内容是动态/改变)
+0

我想你有你的答案。 – nielsbot

+0

那么没有其他好的/更好的选择? – hfossli

+1

大概不是我想的。一个填充层很快。如果您确实遇到性能问题可以重新访问。此外,您仅限于我认为的基本混合模式;我认为没关系。 – nielsbot

回答

1

创建一个非不透明的CALayer并设置背景颜色和透明度,并将其添加为子层以上主层

3

有人给了我一个提示有一个大在superview /超级图层上的rk背景,并设置我想要变暗的视图的alpha。这样我就不需要添加额外的图层/视图。

这样做的潜在缺点是,如果groupview opacity处于打开状态(默认情况下在iOS 7及更高版本上),您想要变暗的视图将会脱离屏幕渲染。

+0

不知道这真的是更快的性能明智。 – hfossli

+2

如果没有其他的东西,很高兴不必添加额外的图层。 –

1

我不得不做这样的事情。对于任何好奇的实际代码:

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