【发布时间】:2014-08-10 02:23:11
【问题描述】:
我有一个容器控制器,它在 lop 布局指南的正下方显示一个数据栏。
我希望此容器控制器的子控制器能够在此栏以及任何导航栏和状态栏后面滚动。然而,当 UIKit 自动调整控制器的滚动视图插图时,它似乎只考虑顶部布局指南的长度。
有什么办法可以说滚动视图插图应该是顶部布局指南+我的栏的高度?我知道人们会建议我设置automaticallyAdjustsScrollViewInsets = NO,但我已经尝试过了。问题是当 UIKit 设置内容插入时我似乎无法准确复制,所以我得到了各种奇怪的边缘情况,这些情况会破坏插入。最突出的例子是 UITableViewController ,因为我手动设置了内容插图,所以刷新控件有时不在正确的位置,当我结束刷新滚动视图的插图时,设置为 { 0, 0 } 所以内容隐藏在后面我的栏和导航栏。
更新:所有的魔法似乎都在 UIViewController 上的 _setNavigationControllerContentInsetAdjustment 和 UINavigationController 上的 _computeAndApplyScrollContentInsetDeltaForViewController 方法中。
似乎只有导航控制器会尝试调整滚动视图的插图,它会根据顶部和底部的布局指南计算插图。它将这些插图传递给视图控制器,然后从滚动视图中添加/减去插图,并考虑之前设置的导航内容插图。这确保了如果其他人从现在到导航控制器上次修改插图时修改了内容插图,他们不会覆盖中间更改。
【问题讨论】:
标签: ios uiscrollview uikit