【发布时间】:2012-07-01 06:27:48
【问题描述】:
我通过 Interface Builder 添加并定位了一个 UIScrollView,作为导航控制器堆栈上的视图控制器的一部分。当我将一个新的视图控制器推送到堆栈上,然后弹出该新的视图控制器时,原始视图中的 UIScrollView 已经向上漂移了 52 个像素。
这只发生在设备上,而不是模拟器上。
任何想法可能导致这种情况?我可以通过调用 viewWillAppear/viewWillAppear 中的重新定位来追溯修复它,但由于某些原因,在极少数情况下,即使这不起作用,所以我真的很想解决根本原因。谢谢!
回应 cmets 的注意事项:我将导航栏隐藏在推送的视图控制器中,而不是原始视图控制器中。另请注意,原始视图控制器上还有其他几个 UIView 元素,但只有 UIScrollView 移动了位置。
更新:不在推送视图控制器中隐藏导航栏对 UIScrollView 问题没有影响 - 但感谢评论者的建议。
【问题讨论】:
-
你隐藏导航栏了吗?
-
导航控制器工具栏是否在带有滚动视图的视图上?如果不是,则添加然后删除该工具栏可能会导致滚动视图的移动。
-
mkral/Conor - 事实证明你们是对的;我将导航栏永久隐藏在原始视图控制器上,这是为什么? - 在导航控制器堆栈的后续推送/弹出中导致奇怪的重新定位。我通过将 UIScrollView 上的自动调整大小掩码设置为具有固定的上支柱来解决了这个问题。由于你们俩同时发表评论并引发了解决方案,因此无论你们中的哪一个先将您的评论放在答案中,我都会将其标记为已回答。再次感谢。
标签: ios uiscrollview positioning