Visibility and Opacity
hidden属性
视图(view)含有一个hidden
属性,值类型是布尔类型(true or false)。两种情况:设置hidden = true
时,视图隐藏;设置hidden = false
时,视图呈现。值得注意的是,尽管在设置hidden = true
时,视图以及其子视图内容都不可见,但这并不意味着该视图从视图层级
中移除了!此外,一个隐藏的视图是无法接收触摸事件(touch event,注意这里用词是接收receive,即以消息通知方式告诉视图有用户触摸)。这有点尴尬,明明存在着,但却看不见…尽管视图隐藏了,我们依旧可以通过代码对视图进行修改。
backgroundColor属性
通过设置视图的backgroundColor属性修改其背景颜色,颜色是特定类UIColor,用起来比较简单,就像这样:UIColor.redColor()
;视图默认的背景颜色是nil,即不设置,这意味着视图拥有一个透明(transparent)背景!感觉怪怪的,其实细细想来还是很合理的,甚至很多时候就希望背景是透明的。
alpha属性
alpha属性和视图的透明程度挂钩,值范围[0,1]
。iOS中是这么定义的:alpha = 1.0
表示不透明(opaque);alpha = 0.0
表示完全透明(transparent);当然也可以设置(0,1)
区间的值给alpha。
如果只是这些的话,显得有些过于简单了。所以我打算接下来讲讲其他特性。
父视图的alpha属性值设置会对子视图起到一定标杆作用。打个比方,假如父视图的
alpha = 0.6
,那么其所有的子视图透明显示程度最多只有0.6。尽管仍然可以设置子视图的alpha为区间[0,1]的任何一个值,但这都是相对值父视图的alpha值0.6而言,比如你设置子视图的alpha值为0.4,那么计算可能像这样0.6 * 0.4 = 0.24
。再深入讨论,颜色(colour)也具有alpha属性。这里要举一个例子:首先设置一个视图的alpha属性值等于1,根据前文所说视图是不透明的;现在设置其背景颜色,颜色的alpha值小于1(尝试设置0.5),这会导致视图看起来有点透明!
前面说到hidden属性,当值为true时,视图看起来完全透明或者近乎透明!
视图的alpha属性值会影响两方面:一.背景颜色的透明程度;二.视图内容的透明程度。举例来说,如果视图中呈现了一张图片(image),同时还设置了背景颜色,最后设置视图的alpha值小于1。假如你正在写demo实验,你会惊奇地发现,背景颜色貌似从图片中渗透出来了!分析下原因。由于alpha值会影响背景颜色以及内容(image图片)的透明程度,一旦值小于1,意味着背景和内容都开始有一点透明,尽管图片是在背景之上,本来是完全遮盖了背景颜色,但是一旦图片变得透明,我们就能透过图片看见下面的背景颜色,从视觉来说就感觉背景颜色从图片中渗透出来。
最后不得不提及视图的opaque属性,老兄,别疑惑,这和前面讲述的完全是两码事,改变它对视图的面貌没有一丁点影响!首先它的值类型是布尔类型,即true
或者false
(而非[0,1]
)。我们可能在ios的绘图系统中(drawing system)会用到它,所以暂时只是粗略讲解下即可。从画画技巧来说,首先是对轮廓进行描画,然后填充内容,这时候设置opaque = true
,意思就是使用不透明材料填充内容因此alpha=1.0
。不透明背景优势在于绘画起来更高效。当然也可以设置opaque属性值等于false
。提醒:当我们在设置视图背景颜色或者alpha值时,opaque不会被改变!正确地设置该属性完全取决于你,幸运地是默认值为true。