针对 iPhone 4s 和 5 上 xcode 5 中的背景图像问题的自定义 UIButton 对齐 - 添加约束不能解决问题

Posted

技术标签:

【中文标题】针对 iPhone 4s 和 5 上 xcode 5 中的背景图像问题的自定义 UIButton 对齐 - 添加约束不能解决问题【英文标题】:Custom UIButton alignment with respect to background image issues in xcode 5 on iPhone 4s and 5 - addition of constraints does not fix the issues 【发布时间】:2014-02-21 01:16:56 【问题描述】:

我在使用带有背景图像的 UIButton 时遇到问题。在模拟器和 iPhone 4s 和 5 中运行代码时单击按钮时,即使我按下按钮外的区域,也似乎选择了一个按钮

我有一个非常简单的 UI,其中包含一张图片,然后是另一张图片(登录),然后是 3 个自定义按钮(Facebook、电子邮件和注册),然后是最底部的一张图片。

注意 - 1.我让每个按钮的大小(宽度和高度)等于背景图像的大小。因此,如果背景图像是 100 x 20,则按钮将为 100 x 20。此外,我检查了 Autolayout 并将图像 AspectFill IB 中的 UIButton。

    我在 Superview 中有一个 UIView。所有 UI 元素(图像、带有背景图像的 UI 按钮)都放置在 UIView 中。

    我对 UIView 的宽度和高度有限制,因此它在 iPhone 4s 和 5 中保持不变。我也有限制以确保 UIView 水平和垂直居中。

    李>

    在视图中,我对每个 UI 元素(图像和带有图像的 UI 按钮)的宽度和高度都有限制,因此它在 iPhone 4s 和 5 中保持不变。我对每个元素的 Y 位置也有限制。所以,我有一个约束,即第一张图片距离 UIView 的顶线 X 距离。然后,我有一个约束,即第一个按钮距顶部图像的 Y 距离。然后,我有一个约束,即第二个按钮距其上方的第一个按钮 Z 距离。然后,我有一个约束,即最底部的标签是距 UIView 底线的距离。而且我有一个约束,即第三个按钮在最底部标签上方的 B 距离处。这个想法是确保所有这些元素都在 iPhone 4s 和 iPhone 5 的屏幕中心(因为 UIView 将移动到中心由于它的约束和其中的 UI 元素将一起移动到中心因为它们的约束是相对于 UIView 的)。

该项目支持 ios 6、6.1 和 7。

我开始使用 iPhone 4s 进行开发和测试。按钮似乎工作正常。然后我连接 iPhone 5,在编译时,我发现按钮的可点击区域和按钮的背景图像不再重叠。我重新连接了 iPhone 4s,清理了项目,重新构建并运行它(在模拟器和设备上),发现按钮不再起作用。单击按钮外部的区域时,按钮被选中。同样奇怪的是,在某些情况下,当我触摸一个按钮(即 Facebook)时,它下方的按钮(即电子邮件)被选中。

总之,它在 iPhone 4s 上运行良好。在已连接的 iPhone 5 上,按钮似乎停止正常工作。重新连接 iPhone 4s 时,按钮不再正常工作。我尝试删除所有 UI 元素并重新启动构建(在同一故事板中的同一视图控制器中),尝试在同一故事板中创建一个全新的视图控制器,但没有运气。我不得不重新开始这个项目才能让它在 iPhone 4s 中运行。所以,对我来说,似乎有些东西正在破坏故事板,以至于无法再次修复!

我以灰色突出显示 UIView 供您参考。

请查看图片以供参考 - UIView 的基本屏幕显示为灰色且无触摸

UIView 的基本屏幕显示为灰色并尝试单击 Facebook 按钮 -

UIView 的基本屏幕显示为灰色,并尝试点击注册按钮下方的不可点击图片 -

不确定是否有人遇到过这样的问题但是,我很想了解它并立即修复它,因为它是一个反复出现的问题,并且我不想在我的大部分项目完成时面对它,因为它似乎完全破坏了故事板,让我重新开始这个项目!

请帮忙。

【问题讨论】:

【参考方案1】:

您是否尝试在所有按钮上调用 sizeToFit 方法?

【讨论】:

以上是关于针对 iPhone 4s 和 5 上 xcode 5 中的背景图像问题的自定义 UIButton 对齐 - 添加约束不能解决问题的主要内容,如果未能解决你的问题,请参考以下文章

无法在越狱的 iphone 4s 5.1.1 上打开 xcode 4.5.1 应用程序

Xcode安全区域故障与iPhone SE和4s

如何处理 iPhone 4s、5 和 6 的屏幕尺寸,并使所有内容在所有设备上看起来都一样

谁能告诉我为啥 Xcode 的新 beta 版不能在 iphone 4/4s 上模拟 io7 [关闭]

无法在 Xcode 中为 iPhone 4s Simulator 构建 Flutter 应用程序

如何使用 iOS 6 sdk 为 iPhone 4s 或 iPhone 4 制作视图控制器?