自己能够做到的实现这样的效果,现在大概有五种方法。
看到要实现这样的效果,我们每个人最先想到的应该是调整那个视图的alpha值(0~1)。
但是如果你的这个视图上还有个要正常显示的子控件的话,你这样写是达不到效果的,这样写导致,只要在这个视图上的控件都会显示半透明,要想达到背景半透明而子控件不透明最简单办法是:
一.用一张半透明的图片作为背景。
这样的话就需要你们的UI给你做一个你所需要的图片,(在项目中能不用图片的地方尽量不要用图片)
二 .使用colorWithWhite:alpha 方法
View.backgroundColor = [UIcolor colorWithWhite:0.2f alpha: 0.5];
这个方法是我之前做项目最常用的方法,0.2f 表示灰度,alpha就是你想要调的透明度,这个方法只能设置黑与白之间的半透明。
三.使用colorWithRed:green:blue:alpha:方法
这个方法可以任意设置我们想要的半透明色彩,以前只是给视图设置想要的色彩,以此偶然的机会,竟然发现它可以做任何我们想要的半透明背景而子控件不透明(以前没发现,小失误)
View.backgroundColor = [UIcolor colorWithRed:0.2f green:0.4f blue:0.5f alpha: 0.5];
0.2f 0.4f 0.5f 为相应的色度,如果你们的UI给你们的颜色为242 122 145 时,我们可以这样写:
View.backgroundColor = [UIcolor colorWithRed:242/255 f green:122/ 255 f blue:145 / 255 f alpha: 0.5];
同样达到你们想要的效果!
四.在xib或者storyBoard里面对背景进行设置
如图:
通过对背景颜色设置图中的Opacity滑块调整透明度,同样可以达到设置背景半透明而子控件不透明的目的。
五.使用colorWithAlphaComponent:方法
和前面说的几个设置背景色的方法不太一样的是,这是一个实例方法,一个UIColor的实例调用此方法后会返回一个带透明度的UIColor.使用方法如下:
UIColor *color = [UIColor blackColor]; View.backgroundColor = [color colorWithAlphaComponent:0.5];
这个方法也可以实现我们想要的效果。
今后还有什么好的方法我会持续更新!