带背景图像的按钮-iPhone 5大小调整问题

带背景图像的按钮-iPhone 5大小调整问题,iphone,xcode,uibutton,background-image,autoresize,Iphone,Xcode,Uibutton,Background Image,Autoresize,我一直在这里和谷歌上到处寻找,但我仍然有一个奇怪的问题,我想不出来。我有一个应用程序图片,下面有4个应用了背景图像的UI按钮: 当我在iPhone 5上调整/运行时,顶部按钮会以一种非常奇怪的方式调整大小: 如何让所有UIButton的大小与iPhone 5相同?可能吗?我需要使用不同的方法吗 我真的希望这不是重复,但我完全被难住了。如果我在UIView的其他位置更改UIButtons,则会出现另一个按钮,或者会显示奇怪的间距。。。。我不明白。谢谢你的帮助 编辑:我在Xcode 4.5上使用

我一直在这里和谷歌上到处寻找,但我仍然有一个奇怪的问题,我想不出来。我有一个应用程序图片,下面有4个应用了背景图像的UI按钮:

当我在iPhone 5上调整/运行时,顶部按钮会以一种非常奇怪的方式调整大小:

如何让所有UIButton的大小与iPhone 5相同?可能吗?我需要使用不同的方法吗

我真的希望这不是重复,但我完全被难住了。如果我在UIView的其他位置更改UIButtons,则会出现另一个按钮,或者会显示奇怪的间距。。。。我不明白。谢谢你的帮助

编辑:我在Xcode 4.5上使用iOS 6。我正在测试iPhone4S和iPhone5。我检查了自动布局。如果我使用Pin(刚刚找到),我可以让UIButton保持其高度


澄清我的问题。我想调整UIButtons的大小,使它们占据屏幕的相同百分比。。。。我希望比例相同,而不是简单地添加一堆空白。我希望您能更清楚地了解

您可以使用的功能之一是AutoLayout。它配备了Xcode,以便更容易地调整4英寸屏幕的内容。你可以在这里找到一个很好的例子:

但据我所知,AutoLayout仅适用于iOS 6,这使得它“还没有那么有用”。我一直在使用一个名为
UIDevice
的类,其源代码可以在这里找到:并检查平台类型是否为iphone5。我在一个方法中设置了它,该方法在加载视图时设置GUI。我的实现示例:

UIImage *backgroundImage;

if ([[UIDevice currentDevice] platformType] == UIDevice5iPhone)
{
    //I have a 4 inch screen present
    myButton.frame = CGRectMake(x, y, w, h); //Set the frame as you would like it to look on the iPhone 5

    backgroundImage = [[UIImage alloc] initWithCGImage:[UIImage imageNamed:@"main_background-568h@2x"].CGImage scale:2.0 orientation:UIImageOrientationUp];
}
else
{
    //I have a 3.5 inch screen present
    myButton.frame = CGRectMake(x, y, w, h); //Set the frame as you would like it to look on the iPhone 3, 3gs, 4, 4s...

    backgroundImage = [[UIImage imageNamed:@"main_background"] retain];
}
self.view.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];
[backgroundImage release];

希望它能清除一点。

您应该首先禁用使用自动布局此选项位于“显示文件检查器”下。

我正在使用iOS 6,并且已选中自动布局。这是Xcode 4.5中的一个问题,在iPhone4S和iPhone5上进行测试。。谢谢你的回答,无论如何我都会调查的。谢谢,我没有有效地使用AutoLayout,当我使用Pin时,我得到了UIButton以保持相同的高度。但是,我想保持相同的比例。我编辑了上面的问题。谢谢没问题,只要记住接受答案,如果它解决了你的问题。为什么我不应该使用AutoLayout?AutoLayout主要是制造问题,我没有使用对不起,我不知道AutoLayout的目的。如果你选中AutoLayout,那么应用程序将在较低版本的iOS上不兼容,它将崩溃。