iOS 开发 frame和Bounds的不同

简单的说

frame 指的是这个view在它superview的坐标系的坐标和大小.

bounds指这个view在它自己坐标系的坐标和大小


看官方的解释图片
iOS 开发 frame和Bounds的不同_第1张图片
boyXiong
iOS 开发 frame和Bounds的不同_第2张图片
这里写图片描述

通俗的说整个APP相当于一栋房子,而frame相当于窗户,窗户的位置是相对于墙壁来说的,但是 Bounds 相当于窗户里面要显示什么内容的位置

注意: 每个新建的 View bounds默认的 ( x , y ) 都是 ( 0 , 0 )

但是: 如果是有导航条,且默认的控制器的 UIView有子控件是继承 UIScrollView的会在调用了 viewDidLayoutSubviews这个方法中默认给这些子控件的内边距的顶部top增加导航条的高度也就是 64

经过代码测试的出的结果:

iOS 开发 frame和Bounds的不同_第3张图片
boyXiong

结果表明:很明显的 Bounds y 值和内边距的 top 值发生了改变
如何去掉这个功能,如果是代码创建的设置这个属性为 false就可以了

//Swift 写法
self.navigationController?.automaticallyAdjustsScrollViewInsets = false

如果是 User Interface 那么就去掉勾选
boyXiong
boyXiong

你可能感兴趣的:(iOS 开发 frame和Bounds的不同)