ios开发之View属性hidden, opaque, alpha, opacity的区别

发表于2016/5/6 11:52:47  472人阅读

分类: iOS

一、alpha
液晶显示器是由一个个的像素点组成的, 每个像素点都可以显示一个由RGBA颜色空间组成的一种色值 。其中的 A就表示透明度alpha ,UIView中alpha是一个浮点值,取值范围0~1.0,表示从完全透明到完全不透明。
1、alpha会影响自己的透明度,同时也会影响subView的透明度。
2、 alpha设为空之后,UIView不会从响应者链中移除,仍然可以收到event 。( 这一点貌似并不对
(经过测试,Unbutton的alpha = 0 时,不能响应点击事件,不能写alpha = nil,因为类型不匹配 )
// 错误依据
在一篇叫做  iOS-控件响应用户控制事件之事件处理 的文章里,写到:
// point:是方法调用者坐标系上的触摸点的位置
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
  // 1.判断下能否接收触摸事件 这里写的很明确,如果 self.alpha <= 0.0,则不能接收触摸事件,所以上面的说法是错误的,幸好自己亲自测试了
  if (self.userInteractionEnabled == NO || self.hidden == YES || self.alpha <= 0.0
      return nil;
。。。
}
3、 更改alpha,默认是有动画效果的 这是因为图层在Cocoa中是由Core Animation中CALayer表示的,该动画效果是CALayer的隐含动画。当然也有办法禁用此动画效果。

二、hidden
该属性为BOOL值,用来表示UIView是否隐藏,默认值是NO。
当值设为YES时:
1、当前的UIView和subview都会被隐藏,而不管subview的hidden值为多少。
2、当前UIView会从响应者链中移除,而响应者链中的下一个会成为第一响应者

三、alpha - hidden 比较
1、对subView的影响: alpha会影响subView透明度,hidden也会影响subView
2、隐藏UIView: alpha设置为0可以隐藏UIView,hidden设置为YES也可以隐藏UIVIew,效果是一样的, 使用hidden性能较高

四、opaque
         opaque = YES,不透明; opaque = NO,透明
        该属性为BOOL值, UIView的默认值是YES 但UIButton等子类的默认值都是NO opaque表示当前UIView是否不透明 ,不过搞笑的是事实上 它却决定不了当前UIView是不是不透明 ,比如你将opaque设为NO,该UIView照样是可见的。 其作用在于:给绘图系统提供一个性能优化开关 如果该值为YES,那么绘图在绘制该视图的时候把整个视图当做不透明对待。 这样,绘图系统在执行绘图过程中会优化一些操作并提供系统性能;如果是设置为NO,绘图系统将其和其他内容平等对待,不去做优化操作。为了性能方面的考量,默认被置为YES(意味着优化)。
1、UIView当有背景颜色时:并且背景颜色有透明度( 透明度不为1时 ),将opaque设置为YES性能较高。
2、UIVIew有背景颜色时:并且背景颜色的 透明度为1 ,opaque的值不影响性能。
3、UIVIew没有背景颜色时:opaque的值不影响性能。
五、 opacity - CALayer的属性
CALayer中opacity是一个浮点值,取值范围0~1.0,表示从完全透明到完全不透明。
1、opacity会影响自己的透明度,同时也会影响subLayer的透明度。
2、opacity设为空之后,CALayer不会从响应者链中移除,仍然可以收到event。
(但是这个自己测试时, self.button1.layer.opacity = 0;button不能显示且不能响应点击事件,目前没有找到相关的文档依据 )

六、如何设置UIView透明,subView不透明(用到再比较方法的优劣)
1、使用一张半透明的图片做背景。( 也就是说,在父视图上加个半透明的背景
这个方法可以达到要求,但是工程中应该尽量少加入资源,能不用图片的尽量不用图片。
2、使用 colorWithWhite:alpha :方法
view.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5];
这也是使用比较多的方法,white后面的参数表示灰度,从0-1之间表示从黑到白的变化,alpha就是想要调整的透明度。
3、使用 colorWithRed:green:blue:alpha: 方法
设置alpha就是想要调整的透明度。
4、在xib或者storyBoard里面对背景进行设置

通过对背景颜色设置图中的opacity滑块调整透明度。
5、使用colorWithAlphaComponent:方法
这是一个实例方法,一个UIColor的实例调用此方法后会返回一个带透明度的UIColor.使用方法如下:
UIColor *color = [UIColor blackColor];
bgView.backgroundColor = [color colorWithAlphaComponent:0.5];
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值