04.visibility_and_opacity

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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...