如何使视图变暗,就像它被禁用/突出显示一样,最好不使用任何其他视图?
我认为我的意思是UIView
及其所有孩子。我希望达到与禁用/突出显示UIButton
相同的效果。
不要认为视图是完全不透明的。
答案 0 :(得分:8)
我目前正在玩的是:
_highlightLayer
)创建黑色图层。这与带有alpha"的"黑色视图类似。方法_highlightLayer
。_highlightLayer
添加到视图图层。只有视图的非透明像素会变暗。
代码:
- (void)highlight
{
// Black layer with opacity
_highlightLayer = [CALayer layer];
_highlightLayer.frame = CGRectMake(0, 0, self.layer.bounds.size.width, self.layer.bounds.size.height);
_highlightLayer.backgroundColor = [UIColor blackColor].CGColor;
_highlightLayer.opacity = 0.5;
// Create an image from the view
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *maskImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Create a mask layer for the black layer
CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (__bridge id) maskImage.CGImage;
maskLayer.frame = _highlightLayer.frame;
_highlightLayer.mask = maskLayer;
[self.layer addSublayer:_highlightLayer];
}
然后:
- (void)unhighlight
{
[_highlightLayer removeFromSuperlayer];
_highlightLayer = nil;
}
当然,这只应用于小视图。
答案 1 :(得分:0)
示例:
你有一个UIButton * button1和UIView * view1
您可以通过以下方式禁用按钮和视图:
[view1 setHidden:YES];
[button1 setEnabled:NO];
启用按钮和视图可以这样做:
[view1 setHidden:NO];
[button1 setEnabled:YES];
希望这会有所帮助..
答案 2 :(得分:0)
虽然这种方法无法满足您不使用其他视图的偏好,但只需添加alpha为0.6左右的黑色视图就可以达到效果,还有一个额外的好处就是您可以使用此新视图拦截UIEvents,以便所有子视图都被有效地禁用。
您甚至可以获得图形化的幻想,而不是仅使用黑色背景作为叠加视图,您可以使用径向渐变填充其背景,以实现当弹出视图禁用后面的视图时在iOS中发生的那种聚光效果它...