使UIView变暗

igu*_*222 3 iphone cocoa-touch calayer uiview

我希望将UIView"暗化"一定量.现在,我正在做这样的变暗:

UIView *overlay = [[UIView alloc] initWithFrame:mainView.bounds];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha = 0.5f;
[mainView addSubview:overlay];
Run Code Online (Sandbox Code Playgroud)

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

dra*_*ard 6

这是值得一试的.我从未使用过UIRectFillUsingBlendMode.

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

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

您还可以查看CGContextSetBlendMode.