启动图像不会显示在我的iOS应用程序中

时间:2014-10-01 12:45:56

标签: ios8 xcode6 xcasset launchimage

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

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

我已经确定了我的"启动屏幕文件"设置为LaunchScreen.xib。

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

27 个答案:

答案 0 :(得分:234)

所以这对于一些应该是微不足道的事情来说是非常痛苦的。这是我做的:

使用xcassets

我决定使用.xcassets而不是.xib进行发布。我删除了.xib。如果你的项目中已有images.xcassets,那么你可以添加一个来自File> New> file:

AddNewASsetCatalog

创建启动图像集

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

Add new Launch image and app icon

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

然后我确保" Apps图标和图像设置"在我的目标中如下。

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

Apps icon and image sets

添加图片

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

Devices

我很快意识到这不是这种方式,我收到了警告: "需要适用于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版本上进行部署

希望这有助于某人。

Adding all devices

enter image description here

答案 1 :(得分:31)

LaunchScreen.xib和信息值Launch screen interface file base name来自我在创建项目时创建的占位符。如果您想专门为启动屏幕使用Images.xcassets,请删除LaunchScreen.xibinfo.plist项。

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

答案 2 :(得分:19)

Xcode 8:

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

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

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

答案 3 :(得分:16)

我的解决方案是创建所有启动图像。 enter image description here

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

最后,如果项目没有Launch Screen.xib,则添加该文件并保持原样。 enter image description here

答案 4 :(得分:12)

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

答案 5 :(得分:10)

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

答案 6 :(得分:6)

只需删除并重新安装适合我的应用程序:

  • 在模拟器中测试

    1. 在模拟器中删除应用程序。
    2. 退出并重新启动模拟器。
    3. 在Xcode中再次运行项目。
  • 在设备上测试

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

答案 7 :(得分:6)

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

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

<强> 1。准备你的.xcassets

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

  • 将启动屏幕图像(或矢量文件)添加到项目中
  • 转到.xcassets并创建新图像集。在图像的“属性”窗口中,选择 Scales - &gt;单一尺度
  • 将矢量文件拖放到图像集中。

Create an Image Set for your .xcassets

<强> 2。创建启动屏幕文件

Create a Launch Screen file

第3。将您的图片添加到启动屏幕文件

  • 将图像视图对象添加到启动屏幕文件(删除自动创建的标签)。此图像视图应参考之前的 .xcassets图像集。您可以从名称属性中引用它。在此阶段,您应该在图像视图中正确查看启动屏幕图像。
  • 为此图像视图添加约束以保持纵横比取决于屏幕分辨率。

Add the splash screen image to your Launch Screen file

<强> 4。将启动屏幕文件添加到目标

Fianlly,在Target General属性中,参考Launch Screen文件。 Target Properties and Launch Screen

启动您的应用,并显示您的初始屏幕。也可以试试iPhone6&amp; iPhone6 +,您的应用程序应该正确显示,不需要任何升级(启动屏幕文件旨在这样做)。

答案 8 :(得分:5)

经过几个小时的沮丧,我决定用这种方式。它适用于iPhone和iPad(在Xcode 6.1上)

  
      
  1. 文件&gt;&gt;新文件&gt;&gt;用户界面&gt;&gt;启动屏幕
  2.   
  3. 创建新的键/值:&#34;启动屏幕界面文件基本名称&#34; /&#34;您的启动屏幕名称&#34;在YourApp-Info.plist中
  4.   

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

File>>New File>> User Interface >> Launch Screen

Create new key/value "Launch screen interface file base name"/"Your Launch Screen Name" in YourApp-Info.plist

答案 9 :(得分:4)

我已经阅读了xCode 6中的一个错误,该错误会阻止仅横向应用显示启动图像。

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

enter image description here

答案 10 :(得分:2)

做Spectravideo328回答的问题:

尝试UNCHECK iOS7.0及更高版本框并检查资产目录中的iOS6.0及之前框。 iOS7.0 Launch Image似乎存在错误。 (除了320x480之外,它们都具有相同的启动图像)

因为我的声誉(非常新成员),我不能发布我的照片

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

答案 11 :(得分:2)

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

答案 12 :(得分:2)

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

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

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

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

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

痛苦但有效。 乙
enter image description here

答案 13 :(得分:1)

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

答案 14 :(得分:1)

一种方法是添加&#34;启动屏幕&#34; LaunchScreen.xib),将图像粘贴到UIImageView,然后将其设置为&#34 ; 容器中的水平中心&#34;和&#34; 容器中的垂直中心&#34;如果您使用自动布局,请在&#34;对齐&#34;

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

不要忘记将LaunchScreen.xib放入&#34;启动屏幕文件&#34;。

答案 15 :(得分:1)

在我开始使用Xcode 6.1并更改了我的启动器图像后,我遇到了同样的问题。我在资产目录中拥有所有图像。 我只会得到一个黑屏而不是预期的静态图像。在尝试了这么多东西之后,我意识到问题在于资产目录中有项目目标会员资格&#39;在FileInspector视图中勾选。 Tick it to ON做了魔术,图像开始出现在App发布上。

答案 16 :(得分:1)

  • 根据Apple指南确保您的图像尺寸准确。
  • 确保您只选择一个选项,即启动屏幕文件或启动图像源。您可以在项目构建设置中找到这两个选项 - &gt;一般

我的建议是选择Launch Image Source作为Image.Assets。在Image.assests文件夹中创建初始图像资源。

正确配置的参考图像: enter image description here

答案 17 :(得分:0)

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

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

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

答案 18 :(得分:0)

我只想出了这个。我的启动图像没有显示,我在设备(iPhone 6,7 +)或testFlight上启动时会出现白屏。修复:重命名&#34; Landing_screen.png&#34;只是&#34; Landing_screen&#34;删除.png部分。 Xcode中的图像图标更改为白色图标,并且在启动屏幕故事板中,图像现在显示为问号。现在出现启动图像,而不是白色屏幕。我的设置:我使用Swift 3.1和Xcode 8.3.1。在LaunchScreen.storyboard中,我添加了一个简单的图像视图并拉伸图像以适合视图控制器。我将自动布局约束Top / Bottom / Leading / Trailing space设置为superview为0。

答案 19 :(得分:0)

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

LaunchScreen.storyboard - &gt;是初始视图控制器

答案 20 :(得分:0)

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

我知道这是一个老问题,但是使用Xcode 7.2我仍然收到消息,我已经解决了这个问题:

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

enter image description here

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

enter image description here

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;
}

我希望能帮到其他人。

答案 21 :(得分:0)

出于某种原因,我不得不将资产目录位置更改为&#34;相对于项目&#34;为此工作。

我还从手机中删除了应用程序并重新安装,但它可能是&#34;相对于项目&#34;做到了。

答案 22 :(得分:0)

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

我修改了这个,当我更改构建配置以释放Launch Image Source按钮时,我不得不再次选择Use Asset Catalog。

对于那些好奇的人来说,这就是我的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
...
...
...

答案 23 :(得分:0)

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

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

答案 24 :(得分:0)

我的风景专用app也遇到了这个bug,请按照carlodurso的解决方案进行操作:

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

答案 25 :(得分:0)

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

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

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

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

删除指定的“启动屏幕文件”并清除后:产品 - &gt;清洁,从顶部菜单,最终显示启动图像。

也许这会有所帮助?

答案 26 :(得分:-2)

对我来说,当我删除LaunchScreen.xib并将其更改为情节提要文件LaunchScreen.storyboard时,它就有效。