149

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

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

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

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

4

28 回答 28

239

所以这对于本应是微不足道的事情来说是相当痛苦的。这是我所做的:

使用 xcassets

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

添加新资产目录

创建启动图像集

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

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

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

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

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

应用程序图标和图像集

添加图像

最后但同样重要的是,Apple 用于设备选择的术语令人困惑。最初我认为,因为我只为 iOS8 部署(iPhone Portrait),我可以这样做,只需放入 iPhone 6 和 iPhone 6+ 启动图像:

设备

我很快意识到这不是这样工作的,我收到了一条警告:“需要 iOS 7.0 及更高版本的 iPhone Retina(4 英寸)启动图像。”

所以我不得不选择 iOS 7.0 及更高版本的 iPhone,并为 iPhone 5s 添加一个图像。

因此,要找出要在右侧选中哪些框,请不要问以下问题:我的最低 iOS 和设备以及设备方向是什么,而要问:

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

希望这可以帮助某人。

添加所有设备

在此处输入图像描述

于 2014-10-02T08:17:23.160 回答
31

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

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

于 2014-11-28T04:42:18.390 回答
20

Xcode 8:

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

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

编辑:由于某些不透明的原因,在添加了一些本地化之后,启动屏幕停止工作,现在它与资产中的图像一起工作,非常奇怪。

于 2016-03-07T15:54:11.630 回答
17

我的解决方案是创建所有启动图像。 在此处输入图像描述

然后我将 Launch Images Source 设置为 LaunchImage 资产,并将启动屏幕文件留空。

最后,如果项目没有 Launch Screen.xib,则添加该文件并保持原样。 在此处输入图像描述

于 2014-11-18T20:25:56.757 回答
12

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

于 2016-06-16T14:27:11.373 回答
11

对于使用. Asset Catalog's Launch Image_jpgPNG

我非常信任他们,所以我首先在互联网上搜索了为什么启动图像没有显示并且所有解决方案都无济于事,然后我尝试放回旧的启动图像并且工作正常,在那里我想到了我have 不是正确的PNG文件。

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

于 2015-09-11T06:38:20.633 回答
10

从 Info.plist 文件中删除“启动屏幕界面文件基本名称”并删除“启动屏幕.xib”对我有用。

于 2015-01-08T14:12:04.193 回答
7

只需删除并重新安装该应用程序对我有用:

  • 在模拟器中测试

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

  • 设备测试

    1. 从设备中删除应用程序。
    2. 在 Xcode 中再次运行该项目。
于 2018-02-27T15:01:01.607 回答
6

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

以下是我为在每台设备上提供完整的工作解决方案(我的目标是 iOS 7.1 并使用 Xcode 8)所做的(真的,我对这个升级问题感到疯狂)

1. 准备你的 .xcassets

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

  • 将您的启动屏幕图像(或矢量文件)添加到您的项目中
  • 转到您的 .xcassets 并创建一个新图像集。在 Image 的 Attributes 窗口中,选择Scales -> Single Scale
  • 将矢量文件拖放到图像集中。

为您的 .xcassets 创建一个图像集

2. 创建您的启动屏幕文件

创建启动屏幕文件

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

  • 将 Image View 对象添加到 Launch Screen 文件(删除自动创建的标签)。此图像视图应参考之前的.xcassets Image Set。您可以从Name属性中引用它。在这个阶段,您应该在图像视图中正确地看到您的启动屏幕图像。
  • 向此图像视图添加约束以根据屏幕分辨率保持纵横比。

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

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

最后,在您的 Target General 属性中,参考 Launch Screen 文件。 目标属性和启动屏幕

启动您的应用程序,您的启动画面应该会显示出来。也可以在 iPhone6 和 iPhone6+ 上尝试,您的应用程序应该可以正确显示而无需任何放大(启动屏幕文件旨在执行此操作)。

于 2017-03-06T16:16:43.710 回答
5

在对此感到沮丧几个小时后,我决定使用这种方式。它适用于 iPhone 和 iPad(在 Xcode 6.1 上)

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

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

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

创建新的键/值

于 2014-10-27T15:21:37.760 回答
4

我读过 Xcode 6 中的一个错误,该错误会阻止仅横向应用程序显示启动图像。

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

Images.xcassets 的 Xcode 截图

于 2014-10-01T13:18:12.353 回答
2

做 Spectravideo328 回答的事情,然后:

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

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

于 2014-11-23T16:15:42.470 回答
2

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

于 2018-02-01T16:41:00.880 回答
2

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

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

解决方案:使用新的 Launchscreen.xib 用于 ios8+ 及更高版本。(这要好得多)

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

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

痛苦但有效。乙
在此处输入图像描述

于 2015-08-13T16:40:31.233 回答
1

一种方法是添加“启动屏幕” (LaunchScreen.xib_ _UIImageView

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

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

于 2015-02-11T00:21:27.427 回答
1

我在我的资产目录中设置了“LaunchImage”,并简单地清除了“启动屏幕”字段等瞧!我有启动图像出现...

于 2014-12-17T12:34:56.720 回答
1

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

于 2015-09-12T12:58:47.103 回答
1

如果您从以前的图像更改了启动图像,请注意以下事项:

  • 之前安装了应用程序的设备/模拟器,仍然显示以前的图像并拒绝显示新图像(卸载并重新安装应用程序没有帮助)
  • 以前未安装应用程序的设备/模拟器,显示新的启动图像

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

于 2019-03-15T14:31:28.520 回答
1
  • 根据 Apple 指南,确保您的图像尺寸准确。
  • 确保,您将只选择一个选项,启动屏幕文件或启动图像源。您可以在 Project build settings -> General 中找到这两个选项

我对您的建议是选择 Launch Image Source 作为 Image.Assets。在 Image.assets 文件夹中创建启动图像资产。

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

于 2015-10-23T06:25:15.293 回答
0

我的横向应用程序也遇到了这个错误。以下 carlodurso 的解决方案有效:

  1. 勾选“横向”框
  2. 将图像拖放到该位置。
于 2014-11-16T16:40:49.643 回答
0

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

编辑添加转到应用程序图标和启动图像启动屏幕文件应该是空白/emtpy

于 2014-11-30T21:08:34.297 回答
0

我尝试打开一个新项目,并按照您设置启动屏幕的相同步骤进行操作。

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

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

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

删除指定的“启动屏幕文件”和清理:产品->清理,从顶部菜单中,启动图像终于出现了。

也许这会有所帮助?

于 2014-10-01T18:24:40.893 回答
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
...
...
...
于 2015-06-12T22:00:23.333 回答
0

For some reason, I had to change the asset catalog location to "relative to project" for this to work.

I had also deleted the app from my phone and reinstalled, but it was probably the "relative to project" that did it.

于 2016-01-03T01:53:43.190 回答
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;
}

我希望对其他人有所帮助。

于 2016-01-06T18:10:33.320 回答
0

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

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

于 2016-12-01T10:53:32.953 回答
0

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

于 2017-04-24T16:16:28.373 回答
-2

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

于 2016-01-06T21:46:10.967 回答