【问题标题】:iPhone 5 views not resizing to correct widthiPhone 5 视图未调整大小以正确宽度
【发布时间】:2012-11-11 09:50:30
【问题描述】:

我不使用自动布局,我将所有视图设置为自动调整其子视图的大小。 我的子视图不会得到正确的宽度,我做了以下 hack:

- (void)awakeFromNib {
    if([CEDeviceUtils isPhone5])
    {
        NSUInteger width = [CEViewUtils windowSize].width;
        if(width != 568) width = 568;
        [CEViewUtils sizeView:self atWidth:width];
    }
  }

isPhone5、windowSize 和 sizeView 只是我使用的一些实用方法,它们的实现对我的问题并不重要。

我不喜欢不得不使用这个 hack,而且我一定遗漏了一些东西。有关如何解决此问题的任何线索?

谢谢!

【问题讨论】:

    标签: objective-c ios xcode ios5 ios6


    【解决方案1】:

    4" Retina 显示屏的有效分辨率为 320 x 568,高度为 568 pt。我假设您使用的是横向,因为您正在检查 width 属性是否为568,但你确定你的[CEViewUtils windowSize].width 没有在默认的纵向方向上返回设备的 320 pt 宽度吗?无论设备旋转的当前状态如何,你都应该只查看height 属性。

    此外,检查您的 isPhone5 方法是否确实返回了正确的值也无妨;在代码中抛出NSLog() 或断点以确保控制到达您期望的位置。 (awakeFromNib 方法也是如此——确保它在您期望的时候被调用。您可能需要将此代码移动到 viewWillAppearviewDidAppear 方法中,这些方法在视图指标被调用后被调用已建立,因此您可以覆盖它们。)

    【讨论】:

    • 窗口大小返回480,它正在使用rootViewController.view.bounds.size
    • 你说得对,我的应用程序是横向的,大小返回 480 而它应该是 568
    • 你能把[CEViewUtils windowSize]的代码贴出来吗?通常您想查看[[UIScreen mainScreen] bounds].size.height 的 4" Retina 分辨率 568 pts。
    • + (CGSize)windowSize { UIApplicationDelegate * delegate = [[UIApplication sharedApplication] delegate];返回delegate.window.rootViewController.view.bounds.size; }
    • 我检查了宽度,因为该应用程序仅是横向的,并且使用边界会考虑任何旋转,如果我使用框架而不是边界,那将是不正确的。
    猜你喜欢
    • 2022-08-13
    • 2012-10-19
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多