iOS 一一 frame和Bounds 以及frame和bounds区别
2017-11-09 12:51
239 查看
文章出处: http://www.jianshu.com/p/f972e0db785a
iOS frame和Bounds 以及frame和bounds区别
前言
最近和大家交流的时候发现很多初学者,当然也有一些有经验的iOS开发者对view的frame和bounds了解的都不是很透彻;尤其是bounds很多朋友都糊了,bounds确实比较难理解,今天就给大家说说frame和bounds。frame
frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,
当前视图是看不到的。
位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有的坐标系,如下图:
iOS坐标系
在iOS坐标系中以左上角为坐标原点,往
右为X正方向,往
下是Y正方向
frame中的位置是以
父视图的坐标系为标准来确定
当前视图的位置
同样的默认情况下,本视图的
左上角就是
子视图的坐标
原点
更改frame中位置,则当前视图的位置会发生改变
更改frame的大小,则当前视图以
当前视图的
左上角为基准的进行大小的修改
bounds
bounds是每个View都有的属性,这个属性我们一般不进行设置,他同样代表位置和大小;每个视图都有自己的坐标系,且这个坐标系默认以自身的
左上角为坐标原点,所有子视图以这个坐标系的
原点为基准点。
bounds的位置代表的是
子视图看待当前视图
左上角的位置;bounds的大小代表当前视图的大小;
更改bounds中的位置对于当前视图没有影响,相当于更改了当前视图的坐标系,对于子视图来说当前视图的
左上角已经不再是(0,0), 而是改变后的坐标,坐标系改了,那么所有
子视图的
位置也会跟着改变
更改bounds的大小,bounds的大小代表当前视图的长和宽,修改长宽后,
中心点继续保持不变, 长宽进行改变;通过bounds修改长宽看起来就像是以中心点为基准点对长宽两边同时进行缩放;
frame和bounds
有如下图:iOS bounds
View A是最顶层视图, 因此他的信息如下:
frame
origin:0, 0
size :550 * 400
bounds
origin:0, 0
size 550 * 400
因为是View A是
顶层视图,所以其实相当于
覆盖在框架上,因此位置从父视图的(0, 0)开始,大小为550*400
默认情况下,本视图的
坐标系是没有发生改变的即当前视图(view A)的
左上角就是所有
子视图的原点,大小就是当前视图的大小.
View B是View A的子视图,因此他的信息如下:
frame
origin:200, 100
size :200 * 250
bounds
origin:0, 0
size :200 * 250
因为View B是View A的子视图,所以View B的frame位置需要以
View A的左上角为参照,因此位置为(200, 100), 大小为200*250
bounds在默认情况下本视图的坐标系是没有发生改变的即当前视图(view B)的
左上角就是当前视图所有子视图的原点.
上面这种是普通的情况,也就是没有更改bounds的时候,下面我们来看更改bounds的例子, 如下图:
iOS bounds
在上一个例子的基础上,我们更改了view A的bounds后,view B看待View A的左上角就已经发生改变了;这个时候我们看待View A的左上角就不是坐标原点了,而是我们通过bounds设置后的坐标,如图也就是(0, 100);
在View B的frame没有保存不变的基础上,我们View B的位置向上移动了100
在第一例的基础上,更改了bounds中X后,效果图如下:
iOS bounds 3
总结
1、frame不管对于位置还是大小,改变的都是自己本身
2、frame的位置是以
父视图的坐标系为参照,从而确定当前视图在父视图中的位置
3、frame的大小改变时,当前视图的
左上角位置不会发生改变,只是
大小发生改变
2、bounds改变位置时,改变的是
子视图的位置,
自身没有影响;其实就是改变了本身的坐标系原点,默认本身坐标系的原点是左上角
3、bounds的大小改变时,当前视图的
中心点不会发生改变,当前视图的
大小发生改变,看起来效果就想
缩放一样
相关文章推荐
- iOS开发中frame与Bounds的区别,以及几何方法的小结
- 【iOS】Frame和Bounds的区别以及获取绝对坐标的办法
- IOS学习之深入探究frame和bounds的区别以及setbounds使用
- 【iOS】Frame和Bounds的区别以及获取绝对坐标的办法
- 深入探究frame和bounds的区别以及setbounds使用
- (转载)ios view的frame和bounds之区别(位置和大小)
- iOS开发 frame 与 bounds 的区别与关系 转自隔叶黄莺
- iOS开发中,bounds和frame的区别。iOS开发结构体属性值查看和控制器各种尺寸的获取小技巧。
- 【iOS界面布局】 frame 与 bounds 的区别与关系
- ios view的frame和bounds之区别(位置和大小)
- ios中frame与bounds区别
- ios view的frame和bounds之区别(位置和大小)
- iOS View的Frame和bounds之区别,setbounds使用
- iOS view的frame和bounds之区别(位置和大小)
- iOS view的frame和bounds的区别
- ios view的frame和bounds之区别(位置和大小)
- IOS 视图View的bounds和Frame区别
- iOS开发总结之 view的frame、center和和view的bounds之间的区别
- ios view的frame和bounds之区别(位置和大小)
- IOS frame与bounds的区别