添加UIScrollView,需注意的事项

        刚刚写了一个demo,自定义了一个UIView,里面添加了一个UIScrollView,UIScrollView的子控件是UIButton,Button的y轴是从Scrollview的0开始的,然后我设置了Scrollview的contentSize的高度为Scrollview的高度,这样得出的效果是支持横向滑动,竖向静止。但是运行之后,得到的实际效果却是按钮往下移动了64个像素,而整个Scrollview还支持竖向滑动,看到这个效果,我还以为是自己的代码出问题了,赶紧检查一下坐标的设置,然而并没有什么毛病,这就奇怪了,为什么会有这样的情况出现呢?

        思索了半天,不知何故,就厚着脸皮去问了下两位污神同事,结果他们跟我说只要设置一下UIViewController的automaticallyAdjustsScrollViewInsets这个属性为NO就可以了。当然,我并不知道这个属性是干什么用的,于是问了下度娘,解释大致是:如果UIViewController里面最上边的控件是UIScrollView或其子类View,那么它会自动设置相应的内边距,这样就可以让Scrollview占据整个视图,又不会被导航栏遮盖,所以按钮才会往下偏移了64个像素。我设置完这个属性之后,效果真的出来了,果然iOS的坑不少。

        本着探索的精神,我在UIViewController的顶部分别添加了一个UIImageView和UIScrollView测试,将上述的属性去掉,果然效果也出来了,由此可见这个属性的使用时机就如度娘所说,当视图顶部只有一个控件,且控件是UIScrollView及其子类时,需要将他的内边距属性设置为NO,这样就不会出现控件往下移动的奇葩现象了。PS:刚试了一下,其他控件添加在Scrollview的底部,不设置automaticallyAdjustsScrollViewInsets为NO,Scrollview的子控件还是会往下偏移64个像素的,所以最关键的问题出现在Scrollview的位置是在哪里,若顶部无其他控件,则需要设置内边距属性,否则不设置也不会有问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 解决添加到ScrollView上的UITableView控件自动向下偏移64像素的问题 首先理解1:即使UITab...
    CoderZb阅读 10,685评论 1 8
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,040评论 3 119
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,837评论 8 265
  • 贾顺顺是在15岁的时候认识杨光的。认识的时候,贾顺顺就知道,杨光其实是个坏孩子。 凌晨两点半,贾顺顺...
    舍离断阅读 1,644评论 0 0
  • 今天早上我在洗盆,孙姐在洗桶,悟源法师问孙姐,阿孙,今天有没有手杆面,法师最喜欢吃手杆面了。阿孙没回答,我说,中...
    秀发飘飘阅读 1,462评论 0 0