2

我一直在这里和谷歌上到处寻找,但我仍然有这个我无法弄清楚的奇怪问题。我在下面有一个应用程序图片,其中有 4 个 UIButtons 应用了背景图像: 在此处输入图像描述

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

在此处输入图像描述

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

我真的希望这不是重复的,但我完全被难住了。如果我在 UIView 的其他位置更改 UIButtons,则会调整不同的 UIButtons 的大小,或者会出现奇怪的间隙间距......我不明白。谢谢你的帮助!

编辑:我在 Xcode 4.5 上使用 iOS 6。我在 iPhone 4S 和 iPhone 5 上进行测试。我检查了 AutoLayout。如果我使用 Pin(刚刚找到),我可以让 UIButton 保持其高度。

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

4

2 回答 2

2

您可以使用的功能之一称为 AutoLayout。它与 Xcode 一起提供,以便更轻松地为 4 英寸屏幕进行调整。你可以在这里找到一个很好的例子:http ://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2

但据我所知,AutoLayout 仅适用于 iOS 6,这使得它“还没有那么有用”。我一直在使用一个名为 的类UIDevice,其来源可以在这里找到:https ://github.com/erica/uidevice-extension并检查平台类型是否为 iPhone 5。我在设置 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];

希望它清除一点。

于 2012-11-16T02:39:11.663 回答
1

你应该首先禁用使用 AutoLayout 这个选项在“显示文件检查器”下

于 2012-11-20T11:07:49.437 回答