您的位置:首页 > 产品设计 > UI/UE

UIView 类

2015-09-13 23:35 363 查看
UIView是所有可视化控件的老祖宗,而这些可视化控件又与用户互动密不可分,这表示UIView负责了界面的产生以及事件的处理,因此,我们可以将UIView的特性整理如下。

UIView 会占用一块矩形区域,而这块矩形区域是以CGRect这个C结构来表示的。UIView 的一切描绘操作以及事件处理都发生在这个区域内。

如同画布一般,可以在上面描绘其他的东西,也可以放入或删除控件,例如我们在HelloWorld中放置的按钮。

为了让所有的可视化控件可以和用户 互动,它继承了UIResponder 类。而这个类就定义了触控事件以及摇晃事件等。

一个UIView下面可以拥有多个子UIView ,后加入的UIView会放置在上层,我们也可以通过调整这些UIView的上下层关系来构成界面的转换。

通过加入手势的识别,可以让UIView识别出用户的操作,病做出相对应的响应。



—————————————


描述一块区域,只要用这块区域的原点(origin)以及大小(size) 就可以确定了。

CGPoint

struct CGPoint{
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;


用来表示在界面坐标上的一个点。

CGSize

struct CGSize{
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;


用来定义界面上的一块区域的大小。

CGRect

struct CGRect{
CGFloat origin;
CGFloat size;
};
typedef struct CGRect CGRect;


用来描述界面上的一块区域的位置与大小。这个结构在日后开发时用到得几率非常高。

CGPointMake(x,y):用来产生CGPoint,

CGPoint point = CGPointMake(100.0,200.0);       //在这个坐标定位一个点


CGSizeMake(width,height):用来产生CGSize,

CGSize size = CGSizeMake(40.0,50.0);        //产生宽40、高50大小的区域


CGRectMake(x,y,width,height):用来产生CGRect,

CGRect rect = CGRectMake(0,0,320,240);      //在(0,0)的位置产生一块320X240的区域


CGSizeEqualToSize(size1,size2):用来比较两个CGSize是否相同

CGSize size1 = CGSizeMake(100,200);
CGSize size2 = CGSizeMake(200,300);
BOOL isEqual = CGSizeEqualToSize(size1,size2);


结果返回NO。

CGRectContainsPoint(rect,point):用来检查变量point是否在rect所包含的区域内,

CGPoint point = CGPointMake(10,10);
CGRect rect = CGRectMake(5,5,30,30);
BOOL containsPoint = CGRectContainsPoint(rect,point);


结果返回YES.

CGRectGetMinX(rect)和CGRectGetMinY(rect):分别取得区域rect左上角的X,Y坐标

CGRectGetMidX(rect)和CGRectGetMidY(rect):分别用来取得区域rect的中心点的X,Y坐标

CGRectGetMaxX(rect)和CGRectGetMaxY(rect):分别用来取得区域rect右下角的X,Y坐标

定义一个UIView

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];


上述的界面大小即定义为由原点(0,0)算起、宽度320,高度480的区域。除了使用CGRectMake来定义UIVIew的大小以外,在IOS里面还定义了几个特殊的CGRect可以让你直接使用:

CGRectNull:对象可以用nil来设置为控制,那么CGRect呢?答案是使用CGRectNull这个敞亮,而要判断一个CGRect是否为空值,并非简单地使用null或nil来判断,这是因为CGRect是一个C的结构,而非指针对象,这时候应该要使用CGRectNull()函数来判断。

CGRectZero:定义了一个大小为0的区域。这个敞亮用于并不在乎UIView的大小的情况,例如在UITableViewCell这个类里面,我们常会使用以下代码。

UITableViewCell *cell = [[UITableViewCell alloc] iniWithFrame:CGRectZero reuseIdentifier:MyId];


由于后续IOS会去调整所产生的这个控件的大小,所以,我们并不需要自己去计算该控件的大小。在这种情况下,只要传入CGRectZero就可以了。

CGRectInfinite:如果要产生一个无穷大得区域,那么久可以使用这个常量。可以试着将他的width与height输出到控制台来看,那将是个超出屏幕大小好几倍的空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: