启动图像未显示在我的iOS应用中


149

我想使用Xcode 6.0.1构建的应用程序中显示一个简单的启动屏幕。

我以两种方式添加了启动屏幕:作为XIB(默认名称,LaunchScreen.xib)和作为xcassets中的启动图像集。

我已经确保将我的“启动屏幕文件”设置为LaunchScreen.xib。

我已经模拟了所有可用的设备(例如“ iPhone5 iOS8” /“ iPhone5s iOS8” /“ iPhone6 iOS8”。请注意,模拟器中仅提供iOS 8)。


启动屏幕中使用的图像不应位于Images.xcassets中,应将它们放入捆绑包中,以检查是否尝试使用不在xcassets中的测试图像,并为.xib本身设置另一种背景颜色,以查看如果正在加载
.xib

@JuanBoero为什么要打包?它们在构建时使用,而不是在运行时使用。
RudolfAdamkovič'17

Answers:


239

因此,对于一些琐碎的事情而言,这已经非常痛苦。这是我所做的:

使用xcassets

我决定使用.xcassets与.xib进行启动。我删除了.xib。如果您的项目中已经有images.xcassets,那就太好了,否则可以从File> New> file添加一个:

AddNewASsetCatalog

创建启动映像集

现在,通过右键单击导航器区域,至少在.xcassets文件中创建启动图像集和图标集。

添加新的启动图像和应用程序图标

更新应用程序图标并启动图像设置

然后,确保目标中的“应用程序图标和图像集”如下所示。

非常重要:确保“启动屏幕文件”设置为空白。

应用程序图标和图像集

添加图像

最后但并非最不重要的一点是,Apple用于设备选择的术语令人困惑。最初我以为,由于我仅针对iOS8(iPhone Portrait)进行部署,因此可以做到这一点,只需放入iPhone 6和iPhone 6+启动图像即可:

设备

我很快意识到这不是这种方式,并且我收到警告:“需要iOS 7.0及更高版本的iPhone Retina(4英寸)启动映像。”

因此,我还必须选择iOS 7.0及更高版本下的iPhone,并为iPhone 5s添加图片。

因此,要找出要在右侧选中的框,请不要提出以下问题:我的最低iOS和设备以及设备和设备方向是多少?

哪些设备可以支持我的最低iOS?现在,这些设备支持的最低iOS是多少?并确保选中所有这些框。因此,对我来说,我的目标是8.0上的iPhone 5s,6和6 Plus,但是鉴于iPhone 5s可以与7.0一起存在,我还需要选中7.0框以显示图像占位符。换句话说,右侧的(iOS)复选框会显示该设备可用的最低iOS版本,并且您需要单击它以显示图像占位符并放置图像,无论您是否以该iOS版本进行部署。

希望这对某人有帮助。

添加所有设备

在此处输入图片说明


1
没有启动屏幕,键盘大小会有所不同,任何想法如何修复screencast.com/t/Vk18vuhSqZv
souvickcse 2015年

2
这东西真烦人。
ReduxDJ 2015年

5
先生,您赢得了互联网。
OhadM 2015年

46
此方法有效,但只有从设备删除应用程序并重新安装后,更改才可见。即使清除缓存并删除派生数据后,旧的启动屏幕似乎仍然存在。
弗朗西斯·杰维斯

15
啊,我需要从手机中删除我的应用程序才能使更改生效,我只是浪费了很多时间:'(
Phil Hudson

31

根据我的经验,LaunchScreen.xib和信息值Launch screen interface file base name都是在创建项目时创建的占位符。如果您想Images.xcassets仅在启动屏幕上使用,请同时删除LaunchScreen.xibinfo.plist项。

如果您提供info.plist设置,则您的应用将使用xib而不是您的Images.xcassets


1
好的简单解决方案。
Travis M.

2
“ arcady bob”解决方案对我有用:我打开了“ info.plist”并删除了“启动屏幕界面文件基本名称”元素,运行了我的应用程序,启动图像终于出现了。
Jose Manuel AbarcaRodríguez2015年

这是旧的,但这是为我修复的。
马丁

20

Xcode 8:

LaunchScreen.xib中使用的图像不应位于.xcassets上,请尝试将其放入捆绑包中。

看起来在.xib加载时,.xcassets中的图像尚不可用。

编辑:添加一些本地化后,由于某些不透明的原因,启动屏幕停止工作,现在它可以处理资产中的图像,这很奇怪。


2
为了增加您的答案...最近,我尝试在“启动Screen.storyboard”文件中使用自定义字体。阅读此SO答案和更多研究/测试后,我无法弄清楚的原因。图像也是如此... Xcode准备应用程序启动屏幕的纵向和横向快照,并(当前)保存在此处:/Library/Caches/Snapshots/<<app_bundle>>/,在加载支持文件(包括自定义字体和资产目录)之前完成。
andrewbuilder

3
我注意到从.xcasset加载时,较大的图像(> 512像素)没有显示在我的LaunchScreen上,而较小的图像却显示。感谢您提及您的解决方案!
auco

非常感谢,我花了将近3个小时来调试此问题。原来.xcasstes受到了指责
Sergey Grischyov '17

同样,将xib中使用的图像文件从1024x1024更改为小于512px的分辨率,将其修复。
艾克(Eike)

1
@JuanBoero捆绑在一起吗?它们在构建时使用,而不是在运行时使用。
RudolfAdamkovič'17

17

我的解决方案是创建所有启动映像。 在此处输入图片说明

然后,将启动图像源设置为LaunchImage资产,并将启动屏幕文件保留为空白。

最后,如果项目没有Launch Screen.xib,则添加该文件并将其保留。 在此处输入图片说明


4
添加了如此多的图像。增加IPA大小。XIB Launch是为此的解决方案。例如,如果您的背景为纯色,中间只是一个徽标,则建议使用XIB。只需设置背景颜色,然后在中间添加一个UIImage,就可以了。但是,它还是一个选择
Jasmeet 2015年

添加启动Sceen.xib而不使用它,实际上对我有用。谢谢!
2015年

Xcode 6不会让我更改“启动图像源”,而是保留此文本,我不能对其进行修改:“使用资产目录”-它的行为更像是一个按钮,如果我单击它,可以选择:将启动图像迁移到资产目录...不知道从哪里开始。还有其他人遇到吗?我已经将不同大小的预制启动图像的整个文件夹导入到LaunchImage资产目录中。没有错误消息,但即使按照上面的说明进行了重建,重新启动计算机的操作,但仍看不到启动映像或应用程序映像……
向阳

12

对我来说,当我卸载应用程序然后重新启动模拟器时,它可以正常工作。再次安装后,启动映像将按预期出现。这也适用于实际设备。


卸载应用程序后,我还必须重新启动设备。此外,我清除了Xcode缓存,并重新启动了Xcode。
lenooh

11

对于正在使用的人Asset Catalog's Launch Image,据我所知,这是最难的方法,我遇到了这种情况:首先给jpg我一个文件,然后让他们将其转换为PNG

我对他们的信任度很高,因此我首先在互联网上搜索了为什么没有显示启动映像,并且没有采取所有解决方案,但都无济于事,然后我尝试放回旧的启动映像并运行良好,在那里,我以为我PNG档案不正确。

TL; DR: 请确保您实际上使用的是正确的PNG文件,而不是具有扩展名的文件。


1
小心在文件扩展名中使用大写字母,尽管设备会正确找到文件,但模拟器可能不会。
Juan Boero

10

从Info.plist文件中删除“启动屏幕界面文件的基本名称”并删除“启动Screen.xib”对我来说很有效。


这解决了我的问题。但是我认为Apple建议其他人使用xib文件比生成9个不同的图像更好。
TypingPanda 2015年

7

只需删除并重新安装该应用程序即可为我工作:

  • 在模拟器中测试

    1. 在模拟器中删除该应用。
    2. 退出并重新启动模拟器。
    3. 在Xcode中再次运行项目。

  • 在设备上测试

    1. 从设备中删除该应用。
    2. 在Xcode中再次运行项目。

2
对于设备,不仅删除并重新安装对我而言不起作用。在我的情况下,重新启动手机(设备)是解决方案
Kutay Demireren '18

6

可接受答案的问题在于,如果您未设置启动屏幕文件,则您的应用程序将在iPhone 6&6+ =>模糊渲染等设备上处于升级模式。

下面是我在每个设备上都拥有完整的工作解决方案(我的目标是iOS 7.1和使用Xcode 8)的做法(确实,我对这个升级问题感到疯狂)

1.准备您的.xcassets

为了简化它,我使用矢量.PDF文件。这非常方便,并且避免为每种分辨率(1x,2x,3x ...)创建多个图像。我还假设您已经在其中创建了xcassets。

  • 将启动屏幕图像(或矢量文件)添加到项目中
  • 转到您的.xcassets并创建一个新映像集。在图像的属性窗口中,选择比例->单比例
  • 将矢量文件拖放到“图像集中”。

为您的.xcassets创建映像集

2.创建启动屏幕文件

创建启动屏幕文件

3.将图像添加到启动屏幕文件

  • 将图像视图对象添加到您的启动屏幕文件中(删除自动创建的标签)。该图像视图应参考先前的.xcassets图像集。您可以从“ 名称”属性中引用它。在此阶段,您应该在图像视图中正确看到启动屏幕图像。
  • 向此图像视图添加约束,以根据屏幕分辨率保持宽高比。

将初始屏幕图像添加到启动屏幕文件

4.将启动屏幕文件添加到目标

最后,在“目标常规”属性中,参考“启动屏幕”文件。 目标属性和启动屏幕

启动您的应用程序,并显示初始屏幕。在iPhone6和iPhone6 +上也尝试一下,并且您的应用程序应正确显示而无需任何升级(启动屏幕文件旨在实现这一目的)。


我试过了,但是没用stackoverflow.com/questions/43168145 / ...知道为什么吗?非常感谢。
Vaddadi Kartick

我只是想通了。我的启动图像没有显示,在设备(iPhone 6、7+)或testFlight上启动时出现白屏。修复:将“ Landing_screen.png”重命名为“ Landing_screen”,删除了.png部分。Xcode中的图像图标已更改为白色图标,并且在启动屏幕情节提要中,图像现在显示为问号。现在将显示启动图像,而不是白屏。
布赖恩

我有一个类似的问题。使用矢量图形(pdf)时,图像不会显示在“午餐屏幕”中,但是如果使用与“ Main”相同的情节提要(在“午餐屏幕”之后显示),则可以看到该图像。因此,我的猜测是矢量图不适合作为午餐屏幕。
阿迪

我设法通过重新启动模拟器来使它正常工作。以前,我删除了该应用程序并清理了该项目,但初始图像仍未显示。
阿迪

5

经过数小时的挫败之后,我决定使用这种方式。它适用于iPhone和iPad(在Xcode 6.1上)

  1. 文件>>新文件>>用户界面>>启动屏幕
  2. 创建新的键/值:YourApp-Info.plist中的“启动屏幕界面文件基本名称” /“您的启动屏幕名称”

1张图片的价值超过一千个字。请看下面:

文件>>新文件>>用户界面>>启动屏幕

在YourApp-Info.plist中创建新的键/值“启动屏幕界面文件基本名称” /“您的启动屏幕名称”


4

我已经了解了Xcode 6中的一个错误,该错误阻止仅横向应用程序显示启动图像。

尝试在Images.xcassets中设置图像和方向:

Images.xcassets的Xcode屏幕截图


1
您到底想用屏幕截图告诉什么?
NikkyD 2014年

2
在属性检查器上检查方向。
carlodurso 2014年

2

存在一个错误,即存储在资产文件中的Xcode 6启动图像会导致iOS7 / iOS8上只有iPhone横向应用程序显示黑色启动图像。iPad工作正常。

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=10868

解决方案:从ios8 +开始使用新的Launchscreen.xib。(好多了)

为了使ios7设备正常工作,您只需关闭启动图像源并使用plist中的旧式启动图像文件名

iphone5 - Default-568h@2x.png 
iphone4s - Default@2x.png
ipad2 - Default-Landscape~ipad.png
ipad retina - Default-Landscape@2x~ipad.png

痛苦但有效。乙
在此处输入图片说明


2

我已经尝试了所有方法,但是解决方案非常简单。只需在LaunchScreen.storyboard上使用.jpg文件而不是.png。似乎iOS在启动屏幕上不呈现.png文件或图像尺寸相对较大。


我的启动屏幕上有一个png-在Xcode中创建情节提要时,显示的效果非常好-但在实际尝试在真实设备上运行该应用程序时,它只会显示为黑色。抽出一会儿后,我换成了jpg,现在可以正常工作了。谢谢!
tiritea '18

2

做Spectravideo328回答的事情,并:

尝试取消选中iOS 7和更高版本的框,并选中资产目录中的iOS 6和更高版本的框。iOS 7启动映像似乎存在错误。(除了320x480的图片外,它们都有相同的启动图片)

希望这会有所帮助,对我有帮助!



1

一种方法是添加“启动屏幕”LaunchScreen.xib),将图像粘贴到其中UIImageView,然后在使用“自动布局”的情况下将其设置为“ 容器中的水平中心 ”和“对齐”中的容器中的垂直中心 ” 。

屏幕:http//i.stack.imgur.com/CfnHT.png

不要忘记将其LaunchScreen.xib放入“启动屏幕文件”。


1

开始使用Xcode 6.1并更改启动器映像后,我遇到了同样的问题。我将所有图像都放在资产目录中。我只会得到黑屏,而不是预期的静态图像。尝试了很多事情之后,我意识到问题是资产目录在FileInspector视图中选中了项目“目标成员身份”。将其勾选为ON会产生魔力,并且图像开始出现在App启动时。


1
  • 根据Apple指南,确保图像尺寸正确。
  • 确保,您将仅选择一个选项,即启动屏幕文件或启动图像源。您可以在Project build settings-> General中找到这两个选项

我的建议是选择“启动图像源”作为Image.Assets。在Image.assests文件夹中在那里创建初始图像资产。

正确配置的参考图像: 在此处输入图片说明


0

我尝试打开一个新项目,然后执行与设置启动屏幕相同的步骤。

默认情况下,.xib设置为“启动屏幕文件”,并且带有标签的白屏确实在模拟器中显示了半秒钟。

然后,我将“启动图像源”并将其设置为Images.xcassets,该图像是使用添加到项目中的背景图像生成的。(到目前为止一切都很好)

重新运行模拟器,启动图像不显示...

删除指定的“启动屏幕文件”并清除后:Product-> Clean,从顶部菜单中最终显示启动图像。

也许会有帮助吗?


Terrence-您是否尝试过再次运行模拟器?我问的原因是这项技术在我第一次运行时就起作用了。但是,在重新运行模拟器时,我回到了第一点。
Eddie Hartman

当我发表评论时,我没有第二次尝试。现在我看到了同样的问题。
2014年

0

有一个文件'LaunchScreen.xib'自动添加到您的项目中。删除此文件会将xCode转换为使用Images.xcassets中的默认图像。

编辑添加以转到“应用程序图标”,“启动图像”启动屏幕文件应为空白/空


0

我有一个非常奇怪的错误。显然,我的启动映像源仅设置用于调试配置,而没有发布。这导致我的启动屏幕在运行调试配置时出现,但是当我更改为发行版时,我只有一个黑屏。

我更改了构建配置以释放出现“启动映像源”按钮时已解决此问题,然后不得不再次选择“使用资产目录”。

对于那些好奇的人,这就是我的project.pbxproj的样子。

...
...
...
XXXXXXXXXXXXXXXXXXXXXXXX /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ALWAYS_SEARCH_USER_PATHS = NO;
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; <---THIS LINE WAS MISSING
...
...
...

0

出于某种原因,我必须将资产目录位置更改为“相对于项目”才能正常工作。

我还从手机中删除了该应用程序,然后重新安装了它,但这可能是“相对于项目”的原因。


0

*(Xcode 7.2 /部署目标7.0 /仅横向)*

我知道这是一个老问题,但是使用Xcode 7.2时,我仍然收到消息,并对此进行了修复:

1)选择人像和两个风景。添加“启动图像源”和“启动屏幕文件”

在此处输入图片说明

2)在启动图像中,选择iPhone“ 8.0及更高版本”和“ 7.0及更高版本”。

在此处输入图片说明

3)在您的appDelegate中添加以下代码:

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}
#else
- (UIInterfaceOrientationMask)application:(UIApplication *)application     supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return (UIInterfaceOrientationMaskLandscape);
}
#endif

4)将此添加到您的ViewController

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
     return UIInterfaceOrientationMaskLandscape;
}

希望对其他人有所帮助。


我尝试了类似的方法,但是没有用:stackoverflow.com/questions/43168145 / ...知道为什么吗?非常感谢。
Vaddadi Kartick '17

1
这一定是Xcode开发中比较烦人的小FU之一。(显然)需要设置的东西很少,但是我创建的这只小兽的每个项目都花了太多时间。每次我解决它时,它似乎都是随机的,并且一旦起作用,我祈祷我不会不小心再次触摸该文件/进程。新项目,同样疯狂的需要弄清楚为什么启动屏幕中间没有一个简单的图形。所有设置均符合要求,但月相可能不对?
提请..

0

这对我有用。单击LaunchScreen.storyboard,然后在右侧面板中选择“是初始视图控制器”复选框。

LaunchScreen.storyboard->是初始视图控制器


0

我只是想通了。我的启动图像没有显示,在设备(iPhone 6、7+)或testFlight上启动时出现白屏。修复:将“ Landing_screen.png”重命名为“ Landing_screen”,删除了.png部分。Xcode中的图像图标已更改为白色图标,并且在启动屏幕情节提要中,图像现在显示为问号。现在将显示启动图像,而不是白屏。我的设置:我正在将Swift 3.1与Xcode 8.3.1结合使用。在LaunchScreen.storyboard中,我添加了一个简单的图像视图并拉伸了图像以适合视图控制器。我将自动布局约束的顶部/底部/前导/尾随空间设置为0。


0

如果您已从前一个图像更改了启动图像,请注意以下几点:

  • 先前已安装该应用程序的设备/模拟器,仍显示前一个图像,并拒绝显示新的图像(卸载并重新安装该应用程序无济于事)
  • 之前未安装该应用的设备/模拟器,显示新的启动图像

这可能是因为iOS对启动映像进行了缓存。重新启动设备应该可以解决问题。


0

我的仅横向应用程序也遇到了此错误。以下carlodurso的解决方案起作用:

  1. 勾选“风景”框
  2. 将图像拖放到该位置。

-2

对我来说,当我删除LaunchScreen.xib它并将其更改为情节提要文件时,它可以工作LaunchScreen.storyboard

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.