我的应用的视图层次结构非常简单:一个UINavigationController
包含一个UITableViewController
。导航控制器的导航条是不透明的,这会导致在导航的转变,这里看到的表视图的一些奇怪的行为插图:UIViewController:extendedLayoutIncludesOpaqueBars和滚动视图偏移量
要在UITableViewController
解决这个问题,我设置extendedLayoutIncludesOpaqueBars
到true
。这样做正确地扩展了导航栏下的视图,但以我不太明白的方式更改了表格视图contentOffset
的行为。将此属性设置为true
,表视图的Y值为contentOffset
报告它的偏移量应高于导航栏当前高度的偏移量(即滚动表视图1pt时,它会报告其y偏移量为-63pts)。
这让我觉得导航控制器自动管理滚动视图的contentInset
,就像它对半透明酒吧一样。但我看不到有任何证据表明滚动视图的内容插入设置为scrollViewDidScroll()
。即使automaticallyAdjustsScrollViewInsets
在表视图控制器上设置为false
,内容偏移量也不正确,所以它看起来与插入无关。
Apple's documentation about extendedLayoutIncludesOpaqueBars
没有提及滚动视图的内容偏移的行为。不幸的是,更改表格视图的contentInset
并不能解决此问题。
我试着改变表视图控制器的edgesForExtendedLayout
属性来强制它扩展而不影响滚动视图,但是看起来这个属性对于不透明的酒吧是无能为力的。
extendedLayoutIncludesOpaqueBars
是否存在一些隐藏的行为,使滚动视图的内容偏移量变大?或者这可能是一个错误?
感觉太容易了 - 这工作!我之前尝试过,但只能与extendedLayoutIncludesOpaqueBars设置为true一起使用。将不透明的酒吧属性保留为其默认的假,并且包括此效果很好。谢谢! –
@JohnWickham很高兴我可以帮忙,祝你有个愉快的日子:) – JoniVR