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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值