最快的方式(性能明智)使UIView或CALayer变暗

时间:2012-12-20 10:45:12

标签: uiview calayer alphablending

我有一个UIView / CALayer我想变暗。我怎样才能尽快变暗呢?有没有办法避免混合?

我知道以下替代方案

  • 创建一个不透明的CALayer并设置背景颜色和不透明度,并将其添加为主图层上方的子图层
  • 与上面相同的使用UIView(可能有点慢......?)
  • 将视图/图层渲染到UIImage并使用CoreGraphics进行绘图(速度太慢,内容是动态的/变化的)

3 个答案:

答案 0 :(得分:3)

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

这样做的潜在缺点是,如果启用了组视图不透明度(默认情况下在iOS 7及更高版本上打开),则要变暗的视图将在屏幕外渲染。

答案 1 :(得分:2)

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

答案 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];