0

我不使用自动布局,我将所有视图设置为自动调整其子视图的大小。我的子视图不会得到正确的宽度,我做了以下 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,而且我一定遗漏了一些东西。有关如何解决此问题的任何线索?

谢谢!

4

1 回答 1

0

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

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

于 2012-11-11T09:59:04.203 回答