我正在开发适用于iOS 6.1和7的iPhone应用程序(使用Xcode 5)。我对iPad发布图像有疑问。
在iPad 7.0和7.0.2上,启动图像没有显示(在6.1版本中工作!):在应用程序加载时我出现黑屏。
我没有遇到iPhone 6.1和7.0.2的这个问题,虽然我设置了iPad和iPad视网膜(横向和纵向)所需的所有启动图像,并且我使用资产目录。
我错过了什么?
答案 0 :(得分:33)
最近我遇到了同样专为iPhone设计的应用程序的问题,我遇到的问题是iPad上不会出现启动图像(在iPad ios> = 7.0.x上,启动图像没有显示我得到黑屏当应用程序正在加载时(在iPad ios< 7.0.x中它工作正常))。
我没有遇到这个问题,因为iPhone在所有iOS版本中运行良好。
解决方案:是要更新到资产目录以管理应用的图片,并仅定位到iOS 6和Prior。
步骤:
第1步:
第2步:
步骤3:点击右上角的“属性检查器”图标。您可以在此处为启动图像设置目标操作系统。
取消选中iPhone的iOS 7复选框,现在您应该能够在iOS> = 7.0.x上看到适用于iPad的启动图像。
答案 1 :(得分:24)
如果你有像我一样的情况,那就是解决方案:
我的应用仅限风景,仅限iOs7,ipad \ iphone(XCode 5)。
问题:在iphone(和模拟器)上启动黑色,在ipad中正常启动。
解决方案:转到Images.xcassets - 启动图像 - 选择它。取消选中所有“iOs7及更高版本”框。检查“iOs6 and prior”框并用图像填充空白区域。
奇怪,但有效。
答案 2 :(得分:11)
根据Apple的文档(link);一个空的iPad特定故事板可能就是答案。我还看到了在故事板中未设置初始视图控制器导致黑屏的问题。此问题的变体可能是app plist中的设置不正确。
技术Q& A QA1780 为什么我的应用会在iPad上启动黑屏?
问:为什么我的应用会在iPad上启动黑屏?
答:专为iPhone设计的应用程序在iPad上运行时可能会启动为空白屏幕。这是由应用程序包中存在空的iPad特定故事板以及应用程序的信息属性列表(Info.plist)文件中的特定于iPad的UIMainStoryboardFile键引起的。如果选择了Universal选项,则两者都会由各种Xcode模板项目自动创建。
...
在Xcode中
在文件导航器中查找名为MainStoryboard_iPad.storyboard的文件。如果此文件存在,请将其从项目中删除。
在您应用的信息属性列表中
查找名为主故事板文件基本名称(iPad)或UIMainStoryboardFile~ipad的键。如果存在此密钥,请将其删除。您还应该删除后缀为(iPad)或~ipad的任何其他密钥。
最后,在iPad或iPad模拟器上测试您的应用,并验证其是否符合预期。
答案 3 :(得分:9)
我请求Apple支持,结果证明这是一个错误。他们让我报告,我做了。这是报告编号:15340531。 现在取决于他们。
答案 4 :(得分:5)
我遇到了类似的问题,直到我在常规项目设置中找到以下设置。
答案 5 :(得分:4)
尝试再次设置图像,确保启动画面的分辨率符合iOS 7指南
答案 6 :(得分:3)
我知道这听起来很愚蠢。当我用pspg格式保存带有jpg扩展名的文件时,我遇到了类似的错误。保存启动图像时只需单击1次错误。
答案 7 :(得分:3)
在尝试了几个解决方案之后,我怀疑iPhone试图以横向方向启动,因此没有找到任何相应的启动图像。事实上,模拟器是从景观开始的,原因是我不理解。
最后,在阅读Apple文档后,我发现它可能是info.plist文件的“支持的界面方向”中的键的顺序,这是不够的。肖像是最后一项。当它是第一个项目时,应用程序以纵向模式启动并找到图像。
答案 8 :(得分:2)
从设备或模拟器中删除以前安装的应用程序,然后在清理后重新启动应用程序。
答案 9 :(得分:2)
我遇到的问题是iOS 7中的iPhone(3.5或4英寸)没有出现启动图像,但iPad在iOS 7上没有问题。
长话短说,我只禁用了启动图像的资产目录。所以我正在以老式的方式添加发布图像。这似乎解决了这个问题。
明天我将不得不做更多的测试,但问题似乎已经解决了(至少在我的情况下)。
答案 10 :(得分:1)
我发现这个答案适用于我们的应用程序(仅限iPhone,但在iPad上使用):https://stackoverflow.com/a/19448782/1258419
总结答案:
怎么做。转到资产目录。在右上角单击“属性检查器”图标。您可以在此处为启动图像设置目标操作系统。取消选中iPhone的iOS 7复选框。现在,您应该能够看到这些设备的启动图像。
答案 11 :(得分:1)
这是iOS 8的更新。
当我尝试将LaunchImage
添加到我的iOS 8应用程序时,我遇到了同样的问题。
Apple允许开发人员使用xib(默认名称为LaunchScreen.xib
)来渲染iOS 8的启动视图。我相信开发人员可以使用LaunchImage
或LaunchScreen.xib
。不幸的是,在LaunchImage
被引入之后,我找不到任何描述如何处理LaunchScreen.xib
的文档。当我尝试使用LaunchImage
作为启动视图时,我总是出现黑屏。
我的解决方案是:
不要考虑LaunchImage
。使用LaunchScreen.xib
。 (您必须在资产目录中保留一个空LaunchImage
。我相信这是一个错误。)
将UIImageView
拖到xib并使UIImageView
全屏显示。 请记住考虑大小类和约束。
将iPhone 6 plus分辨率足够的图像设置为UIImageView
。
答案 12 :(得分:1)
我在横向上遇到了类似的问题,iOS 6的iOS 7启动图像没有显示。我是iPhone Retina 3.5“发布图像。
由于我有另一个肖像应用没有分享这个问题,我做了两件事:
在info.plist中,在“支持的界面方向”下,我添加了 2种肖像模式,并将它们放在风景之前,就像 这样:
Item 0: Portrait (top home button)
Item 1: Portrait (bottom home button)
Item 2: Landscape (right home button)
Item 3: Landscape (left home button)
在View Controller中实现此方法:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
无论有没有资产目录,都可以使用。
答案 13 :(得分:1)
我假设您在使用资产目录时,确保已正确添加Images.xcassets目标成员资格。我提到这个,因为如果你有多个目标,看起来你必须手动添加它们(你没有提供任何截图,所以可以肯定)。
现在您还没有真正提供项目中Images.xcassets文件夹的“LaunchImage”概述的屏幕截图,我只能猜测可能的原因。看看发布图像适用于iPhone(6.1& 7.0.2和iPad(6.1)并且不适用于iPad(7.0及更高版本)的事实,我想你或许可以看看是否维度iPad Portrait和iPad Landscape的图像适用于iOS7。具体来说,你应该看到你的发布图像而不是空白的矩形,如附图所示 -
这可能是因为您仍然创建了iOS7的iPad启动图像,不包括状态栏区域。在iOS7之前,创建iPad启动图像是为了排除状态栏区域,但在iOS7上必须包含所有启动图像必须包含状态栏区域。请阅读Apple iOS7 UI过渡指南(https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf)中的“每个应用程序必须执行的操作”部分。
下面的截图应该解释我在说什么 -
e.g。您可以看到iOS6.1及之前版本的iPad Landscape Retina图像尺寸为2048x1496(状态栏不包括40像素)但iOS7.0及更高版本的相同图像尺寸预计为2048x1536(包括状态栏的40px) )。因此,如果您没有相应地更改图像,您将在iPad 7.0及更高版本上看到图像的黑屏。在iPhone上,您将不会遇到此问题,因为iPhone启动图像始终覆盖状态栏,无论是iOS6.0还是iOS7.0-因此iPhone启动图像已满足新的UI要求。
答案 14 :(得分:1)
答案 15 :(得分:0)
我遇到了同样的问题。 我不得不做一个解决方法:对所有iOS版本使用默认图像,并从info.plist中删除UILaunchImageFile键。
我不能为iOS 7和之前的版本使用不同的启动图像,所以,我必须使用相同的“艺术”图像,而不是模仿应用程序的第一个视图的图像(Apple推荐,我更喜欢) ,但至少我不再使用黑屏了。
看起来UILaunchImageFile键允许使用iOS 7及以前版本的不同启动图像,但对于iOS 7中的Retina iPad来说,它无法正常工作。
警告:我仍在测试应用程序,因此我不知道是否会出现一些副作用。
答案 16 :(得分:0)
检查所有图像,看它是否正确放置在资产中并正确命名和大小。
同时检查您允许的方向,并相应地将图像添加到资产中。
答案 17 :(得分:0)
我也面临类似的问题,但解决方案很简单(就我而言)。
我所做的只是关注-
1。添加一个新文件(如果尚未添加)Launchscreen.storyboard
2。获取一个UIViewController
,将其标记为Is Initial View Controller
,然后在其中添加UIImageView
,并设置要在启动应用程序时显示的图片。确保为此UIImageView
提供了必需的约束。
3。转到“项目”->“常规”->“应用程序图标”并启动图像,然后选择“ Launchscreen.storyboard”作为“启动屏幕文件”(会有一个下拉列表)。
答案 18 :(得分:0)
答案 19 :(得分:0)
我只是忘了在视图控制器中调用super.loadView()...
override func loadView() {
super.loadView()
}