iOS7上的按钮背景被挤压了,而iOS6上则没有问题。

12

我刚刚升级到XCode 5。我的应用程序中的按钮在IB和iOS 6设备上看起来很好,但在iOS 7设备上却像这样(它们应该覆盖整个黑色空间):

输入图像描述

我有非视网膜/视网膜的图像。

我不知道该怎么办,因为我没有改变任何代码或IB。

编辑:

现在我发现,如果我将按钮类型从自定义更改为系统并设置其背景而不是图像,则可以获得正确的大小,但我会得到一些奇怪的阴影。

编辑2:

现在我将按钮的色调颜色设置为“透明色”,一切似乎都没问题(阴影消失了)。仍然不确定与iOS 7相关的内容发生了什么变化。


在iOS 7中,导航栏默认是半透明的,这意味着self.view的框架与6中的不同。 - Joseph Lin
您是在代码中设置按钮还是在xib/storyboard中设置的?如果是代码,请发布。 - RyanG
在 IB 中,如果我将按钮设置为选中状态,一切看起来都很正常。 - DixieFlatline
你在xib中使用的屏幕尺寸是多少? - Niru Mukund Shah
2个回答

4

人机界面指南明确阐述了系统样式的UIButtons的默认工作方式。它解释了一个系统按钮:

  • 默认情况下没有边框或背景外观...
  • 支持自定义装饰,例如边框或背景图像(要添加自定义外观,请使用类型为UIButtonTypeCustom的按钮并提供自定义背景图像)。

然而,UIButton HIG页面提供了更多信息,具体来说:

如果您没有显式设置色调颜色,则该按钮将继承其父视图的色调颜色。

这就解释了为什么将按钮更改为UIButtonTypeSystem后,您突然需要重置(删除)色调颜色。在iOS7中,(几乎)所有东西都有一种色调颜色。现在,在iOS7中,UIButtonTypeSystem更适合您的需求(如果需要手动更改很多内容,可能会有点麻烦...)
至于为什么按钮在iOS7中缩小...我同意@Joseph的评论,关于iOS7中UIViewController视图框架。可能您对按钮大小有一些设置关系,当ViewController的框架在iOS7中更改时,它们不太友好(请参见this SO question进行讨论)。如建议所述,请查看iOS7 transition guide,以查看您在IB中执行的任何操作是否违反了新的iOS7规则。

0

[button setBackgroundColor:[UIColor colorWithRed:(255.0/255.0) green:(180.0/255.0)];

这是设置背景的正确代码,如果你使用图片,则使用

[UIImage imageNamed:@".png"];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接