xcode屏幕大小是固定的 - 不会更改每个设备

时间:2014-01-05 14:31:49

标签: ios iphone objective-c xcode ios7

我正在设置要显示的4英寸屏幕的故事板。 我创建了两个故事板,名称命名并将代码放在

  

appdelegate.m

但无论我使用什么模拟器,我每次都会获得相同的屏幕尺寸(480)。 我已经尝试了我在stackoverflow上找到的所有代码,如:

  

CGSize screenSize = [[UIScreen mainScreen] bounds] .size;

并从中获取高度。

我也尝试了其他方法,但仍然获得相同的屏幕尺寸 - 每次都是480。

在其他项目中,它的工作正常。

这是一个错误吗?我应该在项目设置中改变一些东西吗?

我正在开发iOS 7以及Xcode 5。

如果你知道该怎么做,请帮忙..

4 个答案:

答案 0 :(得分:1)

在prefix.pch中使用以下。

#define iPhone4Or5 ([[UIScreen mainScreen] bounds].size.height == 568 ? 5 : ([[UIScreen mainScreen] bounds].size.height == 480 ? 4 : 999))

它将返回如下

iPhone4Or5 = 4(iPhone 4)

iPhone4Or5 = 5(iPhone 4)

iPhone4Or5 = 999(iPad)

现在可以使用

UIStoryboard *storyBoard;
if (iPhone4Or5==4) {
    storyBoard = [UIStoryboard storyboardWithName:@"Main_4s" bundle:nil];
} else if (iPhone4Or5==5) {
    storyBoard = [UIStoryboard storyboardWithName:@"Main_5s" bundle:nil];
} else {
    storyBoard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
}

UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];

我知道为什么会这样。

选择4s故事板并转到编辑器>>应用Retina 3.5英寸因子(如果你看到应用视网膜4英寸,请不要点击该选项)

4s你应该看到编辑器>>应用Retina 4英寸

答案 1 :(得分:1)

我的建议是创建单个故事板,以支持两个屏幕。

在下图中表示您是否使用下图中的按钮在视网膜4英寸和3.5英寸之间切换。使用右上方尺寸检查器下的自动调整工具来获取视图以正确定位自己。

how-to-update-your-apps-for-the-4-inch-iphone-5-display

enter image description here

请记住,autolayout仅支持6.0及更高版本。

enter image description here

所以,如果您还没有使用autolayout尝试使用自动调整大小

enter image description here

答案 2 :(得分:1)

谢谢大家。 经过几个小时的挫折尝试我可以挖掘的每一行代码,我发现xcode有bug ...而且它确实是Xcode中的一个错误。

我打开了一个新项目,复制了所有文件/类/故事板,它应该可以正常工作! 我想这是模拟器中的一些错误(关闭它并重新打开没有帮助,也没有关闭Mac并重新启动......)

答案 3 :(得分:0)

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f)
#define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0f)


if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize deviceResult = [[UIScreen mainScreen] bounds].size;
    if(deviceResult.height == 480)
    {
        // iPhone Classic
    }
    if(deviceResult.height == 568)
    {
        // iPhone 5
    }
}