变暗查看是否禁用(Darken view as if disabled)

2019-08-17 16:59发布

你怎么变黑一个观点,如果它被禁用/高亮,最好不使用任何额外的看法?

通过查看我的意思是一个UIView ,其所有的孩子。 我想实现一个残疾人同样的效果/高亮UIButton

不要假设的观点是完全不透明的。

Answer 1:

什么我目前正在播放:

  1. 创建具有不透明度(黑色层_highlightLayer )。 这是类似的办法了“阿尔法黑色视图”。
  2. 掩模_highlightLayer与原始视图的非不透明图像。
  3. 添加_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;
}

当然,这应该只用于小型的意见。



Answer 2:

例:

你有一个UIButton * BUTTON1和UIView的*厂景

您可以禁用按钮,在这样一个观点:

[view1 setHidden:YES];
[button1 setEnabled:NO];

启用一个按钮和一个视图可以做到这样:

[view1 setHidden:NO];
[button1 setEnabled:YES];

希望这可以帮助..



Answer 3:

虽然这种方法不能满足您不使用额外的观点,简单地增加0.6阿尔法黑色视图左右似乎达到的效果,与您可以使用这个新观点拦截UIEvents额外的好处的偏好,使所有的子视图大批被禁止。

你甚至可以以图形花俏,而不是仅仅使用重叠视图一个黑色的背景,你可以填补其背景与径向渐变,以达到某种这种情况发生在iOS的时候弹出一个视图禁用它背后的视图聚光灯照亮的效果.. 。



文章来源: Darken view as if disabled