美文网首页
bounds和frame的区别

bounds和frame的区别

作者: 敌敌味丶 | 来源:发表于2018-04-12 12:30 被阅读0次
//底部view   灰色
UIView *superview = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
superview.backgroundColor = [UIColor grayColor];
[self.view addSubview:superview]; 

//bounds   红色
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor redColor];
view.bounds = CGRectMake(0, 0, 100, 50);
[superview addSubview:view];

//frame    黄色
UIView *view2 = [[UIView alloc] init];
view2.backgroundColor = [UIColor yellowColor];
view2.frame = CGRectMake(10, 50, 100, 100);
[superview addSubview:view2];
设置bounds的为红色view的打印

此情况下,在view.bounds = CGRectMake(x, y, W, H)中,无论x、y怎么设置最后打印出的结果都是(-W/2, -H/2, W, H).

若取用同级的view的bounds来作为自己的frame,坐标就直接为0:
//bounds   蓝色
UIView *view3 = [[UIView alloc] init];
view3.backgroundColor = [UIColor blueColor];
view3.frame = view2.bounds;
[superview addSubview:view3];
蓝色的view的打印
若在初始化时先使用bounds,再修改所使用的view的bounds的坐标,此时的view的坐标就会相对参照的view向反方向移位。
//参照的 bounds    绿色
UIView *view4 = [[UIView alloc] initWithFrame:superview.bounds];
view4.backgroundColor = [UIColor greenColor];
superview.bounds = CGRectMake(60, 10, 200, 200);
[superview addSubview:view4];
绿色的view

总结:

  • 单独赋值bounds时,无论bounds的坐标怎么设置最后frame的结果都是(-W/2, -H/2, W, H)。

  • 若取用同级的view的bounds来作为自己的frame,坐标就直接为0。

  • 若用父级的bounds给frame赋值后,修改bounds的size会影响frame的size。而且对center不会造成影响。
    除非迫不得已,否则不要修改bounds的坐标。

相关文章

  • iOS纪录

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

  • 深入探究frame和bounds的区别以及setbounds使用

    深入探究frame和bounds的区别以及setbounds使用 深入探究frame和bounds的区别以及set...

  • iOS 面试题目

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

  • #1 布局相关的问题集合

    1.frame 和 bounds的区别 what's the difference bewteen frame a...

  • UI基础相关

    UI基础相关: Frame 和 bounds的区别:Frame是参照父控件的 bounds是参照自己的 默认是(0...

  • frame和bounds区别

    1、frame不管对于位置还是大小,改变的都是自己本身 2、frame的位置是以父视图的坐标系为参照,从而确定当前...

  • iOS~ frame 和 bounds 的区别和联系

    推荐文章Understanding UIScrollView 1、 frame 和 bounds 的区别和联系 f...

  • bounds和frame的区别

    此情况下,在view.bounds = CGRectMake(x, y, W, H)中,无论x、y怎么设置最后打印...

  • frame 和 bounds 的区别

    frame frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的。 b...

  • frame和bounds的区别

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统) bounds:该view...

网友评论

      本文标题:bounds和frame的区别

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