iOS开发frame, contentSize, contentOffset, contentInset 区别联系浅析
2016-05-29 21:12
447 查看
1. 概述
iOS开发中,必然会涉及到布局相关问题,frame,bounds,contenSize,contentOffset,contentInset这几个布局相关概念让许多初学者感到困惑。虽然初步了解这几个概念,即可完成大部分界面的布局,但布局较复杂页面时就有点力不从心了。2. 概念解析
2.1 frame
frame是一个矩形区域,反映当前view相对于它的superview的位置关系,左上角的点(frame.origin)的x,y轴值确定了矩形区域的位置(frame.origin.x, frame.origin.y);宽(frame.size.width)和高(frame.size.height)确定了矩形的面积。2.2 bounds
bounds与frame类似,同样是一个矩形区域,有与frame一样的属性,但与frame以其父视图为参考不同的是bounds以当前视图为参考,反映的是当前view自己的位置关系。frame和bound都可以使同一个视图(控件)在同一位置。但根据实际情况灵活使用frame和bounds可以使代码逻辑简化,降低布局的相互依赖。2.3 contentSize
contentSize是UIScrollView和继承于UIScrollView的子控件的属性,contentSize是确定UIScrollView上contentView宽(contentSize.width)和高(conteSize.height)的属性。UIScrollView可以看成是一个两层的复合视图,如图1所示,上层是固定不动的UIScrollView,下层是可以滑动的contenView,contenView的尺寸可以大于上层的UIScrollView。
图1 UIScrollView层次关系
2.4 contentOffset
contentOffset是UIScrollView和继承于UIScrollView的子控件的属性,contentOffset确定的是UIScrollView的顶点(左上角点)值相对于其父类视图的顶点值(即frame.origin)的距离。2.5 contentInset
contentInset是UIScrollView和继承于UIScrollView的子控件的属性,contentInset确定的是contenView上下左右相对于UIScrollView扩展出来的区域大小。contentInset是UIEdgeInsets类型的,默认值为UIEdgeInsetsZero。3. 总结
frame,bounds,contenSize,contentOffset,contentInset是布局中常用的属性,灵活使用会大大提升开发效率、布局的灵活性和代码的逻辑性,涉及属性的总结如图2所示。图2 布局相关属性之间关系
注意:图中contentInset的值为负值
转载自:http://www.jianshu.com/p/c36d3fb3c833
相关文章推荐
- iOS离屏渲染优化
- iOS-OC为什么需要重写setter或getter方法?
- iOS 作为Central蓝牙连接外围(下)
- 关于iOS开发的学习资料
- IOS学习笔记——基础界面 (一)
- iOS微博项目(七)发微博和定位
- IOS开发:按钮控件
- iOS性能优化
- iOS 友盟(UM)统计操作笔记
- IOS TextField设置大全
- 蓝牙4.0BLE cc2540 cc2541 ios OAD教程(空中更新固件)[原创,多图]
- iOS开发证书的整理
- 在xib和storyBoard上设置layer属性的两种方法
- iOS计步器功能实现之CoreMotion如何读取数据(二)
- 【iOS】更新 CocoaPods 后 Podfile 报错
- iOS-OC中使用KVC转换JSON数据(笔记)
- iOS学习- 05 Tab Bar Controller
- iOS中self.xxx 和 _xxx 下划线的区别
- IOS Project缺少Framework的情况汇总
- iOS-绑定key与属性名方法