美文网首页
bounds和frame的探究(二)

bounds和frame的探究(二)

作者: blocky | 来源:发表于2017-02-27 19:11 被阅读46次

上节主要说了,bounds和frame的定义,可能很抽象;这节主要介绍下,bounds和frame的使用方法和运行效果.

ps:控件中的偏移是以原始状态参考的,橘黄色View是暂时虚拟出来的;

如下图所示,有个自定义坐标系(x,y),红色view(redView),控件(switch),还有个半透明的橘黄色View(为redView的内容View,在未偏移时,是和红色redView重合的,因此先隐藏起来)


控件初始状态下frame和bounds显示.png

当我们需要改变redView的位置时,我们习惯性的就是改变frame,这个是没错的,因为frame是相对父类坐标系偏移的.下图是redView偏移(30,30)后的效果图,可以清楚的看到橘黄的view到现在还没有偏移.这是因为橘黄的view是redView的内容View(包括开关控件),是跟着Frame一起变化的.

  //执行如下代码
    CGRect frame = self.redView.frame;
    frame.origin.y = 30;
    frame.origin.x = 30;
    self.redView.frame = frame;
redView执行frame偏移之后的显示.png

如果我改变redView的bounds会有什么效果了?如下图所示,为改变bounds后的效果:

  //执行如下代码
  CGRect bounds = self.redView.bounds;
    bounds.origin.y = -30;
    bounds.origin.x = -30;
    self.redView.bounds = bounds;
redView执行bounds偏移之后的显示.png

至此可以清楚的看到redView内容View已经偏移了,而其上的开关控件也随之一起偏移了,以为开关控件的父控件是redView,所以redView的内容View发生偏移,控件的位置也会发生偏移;

本章总结:
到底在什么时候选用frame,什么时候选用bounds了?我觉得如果只是单纯的修改控件的位置,那么我建议用frame.因为如果frame和bouns同时变,会导致后面运行的时候得不到自己想要的效果,这种问题是很难发现的,所以我建议注意变量唯一原则,这样更好的利于我们开发.
当然也有例外得控件,比如UIScrollView,UITableView,UIWebView他们就是个例外,他们的bouns可能会变化的比较频繁.如有兴趣,请关注下节文章bounds和frame的探究(三);

相关文章

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

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

  • bounds和frame的探究(二)

    上节主要说了,bounds和frame的定义,可能很抽象;这节主要介绍下,bounds和frame的使用方法和运行...

  • bounds和frame的探究(-)

    对于这两个属性相信有很多初学者一般都是迷糊的,甚至有一些有经验的iOS开发者对view的frame和bounds...

  • bounds、scrollView滚动原理

    bounds本质:修改内容原点位置。frame和bounds都是描述的一个矩形。frame:可视范围bounds:...

  • iOS 面试题目

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

  • iOS学习心得之:frame & bounds

    frame & bounds 浅显的理解的话 ** frame ** 代表元素的位置和大小.而 bounds 值...

  • iOS纪录

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

  • bounds

    当bounds大小不变时不会影响frame,但是当bounds大小改变时会影响frame原点和大小,bounds原...

  • iOS View的Frame和bounds深入探究

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

  • bounds和frame

    bounds的设置会改变frame,改变的计算方式是什么?

网友评论

      本文标题:bounds和frame的探究(二)

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