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

时间:2014-02-21 01:16:57

标签: ios iphone objective-c uiview uibutton

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

我有一个非常简单的带图像的用户界面,然后是另一个图像(登录),接着是3个自定义按钮(Facebook,电子邮件和注册)以及最后一个图像。

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

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

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

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

  4. 该项目支持iOS 6,6.1和7。

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

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

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

    请参阅图片以供参考 - UIView的基本屏幕变灰并且没有触摸 Basic screen with UIView grayed out and no touch

    基本屏幕,UIView变灰并试图点击Facebook按钮 - enter image description here

    UIView的基本屏幕显示为灰色,并尝试单击“注册”按钮下方的不可点击图像 - enter image description here

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

    请帮忙。

1 个答案:

答案 0 :(得分:0)

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