iOS开发中,bounds和frame的区别。iOS开发结构体属性值查看和控制器各种尺寸的获取小技巧。

关于bounds和frame的区别:
bounds和frame都是属于 CGRect类型的结构体,系统的定义如下,包含一个 CGPoint(起点)和一个 CGSize(尺寸)子结构体。
struct CGRect {
    CGPoint origin;
    CGSize size;
};

    self . shareButton . center = CGPointMake ( K_SCREEN_WIDTH / 2.0 , 0.75 * K_SCREEN_HEIGHT );
   
CGRect rectBounds = self . shareButton . bounds ;
   
CGRect rectFrame = self . shareButton . frame ;
    ZYLog(@"rectBounds--->%@ rectFrame----->%@" , NSStringFromCGRect (rectBounds), NSStringFromCGRect (rectFrame));

系统的Log输出:
     rectBounds--->{{0, 0}, {113, 23}} rectFrame----->{{131, 488.75}, {113, 23}}。
可见bounds是以当前控件的左上角点为起点( origin )的, size为自身的尺寸。
frame是以当前控件所在的父视图的原点为起点( origin ),size也同样为其自身的尺寸。
因此:当我们将一个子控件添加到一个父视图上面,并希望子控件和父视图完全重合,那么我们直接对子视图的尺寸进行如下操作即可:
children.frame = fatherView.bounds;

对结构体的打印输出:
CGPoint point = CGPointMake( 0.0 f, 0.0 f);
CGSize size = CGSizeMake( 10.0 f, 10.0 f);
CGRect rect = CGRectMake(point .x , point .y , size .width , size .height );
NSLog(@"point: %@", NSStringFromCGPoint(point)) ;
NSLog(@"size: %@", NSStringFromCGSize(size)) ;
NSLog(@"rect: %@", NSStringFromCGRect(rect)) ;


常用获取控制器各种尺寸的方法:
  • 获得矩形最左边的x值 CGFloat CGRectGetMinX(CGRect rect);

  • 获取矩形中点的x值 CGFloat CGRectGetMidX(CGRect rect);

  • 获取矩形最右端的x值 CGFloat CGRectGetMaxX(CGRect rect);

  • 获取矩形最上端的y值 CGFloat CGRectGetMinY(CGRect rect);

  • 获取矩形中心点的y值 CGFloat CGRectGetMidY(CGRect rect);

  • 获取矩形最下端的y值 CGFloat CGRectGetMaxY(CGRect rect);

  • 获取矩形宽度 CGFloat CGRectGetWidth(CGRect rect);

  • 获取矩形高度 CGFloat CGRectGetHeight(CGRect rect);

  • 判断两个点是否相等 bool CGPointEqualToPoint(CGPoint point1, CGPoint point2);

  • 判断两个尺寸是否相等 bool CGSizeEqualToSize(CGSize size1, CGSize size2);

  • 判断两个矩形是否相等 bool CGRectEqualToRect(CGRect rect1, CGRect rect2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值