0

我在我的应用程序中使用视图大小来定位代码中的子视图。

例如像这样:

self.view.bounds.size.height

该子视图必须在视图内外进行动画处理。

这在旧设备上效果很好,现在我正在尝试支持 iphone 5,发现我仍然得到旧设备的高度。除了这个动画视图之外的所有内容都非常适合 iphone 5。

获得正确尺寸的唯一方法是如果我在 xib 中更改视图的大小,缺点是如果我现在在 iPhone 4 上运行我的应用程序,则视图大小是 4 英寸的视图大小。

这里有什么问题?或者这是应该的方式,我必须为 iPhone 5 创建一个额外的 xib 文件?

4

3 回答 3

4

好的,所以答案如下:

就像@mrwalker 所说,确保视图自动或以编程方式调整大小。

并注意视图尚未在viedDidLoad方法中调整大小的事实。(这是我的错误)

如果您需要调整大小的视图大小,请在其中执行您viewWillAppear的操作,视图已经具有正确的大小。

感谢@mrwalker 和@AndyDev

于 2012-10-02T12:50:40.627 回答
3

您需要确保针对运行它的设备调整视图的大小。您可以:

  1. 为 iPhone 5 创建一个新的 Xib,就像为 iPad 一样
  2. 让现有 Xib 自动或以编程方式调整大小

如果您打算使用不同的布局(更多/更少按钮等),我只会选择(1)。

如何实现 (2) 取决于您使用的是 iOS 6 的自动布局还是旧的自动调整大小模型。这两种方法都可以在 Xcode 中的 Utilities > Size Inspector 中进行控制,或者以编程方式进行控制。

如果您有一个视图和视图控制器,允许视图自动调整到父窗口的大小就足够了。

于 2012-09-28T09:21:34.040 回答
2

我有一个类似的问题,我没有得到正确的高度并且使用 Autolayout / autoresize 没有达到预期的效果。我使用下面的代码来确定屏幕大小并在此基础上进行更改。

if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
    CGSize result = [[UIScreen mainScreen] bounds].size;
    CGFloat scale = [UIScreen mainScreen].scale;
    result = CGSizeMake(result.width * scale, result.height * scale);
    if(result.height == 1136){
        // iPhone 5 (1136px height)
    } else {
        // Not iPhone 5
    }
}
于 2012-09-28T09:49:49.917 回答