iOS UI 元素在标签栏控制器中来回切换后被拉伸
Posted
技术标签:
【中文标题】iOS UI 元素在标签栏控制器中来回切换后被拉伸【英文标题】:iOS UI elements are stretched after switching back and forth in tab bar controller 【发布时间】:2014-01-23 08:34:18 【问题描述】:我在一个 ios 应用程序的第一个视图中有几个 UI 元素在三视图标签栏控制器中。
当我运行该应用程序时,第一个视图看起来以某种方式显示,但随后我切换到另一个视图,然后返回到第一个视图 - 第一个视图被拉伸(主要似乎是垂直拉伸)。
我认为这与约束有关,但我不确定。
什么可能导致这个问题?
谢谢!
【问题讨论】:
如果您需要帮助,您需要提供一些代码。这里没有足够的信息。也就是说,我敢打赌,问题出在您的viewWillAppear:
或 viewDidAppear:
方法中。
我现在注意到两件事:1. 它只发生在 iPhone5 上(不是更早的)。 2. 如果我打开通讯录或联系人(我的应用程序中需要的功能),我会看到视图拉伸回其默认大小。然后在我切换标签时再次拉伸。
会不会是使用iOS7时底部布局指南不固定?
【参考方案1】:
当您看到事物随机变化时,这通常意味着您的布局不明确。这意味着您没有为自动布局提供足够的信息来确切知道您想要什么。例如,您是否设置了水平约束?
您可以通过设置断点并在调试器中运行来检查这一点
po [[UIWindow keyWindow] _autolayoutTrace]
此外,如果您发布您的限制条件,有人可能会更好地帮助您。
【讨论】:
我已经清除了所有不明确的布局。只是非常不清楚为什么 UIViewImage 不与顶部和底部布局指南保持连接。 清除了不明确的布局后是否仍然表现得很奇怪?没有细节很难回答你的问题。发布您的代码和 autolayoutTrace,也许有人可以帮助您。 我有踪迹,但我应该寻找什么? 我不能将图像限制在“底部布局指南”中吗?我试图让背景不被底栏遮挡,但自动修复自动布局会消除此约束。它甚至不会在警告中显示为模棱两可。 显然当我从其他标签栏项目切换 bask 时 self.bottomLayoutGuide.length 更改为 0,而当我从通讯簿或联系人视图返回时不会发生。这是什么原因造成的?【参考方案2】:这是由于 iOS 中的一个 bug,其中 bottomLayoutGuide 被错误地设置为 0。
UIViews ending up beneath tab bar
【讨论】:
以上是关于iOS UI 元素在标签栏控制器中来回切换后被拉伸的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发中标签控制器的使用——UITabBarController