UIView

来源:互联网 发布:网络知识竞赛2017平台 编辑:程序博客网 时间:2024/06/16 13:20

1.UIView

1.1.所有 UI 控件都继承自 UIView。

1.2.每一个 UIView 都是一个容器,可以容纳其他 UIView。其中容器视图被称为父视图,而被包含的视图或者控件被成为子视图或者子控件。

1.3.视图对应的文件通常是 storyboard 或者 xib 文件。在许多 iOS 应用程序中,通常不必为视图编写任何代码。

1.4.UIView 负责界面的显示。

1.5.常用属性

superview

获得自己的父控件对象

subviews

获得自己的所有子控件对象

一个视图最多只能有一个父视图,一个视图可以有多个子视图。

frame

控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)

bounds

控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y永远为0)

center

控件中点的位置(以父控件的左上角为坐标原点),通过center属性设置视图位置更加方便

用 frame 和 center 可以修改 UIView 的位置。

用 frame 和 bounds 可以修改 UIView 的尺寸。

通常,修改自身位置大小时使用 frame,而子视图(控件)在设置位置时,会相对父视图的 bounds 进行设置。

tag

控件的ID(标记),父控件可以通过tag来找到或区分子控件

tag 为一个整数,并且两个控件的 tag 默认为0,也可能相同。而在使用 tag 来找到或区分子控件时只会返回第一个与之相符的子控件。

transform

控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

UIView 一次只能应用一个形变属性

设置 transfrom 会改变 UIView 的 frame 属性,但不会改变 bounds 属性。

CGAffineTransformMakeRotate、CGAffineTransformMakeScale、CGAffineTransformMakeTranslation 相对 UIView 的初始状态进行形变

CGAffineTransformRotate、CGAffineTransformScale、CGAffineTransformTranslation 相对 UIView 的当前状态进行形变

1.6.动画

1.6.1.UIView 封装的简单动画效果

1

2

3

4

5

6

[UIView beginAnimations:nilcontext:nil];

// 设置动画持续时间

[UIView setAnimationDuration:.3];

// 需要动画的代码段

// ... ...

[UIView commitAnimations];

1.6.2.UIView 封装的三个 block 动画方法

1

2

3

4

5

6

//1

[UIView animateWithDuration:animations:]

//2

[UIView animateWithDuration:animations:completion:]

//3

[UIView animateWithDuration: delay: options: animations: completion:]

1.6.3.对比 beginAnimations 动画的方式,block 动画的优势:

可以在动画完成时做一些其他的任务

可以设置动画延迟及动画效果选项

block 动画支持嵌套

1 0
原创粉丝点击