作为跟用户交互最主要的方式,views有非常多的功能。官方文档也只列举几点:
- 布局还有子视图的管理
1.一个视图定义自己的默认大小调整行为与它的父视图
2.一个视图可以管理的子视图列表。
3.一个视图可以重写它的子视图的尺寸和位置,如需要
4.一种视图可以将其坐标系中的点转换为其他视图或窗口的坐标系的。 - 绘图和动画
1.一个视图在其矩形区域内绘制内容
2.一些视图的属性可以以动画的形式赋予新的值 - 事件处理
1.一个视图可以收到触控事件
2.视图参与响应链
(一) 创建和配置view的对象
创建视图对象一般有两种方法,一个是用IB,一个是用代码写。
创建视图之后就是设置视图的属性,视图的属性
视图的属性分为几类
1.透明度设置
2.大小和位置设置
3.自动调整视图和他的子视图位置
4.视图内内容显示模式
5.手势
6.视图的实际内容
小技巧:使用tag标记使用视图
(二)创建和管理视图的层次
添加和删除子视图:
用Xib创建视图,当然是最简单明了的做法,你能清楚的管理自己需要的图层。如果你希望自己用代码去创建图层的话,你可以先创建并初始化,然后使用下面的方法:
- 使用addSubview:添加子视图到父视图。这方法会将子视图添加到父视图中子视 图列表的最后一位
- 使用insertSubview:添加子视图到父视图的子视图列表中间
- 还有bringSubviewToFront:,sendSubViewToBack:,exchangSubviewAtIndex:withSubviewAtIndex,使用这些方法会比清除子视图然后重新插入要快!
- 使用removeFromSuperview:将子视图从父视图中清除
摘录: Both the window and the view controller are stored in the application’s main nib file, which is loaded before the method is called. However, the view hierarchy managed by the view controller is not actually loaded until the view
property is accessed.
在application:didFinishLaunchingWithOptions:方法调用之前,应用的主nib文件先装载,并且已经先存储了window和视图控制器的实例。然而图层要在视图的property能访问之后,才会被视图控制器装载。
如果你想监听子视图添加或者移除的动作,有以下方法:
- willMoveToSuperview:
- willMoveToWindow:
- willRemoveSubView:
- didAddSubview:
- didMoveToSuperview:
- didMoveToWindow:
使用视图的alpha属性隐藏视图,会比删除然后在添加图层更加高效!
但是注意,如果你隐藏一个当前响应的图层,触控事件仍旧会传递到隐藏的图层,除非你移除他的响应状态!
如何定位你的图层,你可以使用tag属性或者使用指针,但是指针只能用在跟图层相关的地方,例如你在视图控制器中使用了a视图的b图层,那么其实就是能在视图中使用一个@property UIView * b;,然后再视图控制器中倒入,并且使用a.b去使用这个b图层。
(三)平移,缩放,还有旋转视图
affine transform 翻译为仿射变换。这个仿射变换也并不是一两句话可以解释清楚,而且里面还涉及一些别的内容,因此我决定另外开一篇来记录学习。