2017-10-10 79 views
-2

在swift中更改子视图的alpha而不是父视图。我想这在swift中更改子视图的alpha而不是父视图

  for v in view.subviews { 
        let view = v 
        view.layer.cornerRadius = 20 
        view.backgroundColor = UIColor.black 
        view.alpha = 0.8 
        } 

enter image description here

+0

你的问题是什么?你发布的代码到底是什么问题? – rmaddy

+0

我想更改子视图的Alpha而不是父视图。查看视图层次 –

+0

好的,这就是你想要做的。再次,你的问题是什么?你发布的代码有什么问题?你发布的代码改变了所有子视图的'alpha',而不是'view'本身。 – rmaddy

回答

0

我假设每个视图的子视图也有子视图,否则就像@rmaddy,我不确定问题是什么。要深入到第二层子视图,请使用嵌套循环:

for v in view.subviews { 
    v.subviews.forEach({ 
     $0.alpha = 0.8 
     //etc 
    }) 
} 

希望有所帮助。

0

如果我明白你的问题,你想你的四子视图设置透明度,但不影响其子视图(子视图的子视图)。

通过设置视图alpha属性,所有的子视图都会受到影响,并且透明度将被应用于所有的(递归的)。如果您不想要这种行为,请在backgroundColor属性上设置透明度的某种颜色并保留alpha属性值1。否则,如果您只是不想隐藏图像视图,请在故事板上手动设置alpha,而不是此循环,或创建一个imageView插座并在循环后将其alpha设置为1。