使UIView变暗

时间:2010-04-16 01:07:43

标签: iphone cocoa-touch uiview calayer

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

您还可以查看CGContextSetBlendMode。

答案 1 :(得分:0)

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

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