3

我想将 UIView “变暗”一定量。现在,我正在做这样的变暗:

UIView *overlay = [[UIView alloc] initWithFrame:mainView.bounds];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha = 0.5f;
[mainView addSubview:overlay];

不幸的是,这也为透明的部分添加了半透明的黑色覆盖mainView。有没有办法只使非透明部分变暗?

4

2 回答 2

6

这里有一些东西可以尝试。我从未使用过 UIRectFillUsingBlendMode。

-(void) drawRect:(CGRect)inDirty {
  [[UIColor colorWithWhite:0.0 alpha:0.5] setFill];
  UIRectFillUsingBlendMode( inDirty , kCGBlendModeDarken );
}

实现此功能的视图必须设置为仅与您想要影响的其他视图复合。这可能意味着一个父视图包含此视图以及您想要变暗的所有其他视图。

您还可以查看 CGContextSetBlendMode。

于 2010-04-16T01:27:38.677 回答
0

尝试使用这样的东西(显然调整颜色)?

overlay.backgroundColor = [UIColor colorWithRed:0.317647 green:0.317647 blue:0.317647 alpha:0.85];

于 2010-04-16T01:17:21.400 回答