UIView 类

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

  1. UIView 会占用一块矩形区域,而这块矩形区域是以CGRect这个C结构来表示的。UIView 的一切描绘操作以及事件处理都发生在这个区域内。
  2. 如同画布一般,可以在上面描绘其他的东西,也可以放入或删除控件,例如我们在HelloWorld中放置的按钮。
  3. 为了让所有的可视化控件可以和用户 互动,它继承了UIResponder 类。而这个类就定义了触控事件以及摇晃事件等。
  4. 一个UIView下面可以拥有多个子UIView ,后加入的UIView会放置在上层,我们也可以通过调整这些UIView的上下层关系来构成界面的转换。
  5. 通过加入手势的识别,可以让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输出到控制台来看,那将是个超出屏幕大小好几倍的空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值