在控制器之间移动时,UIToolbar 被推离屏幕

Posted

技术标签:

【中文标题】在控制器之间移动时,UIToolbar 被推离屏幕【英文标题】:UIToolbar gets pushed off screen when moving between controllers 【发布时间】:2013-09-04 18:57:03 【问题描述】:

好的,这似乎不是编码问题,因为它更多地与故事板/布局有关。我已经在 *** 和其他地方搜索了可能的解决方案,但从我看到的一些响应来看,这可能是 ios6 的一个错误。虽然我想知道是否有其他人遇到过这个问题:

基本上,我有一个视图控制器,顶部有一个导航栏,底部有一个工具栏。占据整个屏幕的是一个 UIImage。问题是当我进入这个视图控制器时,有时工具栏在底部,有时它看起来像是被 UIImage 推开。如果我稍微缩小 UIImage 使其不接触工具栏,则可以完全解决问题,但是这会在工具栏和 UIImage 之间留下空白。有没有其他人经历过这种情况?

编辑:我找到了解决方法。基本上,我只是选择了 UIImage 和 UIToolbar 并固定了它们各自的高度以保持它们不变。不过,我承认这并不能真正解释我遇到的问题。

【问题讨论】:

“有时工具栏位于底部,有时它看起来像是被 UIImage 推开”——在什么情况下它有时工作而不是其他情况?它看起来是随机的吗? 是的,它似乎是随机的。也就是说,如果我按下返回按钮,然后按下返回视图控制器的按钮足够多次,我可以模拟这两种结果。 我对此进行了实验,但无法重现您的结果。我怀疑这是一个错误或随机的事情。如果您可以发布故事板的图片(在此处或某个共享站点),那将很有帮助。此外,您应该尝试更多尝试,看看视图之间的一组特定转换是否能可靠地重现不良效果。 我找到了一个解决方法(在上面添加了一个编辑)。只是出于好奇,当您进行实验时,您是否使用了比 UIImage 框架更大的图像?我的比框架大,所以它们会调整大小。当我使用较小的图像时,没有问题。但是,这并不能解释为什么有时 UIImage 会展开到工具栏之外,而有时却没有。 是的,我使用的图像比图像视图大。 【参考方案1】:

问题是由每个元素的约束设置引起的。在尺寸检查器下,您可以调整这些设置。基本上你想要的是 NavBar 在屏幕顶部是静态的,ToolBar 在屏幕底部是静态的,ImageView 在它们之间伸展。

另一个原因可能是您使用了 -initWithImage,因为这将调整框架的大小以匹配指定图像的大小。如果图像太高几个像素,这可能会将工具栏推离屏幕。这种情况下的解决方案是在 UIImageView 上使用 -initWithFrame ,然后设置 image 属性。

【讨论】:

我认为你对约束是正确的。我如何将顶部空间更改为导航栏?看起来它已经为工具栏设置了底部空间,这很好。目前,top space设置为superview。 我一直在尝试约束,但无法创建不同的结果。奇怪的是,UIToolbar 大约有一半的时间可以正常工作(没有被图像推迟),这让我想知道这是否不仅仅是 Apple 的一个巨大错误。

以上是关于在控制器之间移动时,UIToolbar 被推离屏幕的主要内容,如果未能解决你的问题,请参考以下文章

线性布局或滚动视图被推离屏幕

如何阻止翻转效果将其他元素推离它?

如何在列表视图下方放置固定按钮?

当一个新的视图控制器被推送到导航控制器时,将一个子视图保持在屏幕上的同一位置?

垂直空间约束驱动子视图离屏

不遵守自动布局底部间距约束