作者: boyXiong
源地址: http://blog.csdn.net/boyxiong/article/details/49151279
简单的说
frame 指的是这个
view在它
superview的坐标系的坐标和大小.
bounds指这个
view在它自己坐标系的坐标和大小
看官方的解释图片
通俗的说整个APP相当于一栋房子,而frame相当于窗户,窗户的位置是相对于墙壁来说的,但是Bounds 相当于窗户里面要显示什么内容的位置
注意: 每个新建的View的bounds默认的 ( x , y ) 都是 ( 0 , 0 )
但是:如果是有导航条,且默认的控制器的UIView有子控件是继承UIScrollView的会在调用了viewDidLayoutSubviews这个方法中默认给这些子控件的内边距的顶部top增加导航条的高度也就是64
经过代码测试的出的结果:
结果表明:很明显的Bounds的 y 值和内边距的 top 值发生了改变
如何去掉这个功能,如果是代码创建的设置这个属性为false就可以了
//Swift
self.navigationController?.automaticallyAdjustsScrollViewInsets = false
如果是 User Interface 那么就去掉勾选
本文详细解析了iOS应用开发中视图的frame和bounds概念,通过生动的比喻帮助理解两者区别,并介绍了如何调整UIScrollView内边距的问题。

340

被折叠的 条评论
为什么被折叠?



