iphone 5屏幕上的视图大小不正确

时间:2012-09-28 09:01:03

标签: iphone view size ios6 iphone-5

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

例如:

self.view.bounds.size.height

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

这在旧设备上运行得很好,现在我正在尝试支持iphone 5,并发现我仍然可以获得旧设备的高度。 除了这个动画视图之外的所有内容都适合iphone 5。

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

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

3 个答案:

答案 0 :(得分:4)

好吧,答案如下:

与@mrwalker一样,请确保视图自动或以编程方式调整大小。

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

如果您需要调整大小的视图大小,请在viewWillAppear中查看您的内容,视图的大小已经合适。

感谢@mrwalker和@AndyDev

答案 1 :(得分:3)

您需要确保为正在运行的设备调整视图大小。你可以:

  1. 为iPhone 5创建一个新的Xib,就像为iPad一样
  2. 自动或以编程方式调整现有Xib
  3. 如果您打算使用不同的布局(更多/更少的按钮等),我只会选择(1)。

    您如何实现(2)取决于您使用的是iOS 6的自动布局还是旧的自动调整模型。两种方法都可以在实用程序中控制。 Xcode中的大小检查器,或以编程方式。

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

答案 2 :(得分: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
    }
}