美文网首页
iOS中控件的Frame属性和Bounds属性的区别

iOS中控件的Frame属性和Bounds属性的区别

作者: 魔力双鱼 | 来源:发表于2019-07-12 17:57 被阅读0次

在iOS中,每个控件都是继承于UIView的,都会有视图的属性存在,控制这个视图的位置就有Frame和Bounds两个属性

frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)其中的坐标是我的左上角坐标相对于我的父视图左上角的坐标。如果我修改坐标,x+50,y+50,那么我就会相对于我的父视图移动,相对于父视图,我向右移动50,向下移动50

bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是本身坐标系统)其中的坐标是我的子视图左上角的坐标相对与我的左上角的坐标。如果我修改坐标,x+50,y+50,那么我的子视图就会相对我进行移动,相对于我,子视图向左移动50,向上移动50

-(CGRect)frame{

 returnCGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);

}

-(CGRect)bounds{

  returnCGRectMake(0,0,self.frame.size.width,self.frame.size.height);

}

实际使用情况是这样的:

1.如果我在a视图,我需要在a视图下创建一个子视图b,并规定b视图相对于a视图的坐标和大小,使用Frame即可,不需要对Bounds做任何操作

    UIView * a;

    UIView * b;

    [a addSubview:b];

    b.frame = CGRectMake(100, 100, 100, 100);

2.如果我在b视图,我是a视图的子视图,我想要修改我自己的大小,但是我又不想知道我相对于a视图的坐标,那就使用Bounds,origin都设为0

    b.bounds = CGRectMake(0, 0, 50, 50);

3.如果我在b视图,我是a视图的子视图,我想要重新设计我的视图的坐标,方便我创建我的自己的子视图时的坐标转换,那么我就可以设置Bounds,origin的大小就是我左上角的坐标,我再创建的子视图就会以我的这个坐标来进行参照坐标

b.bounds = CGRectMake(-50, -50, b.bounds.size.width, b.bounds.size.height);

4.如果我是b视图,我的视图旋转了,我的Frame和Bounds就会演变成下面的样子

1.png

以上所述的1和2场景比较常见,其它场景都是及其少见,如果你想修改坐标,就使用Frame,如果你想修改大小,就使用Bounds

相关文章

  • UIView的frame和bounds的区别

    UIView的frame和bounds的区别 UIView作为iOS里面常用的控件,它有两个属性Frame和bou...

  • iOS中控件的Frame属性和Bounds属性的区别

    在iOS中,每个控件都是继承于UIView的,都会有视图的属性存在,控制这个视图的位置就有Frame和Bounds...

  • UI总结

    一.控件 1.属性 1> frame和bounds的区别 frame:可表示尺寸和位置,与父视图坐标系的关系,位置...

  • UI

    一.控件 1.属性 1> frame和bounds的区别 frame:可表示尺寸和位置,与父视图坐标系的关系,位置...

  • ios开发之UIView的frame、bounds跟center

    原文链接:ios开发之UIView的frame、bounds跟center属性的区别(附图) - 知乎然也 - 博...

  • iOS 面试题目

    1、iOS frame和Bounds 以及frame和bounds区别2、 ios webView 加载HTML字...

  • iOS纪录

    (1)View的Frame与Bounds区别 摘自 ios view的frame和bounds之区别(位置和大小)...

  • frame和bounds的区别

    1、frame和bounds的区别 UIView的布局属性包括:frame、bouns、center,分别对应了C...

  • ios view的center 属性

    今天在理解view的frame 和bounds属性的区别时,发现了view的center属性。 想起刚刚项目中的一...

  • UIView简介

    属性 1.frame: CGRect ---> 相对于父控件的位置2.bounds: CGRect ---> 以自...

网友评论

      本文标题:iOS中控件的Frame属性和Bounds属性的区别

      本文链接:https://www.haomeiwen.com/subject/pojrrqtx.html