2

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

我知道以下替代方案

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

3 回答 3

3

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

这样做的潜在缺点是,如果 groupview 不透明度打开(iOS 7 及更高版本默认打开),您想要变暗的视图将在屏幕外渲染。

于 2012-12-21T14:20:58.817 回答
2

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

于 2013-02-11T15:49:22.347 回答
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];
于 2014-04-15T05:12:44.530 回答