我正在按照iOS编程指南中的“为不同方向提供启动图像”进行操作,但似乎无法让我的面向iPad的启动图像正常工作。如果我理解文档没错,那么当我在iPad模拟器中启动应用程序时,“Default〜ipad.png”应该被用作启动图像,但实际上它使用的是我的“Default.png”。
如果我告诉模拟器以iPhone4运行,则会正确使用我的“Default@2x.png”。但这让我更加困惑,因为iPad版本为什么不能正常工作呢?
是否有人知道如何使面向iPad的启动图像正常工作?
我正在按照iOS编程指南中的“为不同方向提供启动图像”进行操作,但似乎无法让我的面向iPad的启动图像正常工作。如果我理解文档没错,那么当我在iPad模拟器中启动应用程序时,“Default〜ipad.png”应该被用作启动图像,但实际上它使用的是我的“Default.png”。
如果我告诉模拟器以iPhone4运行,则会正确使用我的“Default@2x.png”。但这让我更加困惑,因为iPad版本为什么不能正常工作呢?
是否有人知道如何使面向iPad的启动图像正常工作?
有几种方法可以实现。我更喜欢的方法是从“iOS应用程序编程指南”中获取。
为不同方向提供启动图像:
在Info.plist中,将UILaunchImageFile
设置为基本名称:“MyAppName.png”
在您的资源包中,使用此命名结构创建文件:
<basename><orientation_modifier><scale_modifier><device_modifier>.png
示例:我为iPad、iPhone、1x和2x使用了所有这些名称:
MyAppName-Portrait~ipad.png
MyAppName-Landscape~ipad.png
MyAppName-Portrait@2x~ipad.png
MyAppName-Landscape@2x~ipad.png
MyAppName-Portrait~iphone.png
MyAppName-Landscape~iphone.png
MyAppName-Portrait@2x~iphone.png
MyAppName-Landscape@2x~iphone.png
// iphone 5
MyAppName-Portrait-568h@2x~iphone.png
MyAppName-Landscape-568h@2x~iphone.png
注意: 把@2x
放在正确的位置,这是唯一一种情况下它不会位于文件名的末尾
当您有多个构建目标时且不想使用Default.png文件名时,此方法特别有效
MyAppName
info.plist条目。然后将您的图像拖到Xcode 4目标摘要图像放置点上。它们将被复制到您的项目文件夹的根目录中,并使用您的MyAppName
命名方案而不是Default.png文件名。如果您不想让它们在那里,您可以从项目中删除引用,将它们移动到图像文件夹中,然后Xcode会捕捉到它们。 - zekel我成功地通过在应用程序的Info.plist中提供iPad专用密钥来使其工作,而不是使用文档建议的iPad专用文件名。
我的iPad启动图像是"iPadDefault.png",我在我的Info.plist中添加了以下键/值
<key>UILaunchImageFile~ipad</key>
<string>iPadDefault</string>
由于您正在制作通用应用程序,命名约定会改变!以下是指南中的引用:
为 iPhone 和 iPad 都包含启动图像。iPhone 启动图像仍将被命名为 Default.png 和 Default@2x.png。将您的 iPad 纵向启动图像命名为 Default-Portrait.png(不要使用 Default.png 作为 iPad 纵向启动图像)。
这意味着没有纵向/横向等之分......您只需按此方式重新命名文件即可:
iPhone(iPod): Default.png and Default@2x.png
iPad: Default-Portrait.png and Default-Portrait@2x.png (the @2x version is for the new iPad !)
我之前遇到了同样的问题,这个方法解决了我的问题。虽然我不确定左右方向在通用二进制文件中是否可用,但这个方法对我有效!
<key>UILaunchImageFile</key>
<string>Default</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>