Xcode 6 GM iPhone 6 模拟器 - Storyboards 显示不正确,看起来被放大了

18
我正在使用新的Xcode 6 GM Seed,在iPhone 6和iPhone 6 Plus模拟器上测试我的应用程序。我发现一些之前在进行中的项目出现了奇怪的效果,即视图似乎出现了“放大”效果。
这里有一个例子。这两个视图控制器完全相同(除了不同的导航项文本),包括标签文本大小。但是,您可以看到视图的外观不同。 zoomed normal 请注意,具有奇怪缩放效果的项目具有8.0的部署目标。
注意:我通过在新的Xcode 6 GM Seed中创建项目使正常的项目正常工作(那些不起作用的项目是在旧版本的Xcode上创建的)。
6个回答

22

这是默认设置,所有现有应用在新款iPhone上都将“缩放”。

如果要为实际利用额外屏幕空间而开发的应用程序,就必须像对待4英寸iPhone一样,添加特定于两款iPhone 6的启动图像。

如果您使用的是资源目录,则转到LaunchImages资源目录,并添加两种新iPhone的启动图片。您可能需要右键单击并选择“添加新的启动图像”以查看添加新图像的位置。

此外,使用Launch Screen xib文件而非图像可以立即解决此问题,并且这是推荐的前进方式。以下是向应用中添加Launch Screen的步骤:https://dev59.com/SV8e5IYBdhLWcg3wcJ8q#25763870


我不是在谈论启动图像...这些只是普通的视图控制器。编辑:算了,我知道你的意思了。谢谢! - arcticmatt
1
这也让我感到困惑。无论我在模拟器中选择哪种手机,它都告诉我[UIScreen mainScreen] bounds].size.height是568。我猜iOS会调整屏幕大小,除非它有新设备尺寸的启动图像。 - JScarry
1
@JScarry 没错。这与在4英寸iPhone上运行旧的3.5英寸iPhone应用程序相同。除非添加特殊的启动图像,否则设备会认为应用程序无法支持更大的屏幕,因此它只是将其缩放以适应屏幕。但应用程序仍然认为它在较小的设备上。添加适当的启动图像可以使应用程序实际上知道它在更大的设备上。 - rmaddy
请注意,现在您也可以使用故事板/ xib 文件作为启动图像。这是测试的简单方法。 - arcticmatt
@arcticmatt 我不使用storyboards或xibs,只用代码编程,所以我无法对使用“Launch Screen File”选项发表意见。 - rmaddy
显示剩余5条评论

2

目前看来苹果还没有更新新启动图的文档,但是你可以在Xcode中找到它们。如果像Maddy所说添加了新的启动图像,你可以在检查器面板中查看新的大小。iOS 8包括三个新的图片,并且如果状态栏在启动时被隐藏,则不需要不同的图片。这些尺寸为:

iOS 8 iPhone Portrait
Retina HD 5.5  1242x2208
Retina HD 4.7  750x1334

iOS 8 Landscape
Retina HD 5.5  2208x1242

您可以在Xcode中添加它们,也可以编辑.xcassets文件中的json文件并将图像拖放到包中。如果选择编辑包,请在文件顶部添加以下行:

{
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "736h",
      "filename" : "Default-736h@3x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "portrait",
      "scale" : "3x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "736h",
      "filename" : "Default-Landscape@3x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "landscape",
      "scale" : "3x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "667h",
      "filename" : "Default-667h@2x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "portrait",
      "scale" : "2x"
    }

我保留了他们之前用于肖像文件的命名约定。在手机上以前从未有过横向选项,因此我保留了iPad的命名约定。当然,您可以随意命名它们。

编辑:请注意,唯一支持横向模式的手机是iPhone 6 Plus。其余的手机只能以纵向模式启动。


好的,但是如果我像这样设置667h(不带横向),启动画面根本不会显示。虽然当我将其设置为横向并在纵向方向上运行时,它会显示568h。我崩溃了 :( - Maciek Czarnik
我尝试过这个,但并没有奏效:http://stackoverflow.com/questions/43199231/is-it-okay-to-leave-out-unnecessary-launch-images 有任何想法为什么吗?谢谢。 - Kartick Vaddadi

2

添加启动图并不能解决这个问题。

你需要将LaunchScreen.xib文件添加到项目中,并在Info.plist中添加Launch screen interface file base name - LaunchScreen

使用Xcode 6 GM创建一个新项目,你就会看到什么是LaunchScreen.xib。你可以将它复制到现有的项目中。


正如我在评论中所述,这是一种替代方案。但是,rmaddy所说的也完全可行。 - arcticmatt
如果你只是想测试你的应用程序,而且还没有创建新的启动图像,请为你的启动屏幕文件选择一个随机的.xib文件。它不会在启动时显示,但模拟器将正常工作。也就是说,它不会调整你的应用程序大小。 - JScarry

1
大部分@rmaddy所说的都是正确的,但当我前往Images.xcassets配置LaunchImage时,我只需选择“LaunchImage”,然后选择“属性检查器”,在检查器页面上,您将看到相应的配置选项,这些步骤也适用于应用程序图标。

0

@JScarry,你的解决方案可以,但无法在iPhone 6上显示横向图像。这里有一个可行的解决方案(需要将横向和纵向图像放在相同的尺寸350x667中,只需旋转横向图像即可)


我没有iPhone 6来测试,但从模拟器和Xcode创建的iconasset文件来看,据我所知,iPhone 6不支持横屏模式。我可能错了,但我认为唯一支持横屏模式的手机是iPhone 6 Plus。 - JScarry

0
对我来说解决问题的方法是:
我不得不点击项目和目标,并将目标设备系列更改为指向不仅是 iPhone,还包括 iPad。只有这样放大缩放才会消失。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接