IOS 深入剖析 bounds 和 frame
来源:互联网 发布:关于云计算的图片 编辑:程序博客网 时间:2024/06/07 05:04
frame
frame 是每个 view 必备的属性,代表的是当前视图的位置和大小,如果没有设置该属性,当前视图是看不到的。
位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,IOS 中有他特有的坐标系:
- 在 IOS 坐标系中以左上角为坐标原点,往右为正 X 方向,往下为正 Y 方向;
- frame 中的位置是以父视图的坐标系为你标准来确定当前视图的位置;
- 同样的默认情况下,本视图的左上角就是子视图的坐标原点;
- 更改 frame 中位置,则当前视图的位置会发生改变;
- 更改 frame 的大小,则当前视图以当前视图的左上角为基准进行大小的修改。
bounds
bounds 是每个 View 都有的属性,这个属性我们一般不进行设置,他同样代表位置和大小;
每个视图都有自己的坐标系,且这个坐标系默认以自身的左上角为坐标原点,所有子视图以这个坐标系的原点为基准点;
bounds 的位置代表的是子视图看待当前视图左上角的位置,bounds 的大小代表当前视图的大小;
更改 bounds 中的位置对于当前视图没有影响,相当于更改了当前视图的坐标系,对于子视图来说当前视图的左上角已经不再是(0,0), 而是改变后的坐标,坐标系改了,那么所有子视图的位置也会跟着改变;
更改 bounds 的大小,bounds 的大小代表当前视图的长和宽,修改长宽后,中心点继续保持不变, 长宽进行改变;通过 bounds 修改长宽看起来就像是以中心点为基准点对长宽两边同时进行缩放;
矩形框和内容的理解
矩形框(当前视图):即控件自身显示的位置和尺寸;
内容(当前视图的子视图):控件内部的东西;
概括来说,frame以“父控件”“内容”的左上角为坐标原点,计算出的“控件自己”“矩形框”的尺寸;
bounds以“控件自己”“内容“的左上角为坐标原点,计算出的”控件自己“”矩形框“的位置和尺寸;
有如下总结:
frame.size == bounds.size;scrollView.bounds.origin == scrollView.contentOffset;
下面以实例演示:
点击屏幕后:
也许会奇怪,为何设置了 redView 的 bounds 为(-50,-50),开关控件反而向右下方移动了?
这里作出解释:redView 的 bounds 发生了改变,则其子视图(开关控件)的原点发生了改变,而 redView 的 frame 是固定不动的,即 redView 的位置和尺寸是不会变化的,所以唯有子控件(开关控件)的位置发生改变,即内容发生偏移,相当于矩形框相对内容原点偏移(-50,-50)。
最后,用一个图总结一下 bounds 与 frame 的区别与意义:
- IOS 深入剖析 bounds 和 frame
- ios bounds 和 frame
- ios frame和bounds
- frame 和 bounds IOS
- ios-frame和bounds
- 深入理解frame和bounds
- iOS 中 frame、center 和bounds 的深入了解
- iOS frame和Bounds 以及frame和bounds区别
- iOS 一一 frame和Bounds 以及frame和bounds区别
- iOS 中frame 和 bounds 的区别
- ios视图frame和bounds的对比
- IOS View中的frame,bounds和center
- iOS中frame和bounds的区别
- iOS Frame和bounds的区别
- iOS view 之 frame 和 bounds
- ios视图frame和bounds的对比
- iOS View frame和bounds的区别
- iOS---frame和bounds的区别
- GYM 100712 C.Street Lamps(贪心)
- Python学习笔记(六)--面向对象编程
- 2017.3.13
- Mac下android studio配置
- mysql的sql语句特殊处理语句集合
- IOS 深入剖析 bounds 和 frame
- JAVA设计模式初探之组合模式
- Java线程之Timer
- 【MySQL】sync_binlog innodb_flush_log_at_trx_commit 浅析
- SVM的对偶问题与核方法
- Windows下安装Python常用工具包(numpy、scipy、scikit-learn)
- 百度首页推荐【政协委员:建立“国家课题”,打造美丽新三峡】
- Android知识导图-View的手势分发
- 多线程的面试题迅雷