博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIView常用属性和函数
阅读量:2339 次
发布时间:2019-05-10

本文共 6645 字,大约阅读时间需要 22 分钟。

一、常用属性
1.alpha(不透明度)
设置视图的不透明度.默认为1.
    view.alpha = 0;// 完全透明
   view.alpha = 1;// 不透明

2.
clipsToBounds
默认是NO,当设置为yes时,超出当前视图的尺寸的内容和子视图不会显示。

3.
hidden
 默认是NO,当设置为yes,视图就看不见了。

4.
userInteractionEnabled
 默认为YES,如果设置为Noview就不能和用户交互了。(即不能响应事件)
5. tag
 默认为0,用来标记视图的

6. exclusiveTouch
默认为No,
exclusiveTouch的意义在于:如果当前设置了exclusiveTouch的UIView是整个触摸事件的第一响应者,那么到你所有的手指离开屏幕前其他的UIView是无法接受到整个事件周期内所有的触摸事件。

6.
CGRect frame
1表示控件的位置和尺寸(以父控件的左上角为坐标原点(00))
2修改这个属性,可以调整控件的位置和尺寸

7.
CGPoint center
1表示控件的中点(以父控件的左上角为坐标原点)
2修改这个属性,可以调整控件的位置

8.
CGRect bounds
1表示控件的位置和尺寸(以自己的左上角位坐标原点,位置永远是(00)
2修改这个属性,只能调整控件的尺寸

9.
CGAffineTransform transform
1表示控件的形变状态(旋转角度、缩放比例)
2创建CGAffineTransform的函数
* CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
创建一个xy方向的缩放比例分别为sxsy的形变值
* CGAffineTransformMakeRotation(CGFloat angle)
创建一个旋转角度为angle的形变值
* CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
在形变值t的基础上,再进行缩放,xy方向的缩放比例分别为sxsy,然后返回一个新的形变值
* CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
在形变值t的基础上,再进行旋转,旋转角度为angle,然后返回一个新的形变值

10.
superview
返回当前视图的父视图。(只读)

11.
window
返回当前视图的窗口。(窗口)
获取根视图的superview和window时,需要注意,在viewdidload中是获取不到的,viewdidload只是视图加载完成,并没有添加到窗口中,因此需要在viewDidAppear方法中才能获取到。那时候视图才被添加到窗口中。
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@",self.view.superview); // 没有值
    NSLog(@"%@"self.view.window); // 没有值
}
- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"%@",self.view.superview); // 有值
    NSLog(@"%@"self.view.window);  // 有值
}

12.
autoresizesSubviews
默认为YES,表示当父视图尺寸改变时,子视图也会随着改变。

13.
autoresizingMask
默认为UIViewAutoresizingNone,不会自动伸缩。

14.
contentMode
设置内容模式。
UIViewContentModeScaleToFill  不按照原宽高比例(长和宽不等比例增长)以任意比例填充。这样视图不会有空白,且内容可以全部显示。
UIViewContentModeAspectToFill  按照原长宽比例填充,不完全显示全部内容。这样内容可能溢出,但整个视图不会留有空白
UIViewContentModeAspectToFit   按照原长宽比例(长和宽等比例增长),完全显示全部内容。这样容易照成左右或者上下留有空白。

15.
backgroundColor
默认是nil。

二、常用函数

1、addSubview: 
添加一个子视图到接收者并让它在最上面显示出来。 

2、bringSubviewToFront: 
把指定的子视图移动到顶层 
- (void)bringSubviewToFront:(UIView *)view 
参数说明:view为需要移到顶层的视图 

3、convertPoint:fromView: 
把一个点从一个坐标系转换到接收者的坐标系 

4、convertPoint:toView: 
转换一个点从接收者坐标系到给定的视图坐标系 

5、convertRect:fromView: 
转换一个矩形从其他视图坐标系到接收者坐标系。 如果参数视图是nil,那么这个方法将会基于窗口来转换。否则视图和接收者必须都属于同一个UIWindow对象  

6、convertRect:toView: 
转换接收者坐标系中的矩形到其他视图。如果参数视图是nil,这个方法将会基于窗口坐标系来转换。否者视图和接收者必须属于同一个UIwindow对象 

7、didAddSubview
告诉视图当子视图已经添加,被子类重写用来执行额外的命令当子视图添加到接收者。这个方法被addSubview调用 

didMoveToSuperview 
通知接收者父视图已经改变(nil是允许的) 默认不做任何事情;子类可以重写这方法来作为特定的实现 

8、didMoveToWindow 
通知接收者它已经被添加到窗口中 
- (void)didMoveToWindow 
讨论 
默认实现不做任何事情;子类可以重写这个方法来做特殊的实现 
窗口的属性有可能是nil当这个方法调用的时候,这表明接收者并不属于当然任何一个窗口。这个只发生在接收者从它的父视图上移除或者接收者添加到父视图中而不是添加到window中。重写这个方法可以用来选择忽略一些他们不关心的对象 

9、drawRect: 
在接收者视图中绘制矩形 
- (void)drawRect:(CGRect)rect 
参数 
rect 
一个定义的需要绘制的矩形 
讨论 
子类重写这个方法如果他们确实要绘制他们自定义的视图。如果子类是其他视图的容器那么它不需要重写这个方法。默认的实现不做任何事情。如果你自定义的视图是一个UIView子类,你不需要去调用它的父类实现。注意如果它的父类实现绘制并且不透明属性为YES那么每一个子类都需要填充矩形。 
当这个方法被调用,接收者可以假定他的帧在坐标上已经转换,边界矩形已经应用;所有他要做的就是绘制自定义的方法。使用UIGraphicsGetCurrentContext方法去获取当前图形内容用来绘制,坐标原点在左上角。不要保留图片内容当他可以被drawRect:这个方法调用。 
exchangeSubviewAtIndex:withSubviewAtIndex: 
交换接收者的子视图和给定的索引视图 
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 
参数 
index1 
一个需要取代索引2的子视图 
index2 
一个需要取代索引1的子视图 

10、hitTest:withEvent: 
返回接收者视图层次中最远的派生(包括它本身)的特定的点。 
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
参数 
point 
接收者坐标系中的点 
event 
触发这个方法的事件或者是如果这个方法被预调用就返回nil 
返回值 
一个视图对象最远的派生点。如果这个点位于接收者之外就返回nil 
讨论 
这个方法贯穿视图的层次发送pointInside:withEvent: 消息到每一个子视图用来决定那个子视图需要接收触摸事件。如果pointInside:withEvent: 返回YES,那么视图的层次全部贯穿;否则视图层次的分支是被否定的。你不太需要调用这个方法,但是你需要重写它用来隐藏子视图的触摸事件。 
如果视图是隐藏的,禁止用户交互的或者透明值小于01那么这个方法不可用 

11、initWithFrame: 
初始化并返回一个新的拥有特定帧矩形的视图对象 
- (id)initWithFrame:(CGRect)aRect 
参数 
aRect 
一个帧矩形用来创建视图对象。原始的帧在它的父视图的坐标系中。设置这个属性用来改变中心和边界属性。 
返回值 
一个初始化的视图对象,如果没有被创建那就返回nil 
讨论 
一个新的视图对象必须添加到视图链中才能使用。这个方法为UIView类指出初始化对象。 

13、insertSubview:aboveSubview: 
在视图层次顶层插入一个视图 
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview 
参数 
view 
一个插入被用来放在顶层的视图。它将会从父视图中移除如果它不是相邻视图 
siblingSubview 
一个相邻视图用来放在插入视图的後面 

14、insertSubview:atIndex: 
插入视图到指定的索引 
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 
参数 
view 
插入的视图,这个值不能是nil 
index 
子视图索引从0开始并且不能大于子视图的数量 

15、insertSubview:belowSubview: 
插入视图到显示链的底层 
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview 
参数 
view 
一个需要插入到其他视图底部的视图。它将从它的父视图移除如果它不与相邻视图的相邻 
siblingSubview 
一个相邻视图将会在插入的视图之上 

16、isDescendantOfView
返回一个布尔值指出接收者是否是给定视图的子视图或者指向那个视图 
- (BOOL)isDescendantOfView:(UIView *)view 
参数 
view 
一个视图用来测试子视图在视图层次中的关系 
返回值 
如果接收者是视图的子视图就返回YES,或者视图就是接收者;否则就是NO 

17、layoutIfNeeded 
排列子视图如果需要的话 
- (void)layoutIfNeeded 
讨论 
使用这个方法来关注子视图的排列在绘制前 

18、layoutSubviews 
排列子视图 
- (void)layoutSubviews 
讨论 
当layoutIfNeeded被调用是子类用来重写这个方法来排列子视图。默认实现这个方法不做任何事情。 

19、pointInside:withEvent
返回一个布尔值指出接收者是否包含特定的点 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
参数 
point 
一个在接收者坐标系内的点 
event 
这个方法的目标事件或者如果这个方法被预调用返回nil 
返回值 
如果点在接收者边界内返回YES,否则返回NO 

20、removeFromSuperview 
把接收者从它的父视图或者窗口移除,并在响应链中移除。 
- (void)removeFromSuperview 
讨论 
接收者同时释放;如果你计划重用它,要确定在发送消息前保持它并在添加到其他UIView对象作为子视图後移除。 不要在显示的时候调用 

21、sendSubviewToBack: 
移动指定的子视图到它相邻视图的後面 
- (void)sendSubviewToBack:(UIView *)view 
参数 
view 
一个子视图用来移动到它後面去 

22、setNeedsDisplay 
控制接收者的边界矩形被标记为需要显示 
-(void)setNeedsDisplay 
讨论 
默认情况下,视图几何图形的改变自动重绘而不需要调用drawRect:方法。因此,你需要去请求视图重绘当视图的数据或者状态改变的时候。从这个意义上来说,向视图发送setNeedsDisplay消息。任何UIView对象标记为需要显示後将会在应用程序循环中自动重新绘制。 

23、setNeedsDisplayInRect: 
标记接收者中的特定的矩形区域为需要显示,或者添加接收者现有的其他无效区域 
- (void)setNeedsDisplayInRect:(CGRect)invalidRect 
参数 
invalidRect 
标记接收者的矩形区域为无效的;他需要在接收者坐标系中定义。 
讨论 
默认情况下,视图几何图形的改变自动重绘而不需要调用drawRect:方法。因此,你需要去请求视图重绘当视图的数据或者状态改变的时候。使用这个方法或者用setNeedsDisplay方法来标记视图需要显示的地方。 

24、setNeedsLayout 
设置当子视图显示的时候需要重新排列 
- (void)setNeedsLayout 
讨论 
如果你调用这个方法在下一个显示方法之间,那么layoutIfNeeded排列子视图;否则将不会做任何事情 

25、sizeThatFits
计算并返回一个最好的适应接收者子视图的大小 
- (CGSize)sizeThatFits:(CGSize)size 
参数 
size 
接收者首选的尺寸 
返回值 
一个新的大小用来适应接收者子视图 
讨论 
默认的实现返回大小参数 子类重写这个方法用来返回特定视图的大小。举个粒子,UISwitch返回一个修正过的大小,UIImageView返回图片的大小 这个方法并没有改变接收者的大小 

26、sizeToFit 
调整大小并移动接收者视图大小所以他包含了他的子视图 
- (void)sizeToFit 
讨论 
这个方法使用sizeThatFits: 方法来决定大小。子类需要重写sizeThatFits:用来计算正确的尺寸大小。默认的实现不做任何事情。 

27、viewWithTag: 
返回视图的特定的标签 
- (UIView *)viewWithTag:(NSInteger)tag 
参数 
tag 
一个用来在视图中搜索的标签 
返回值 
视图在接收者层次中符合的标签,接收者也包含在搜索中。 

28、willMoveToSuperview: 
通知接收者他的父视图将会改变到特定的父视图(也有可能是nil) 
- (void)willMoveToSuperview:(UIView *)newSuperview 
参数 
newSuperview 
新的视图对象将会是接收者新的父视图 
讨论 
子类可以重写这个方法来做一些特定的行为 

29、willMoveToWindow: 
通知接收者它已经被添加到特定的窗口对戏那个的视图层次中(也有可能是nil) 
- (void)willMoveToWindow:(UIWindow *)newWindow 
参数 
newWindow 
一个窗口对象将会成为接收者新的视图层次的根视图 
讨论 
子类可以重写这个方法来提供一些特定的必要实现 

30、willRemoveSubview: 
由子类重写用来在子视图从接收者视图中移除前执行一些特定的方法。 
- (void)willRemoveSubview:(UIView *)subview 
参数 
subview 
子视图将会被移除 
讨论 
这个方法被调用当子视图接收到removeFromSuperview消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了

转载地址:http://wcwvb.baihongyu.com/

你可能感兴趣的文章
面试题:随机数生成、蓄水池抽样、海量数据、设计秒杀系统
查看>>
malloc (0)详解
查看>>
linux清除cache的方法
查看>>
memmove 和 memcpy的区别以及处理内存重叠问题
查看>>
费雪耶兹(Fisher–Yates) 也被称作高纳德( Knuth)随机置乱算法
查看>>
C/C++中变量的存储位置
查看>>
C++中四种强制类型转换区别详解
查看>>
RTTI
查看>>
linux gdb的详细用法 运行与断点
查看>>
删除vector中重复元素
查看>>
和为s的连续正数序列
查看>>
什么是Redis?什么是nosql?NoSQL数据库的四大分类
查看>>
为什么说Redis是单线程的以及Redis为什么这么快!
查看>>
redis的过期健删除策略以及内存淘汰机制
查看>>
redis 双写一致性问题
查看>>
map 如何使用结构体作为自定义键值
查看>>
Mysql几种索引类型的区别及适用情况
查看>>
Redis缓存穿透、缓存雪崩、redis并发问题分析
查看>>
Redis持久化的两种方式
查看>>
判断一个数组,是否可以分成两个数组之和相等的数组
查看>>