如何将不透明的UIView作为半透明UIView的子视图?

Mus*_*sis 40 iphone ipad ios

我有一个alpha为0.5的UIView,我将其作为子视图添加到我的主视图中,以便灰显其他所有内容.我想在这个灰色的UIView中添加一个额外的UIView作为子视图 - 问题是,当我这样做时,我新添加的子视图也是部分透明的.

有没有办法让子视图"忽略"其超级视图的alpha值并且本身是完全不透明的?

Dar*_*ngs 110

设置UIView背景颜色alpha而不是它的alpha直接.

Objective-C的

UIView *view;
...
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.6];
Run Code Online (Sandbox Code Playgroud)

它不一样:

view.backgroundColor = [UIColor blackColor];    
view.alpha = .6;
Run Code Online (Sandbox Code Playgroud)

斯威夫特3

view.backgroundColor = UIColor.black.withAlphaComponent(0.6)
Run Code Online (Sandbox Code Playgroud)

斯威夫特2.3

UIView *view;
...
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.6];
Run Code Online (Sandbox Code Playgroud)

  • 整洁的小技巧,每天都学到新东西. (5认同)
  • 奇迹般有效!! (2认同)

Jos*_*erg 12

不,不是真的.你想要的是采取叠加视图,并使其具有清晰的背景颜色.作为新叠加层的子视图,您的视图会使您的视图变得灰暗.而作为兄弟姐妹的观点,你的观点就是不透明的.

[OpaqueView] [DimmingView]
     |             |
      [OverlayView]
Run Code Online (Sandbox Code Playgroud)

  • 更简单:我只使用它作为背景颜色:`UIColor*bg = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5];`,所以我不必添加额外的叠加视图. (44认同)