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

一、alpha

液晶显示器是由一个个的像素点组成的,每个像素点都可以显示一个由RGBA颜色空间组成的一种色值。其中的A就表示透明度alpha,UIView中alpha是一个浮点值,取值范围0~1.0,表示从完全透明到完全不透明。

1、alpha会影响自己的透明度,同时也会影响subView的透明度。

2、alpha设为空之后,UIView不会从响应者链中移除,仍然可以收到event。

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

该属性为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。

六、如何设置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];

时间: 2025-01-23 12:37:26

ios开发之View属性hidden, opaque, alpha, opacity的区别的相关文章

iOS开发之tintColor属性详解

详解tintColor属性 tintColor属性是iOS7之后新加的一个属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构.它主要是改变控件的颜色,以获取一些有意思的视觉效果. tintColor属性-  默认情况下,tintColor属性是默认为nil的,当我们设置一个视图的tintColor属性时,他会自动传播到他的子视图的,因此,要设置一个控件的颜色,即就要设置他的父视图的tintColor,当你没有设置tintColor时,系统默认为蓝色.

iOS开发之self.abc = nil与[_abc release]的区别

前者使用property的点操作符,也就相当于调用了abc对应的set method,和这句是一样的:[self setAbc:nil]; 而后者没有通过property,直接访问了成员变量,调用了它的release方法. 对于set method来说,用synthesize来让系统帮我们生成的set方法和如下的类似: - (void)setAbc:(id)newAbc { if(_abc != newAbc){ [_abc release]; _abc = [newAbc retain]; /

iOS开发之UILabel

UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: ? 1 2 3 4 5 6 7 8 9 10 /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 40); /*初始化*/ UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect]; /*一些属性的设置*/ titleLabel.font = [UIFont systemFontOf

iOS开发之多XIB之间相互关联

Xib link Xib 1.直接加载xib中的UIView 创建一个View1.xib, 随便设一个背景色,加一个标识UILabel, 这样好知道是这个view是哪一个view. 你可以在这个view上加作意的subview,我只是说明原理,所以这儿并没有加作何subview. 最终我的View1如下图: 由于View1会放到其它View上作为subview,所以这儿size是Freeform, Status Bar是:None. 将下面代码放到viewDidLoad中: &1这行代码就是加载

李洪强IOS开发之-iOS经典面试题

李洪强IOS开发之-iOS经典面试题 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看.我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖.整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人.所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充.我的理解如果有错漏请一定指出,非常感谢! 从12年开始做面试官到现在已经三个年头了,这

iOS开发之17个常用代码整理

1.判断邮箱格式是否正确的代码 //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&quo

ios开发之NavBar和TarBar使用技巧

1  改变NavBar颜色:选中Navigation Bar 的Tint属性.选中颜色. 2  隐藏“back”按钮: self.navigationItem.hidesBackButton = YES; 3 隐藏"NavBar" : self.navigationController.navigationBarHidden = YES; 4 可以不用MainWindow.xib创建的Navigation.在每个view上自定义. 需要把每个控制页都加上以下代码来隐藏nav: -(vo

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二)

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二) 上一篇解决了ZBarSDK不支持64bit的问题,下面我们就可以使用ZBarSDK了. 导入ZBarSDk.h文件 附上代码: // //  MeViewController.m //  Auditory Blog // //  Created by 寒竹子 on 15/4/28. //  Copyright (c) 2015年 寒竹子. All rights reserved. // #define ScanWidth  2

iOS开发之label

文字凹陷效果 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 100)]; label.text = @"文字凹陷效果"; label.shadowColor = [UIColor colorWithRed:0.855 green:0.863 blue:0.882 alpha:1.0]; label.textColor = [UIColor colorWithRed:0.298 green: