IOS单视图UI笔记

来源:互联网 发布:厦门拓羽网络 编辑:程序博客网 时间:2024/05/22 12:59
UIView
UIWindow需要在app启动的时候进行家在,window 的尺寸要与屏幕大小一致。


frame相对于父视图坐标系,bounds相当于自身的坐标系


UIView的层次关系


UIView的层次关系可以用属性结构来表述,每个view室一个结点。
一个UIView只有一个superview (UIView *)superview
一个UIView可以有0个或者多个subview (NSArray *)subviews    
subview总是卫浴superview智商的,因为subview越晚加入的显示在越上层。每个view都有一个tag属性,我们可以通过它来快速定位此子试图。
(UIView *)viewWithTag:(NSInteger)tag






ui单视图程序文件结构及执行顺序
main.m是程序的入口
UIApplication()创建应用程序对象。
UIApplicationDelegate是一个协议,定义了一堆监测程序执行的方法,这些方法都有自己的触发条件。大致分为几类:程序启动、
活跃/非活跃状态、前后胎切换、推送通知、内存警告等。
UIViewController通常我们不会在window上添加试图,而是制定一个viewController作为根视图控制器。






UIViewController
概念:视图控制器。
每个视图控制器都自带一个视图,并且负责这个视图相关的一切事务,负责Model与View的通信,监测设备旋转以及内存警告,是所有
视图控制器类的基类,定义了控制器的基本功能。






事件、触摸事件、响应者
UIEvent:事件,由硬件补货到的一个表示用户操作设备的对象。
事件分为三类:触摸事件、晃动事件、远程控制事件。
UIResponder:响应者,是可以响应事件并且可以对其进行处理的对象,是响应者的基类。
第一响应者是当前正在接受事件的响应者对象。
UITouch:收汁,表示触摸中的一个手指。
UIView支持触摸事件,而且支持多点触摸。
需要定义UIView的子类。




触碰检测(Hit-Test)
通过触碰检测找出Touch发生在哪个视图上,递归检测所有子视图,定位准确位置。


响应者链
有一个一个的响应者组成的长链,定义了ios中触摸事件的交互规则,如果hit-test检测出的view没有响应时间,时间就会沿着响应者链
往下传递,如果连中某个响应者响应了事件或者已经没有响应者了,传递就会结束。


调整事件传递
关闭事件的传递:userInteractionEnabled属性设置为NO,此属性是UIView的,所有子类都能设置。当视图hidden属性为YES或者
alpha为0时,视图也不接受事件。
在一定时间内关闭事件传递:应用程序调用UIApplication的beginIgnoringInteractionEvents和endIgnoringInteractionEvents






绘图
touchesBegan创建数组,用于保存移动过程中经过的点。
touchesMove找到手指所在过程,加入到数组中,根据数组绘制界面
需要使用数组嵌套数组
内存个数组放每一笔包含到点,外层数组放各个小数组


步骤:
需要定义UIView的子类。
实现touchesbegan,touchesmove等方法,记录手指坐标,重写drawRect:方法




UIImageView
UISlider:我们通常使用valueChanged这种eventType来控制交互事件,有三个属性:最大值、最小值、值。
在写程序的时候因为要在slider的changevalue中改变图像的动画速度,所以要将之前生命的额imageview实例对象变为全局变量,所
已直接在viewcontroller.h中声明    _imageview,全局变量带下划线。








手势
对触摸的再次封装
手势的概念:有规律的触摸,UIGestureRecognizer代表ios中的手势类,是一个抽象类,他有多个子类,每个子类代表着具体的手势。
1、轻拍,单击,双击,多指点击   UITapGestureRecognizer
2、长按 UILongPressGestureRecognizer
3、轻扫,分上下左右四个方向 UISwipeGestureRecognizer
4、旋转 UIRotationGestureRecognizer
5、捏合,放大缩小 UIPinchGestureRecognizer
6、拖拽,移动位置 UIPanGestureRecognizer
0 0
原创粉丝点击