VC对ScrollView的调整

automaticallyAdjustsScrollViewInsets

  • automaticallyAdjustsScrollViewInsets是ViewController的一个属性,指示VIewController是否需要自动调整ScrollViewInsets。
  • 默认值为YES,允许ViewController自动调整ScrollViewInsets ##VC对ScrollView的调整
  • 当automaticallyAdjustsScrollViewInsets值为YES时,viewController根据当前view中statusBar,navigaionTionBar,toolBar或者toolBar来自动调整scrollView的的contentInset和ContentOffset。使得scrollView的内容不会被这些Bar遮挡
  • 具体通过_setNavigationControllerContentInsetAdjustment相关函数实现  ##示例
    • 在一个由TabBarController导出的被Navigation封装的VC中拖一个tableview 铺满VC的View,不会被导航挡住64像素的高度。采用KVO观察
  • contentInset的top增加了statusBar高度+NavigationBar高度。buttom增加了TabBar的高度
  • contentOffset也跟着调整了-64 ###隐藏NavigationBar时
  • contentInset的top增加了statusBar的高度。buttom增加了TabBar的高度
  • contentOffset也跟着调整了-20 ##总结
  • 不管是否加在rootView上,子视图ScrollView都会被调整
  • 当ViewController的view hierachy中有ScrollView的时候,subView中index最小的scroView将会被调整。
  • 及时原先禁止了scrollView在某个方向的滚动,在view controller调整后,很有可能该方向还是能滚动 ###示例 view hierachy中有上下两个scrollview,他们都是view1的直接subview
    1. 当先把底部的scrollView加入到view1的 subView中时,调整底部scrollView
    2. 当先把顶部的scrollView加入到view1的subView中时,调整顶部 scrollView
    3. 不管是何种情况,顶部的statusBar都没有被遮挡 ###VC调整影响scrollview的展示的解决方案 当view hierarchy中有多个scrollView,VC对contentInset的调整影响展示效果时有如下解决方案
  • 设置automaticallyAdjustsScrollViewInsets,禁止VC对contentInset调整
  • 将包含多个scrollView的hierarchy封装在一个scrollView中(姑且称之为containerScrollView)。那么containerScrollView将会被调整,从而保证hierarchy正常显示

VC对ScrollView的调整的更多相关文章

  1. VC++ 两种动态调整控件位置的方法(CButton设置为Radio形式会出现错误)

    ((CButton*)GetDlgItem(IDC_CHECK1))->MoveWindow(, cy - , , ); ((CButton*)GetDlgItem(IDC_CHECK2))-& ...

  2. ScrollView设置了ContentSize高度为0,仍然能滑动的问题

    你有没有遇到过这样的情况: 对于ScrollView的不能上下滑动,设置了以下代码: _scrollViewTitle=[[UIScrollView alloc]initWithFrame:CGRec ...

  3. VC++2010下编译STLport,Boost

    VC++2010下编译STLport,Boost 最近在想向Boost转移,努力掌握Boost代码的过程中, STLport版本:5.2.1 Boost版本:1.4.6.1 (1.4.7.0也OK) ...

  4. android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)

    本来是想做一个显示文字信息的,当文字很多时View的高度不能超过一个固定的值,当文字很少时View的高度小于那个固定值时,按View的高度显示.因为ScrollView没有maxHeight,无法满足 ...

  5. NGUI学习笔记(六):ScrollView、Grid和Table

    下面我们来看看游戏UI开发中比较核心的开发,我称为列表开发,比如背包和各种形式不一的列表等,下面我们来看几个具体的样例:   基本上就是一些重复的制作好的多个UI控件进行排列,同时可以支持滚动,当然, ...

  6. 转:RTMPdump使用相关

    在FFMPEG中使用libRTMP的经验 FFMPEG在编译的时候可以选择支持RTMP的类库libRTMP.这样ffmpeg就可以支持rtmp://, rtmpt://, rtmpe://, rtmp ...

  7. iOS开发——开发必备OC篇&UITableView设置界面完整封装(三)

    UITableView设置界面完整封装(三) 简单MVC实现UITableView设置界面之界面跳转 创建一个需要调整的对应的控制器 在需要调整的类型模型中创建对应的属性用来实现调整类型控制器的设置 ...

  8. 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)

    http://blog.csdn.net/leixiaohua1020/article/details/25430449 本文介绍一个最简单的基于FFMPEG的音频编码器.该编码器实现了PCM音频采样 ...

  9. 最简单的基于FFmpeg的推流器(以推送RTMP为例)

    ===================================================== 最简单的基于FFmpeg的推流器系列文章列表: <最简单的基于FFmpeg的推流器(以 ...

随机推荐

  1. 再一个客户端设置多个git账号

    步骤一:用ssh-keygen命令生成一组新的id_rsa_new和id_rsa_new.pub. ssh-keygen -t rsa -C "new email" 平时我们都是直 ...

  2. BitCoin - BlockChain

    BitCoin 比特币, 参考: BlockChain 区块链, 参考: 参考

  3. 初学C++之自定义类型名简化

    说明:本人使用的是vc++ IDE:vs2013 我在自定义一些类时,有时会取一些很长的名字,但是这不利于使用,这个时候就可以使用类型名简化. class MathAddBBBB { }; using ...

  4. 【Asphyre引擎】冒险岛换装Demo升级到最新版PXL

    demo代码  (不包含Sprite代码,要Sprite代码请下载之前那个doudou的demo)

  5. Git远程和分支管理

    一.远程       Git是分布式版本控制系统,最重要的优点就是远程仓库托管代码.不用自己搭建一个服务器,在github上面注册一个账户就可免费获取远程仓库.      首先需要先在github上面 ...

  6. Use a cache

    To create high-performance systems, sometimes you need to cache data. Play has a cache library and w ...

  7. 使用 github + jekyll 搭建个人博客

    github + jekyll 本地写markdown,然后push到github,就成了博客 其实我一早就知道这两者可以搭建个人博客,因为本人有个很好的习惯——每天都会去看看一些热门文章,了解行业最 ...

  8. DOM事件探秘

    说到DOM事件,就不得不说以下几点: 1 事件流 事件流:描述的是从页面中接受事件的顺序 事件流分为事件冒泡流和事件捕获流.那么什么是事件冒泡,什么是事件捕获呢? 事件冒泡:即事件最开始由最具体的元素 ...

  9. IOS5中的Safari不兼容Javascript中的Date问题,做下笔录吧!奶奶的,折腾我半天!

    在做Mobile终端的Website开发中,我遇到一个很懊恼的问题. 在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10 ...

  10. Powershell 学习笔记【持续更新】

    1. 判断一个对象是不是空可以用 $null来比较 2. 判断一个字符串是不是空的: [string]::IsNullOrEmpty(...) 3. 在powershell中把结果输出为一个CSV格式 ...