启动图像未显示在我的 iOS 应用程序中
Posted
技术标签:
【中文标题】启动图像未显示在我的 iOS 应用程序中【英文标题】:Launch Image does not show up in my iOS App 【发布时间】:2014-11-26 07:33:56 【问题描述】:我想在我的应用中显示一个简单的启动屏幕,使用 Xcode 6.0.1 构建。
我以两种方式添加了启动屏幕:作为 XIB(默认名称为 LaunchScreen.xib)和作为 xcassets 中设置的启动图像。
我已确保我的“启动屏幕文件”设置为 LaunchScreen.xib。
我已经模拟了所有可用的设备(例如,“iPhone5 ios8”/“iPhone5s iOS8”/“iPhone6 iOS8”。请注意,模拟器中只有 iOS 8 可用)。
【问题讨论】:
启动屏幕中使用的图像不应该在 Images.xcassets 中,它们应该放在包中,以检查是否尝试使用不在 xcassets 中的测试图像,并设置另一种背景颜色到 .xib 本身,看看它是否正在加载 .xib @JuanBoero 为什么在捆绑包中?它们在构建时使用,而不是运行时。 查看***.com/a/49802421/5790492 【参考方案1】:所以这对于本应是微不足道的事情来说是相当痛苦的。这是我所做的:
使用 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 是多少?并确保选中所有这些框。所以对我来说,我的目标是 8.0 的 iPhone 5s、6 和 6 Plus,但鉴于 iPhone 5s 可以与 7.0 一起存在,我还需要选中 7.0 框以显示图像占位符。换句话说,右侧的 (iOS) 复选框显示了该设备可用的最低 iOS 版本,您需要单击它以显示图像占位符并放置图像,无论您是否在此 iOS 版本上部署.
希望这对某人有所帮助。
【讨论】:
没有启动屏幕,键盘大小不同,知道如何解决这个问题screencast.com/t/Vk18vuhSqZv 这玩意太烦人了。 你先生,赢得了互联网。 这行得通,但只有在从设备中删除应用程序并重新安装时才能看到更改。即使在清理缓存和删除派生数据之后,旧的启动屏幕似乎仍然存在。 ahhhh我需要从手机中删除我的应用程序进行更改以产生影响,我刚浪费了大量时间:'( span> 【参考方案2】:根据我的经验,LaunchScreen.xib
和信息值 Launch screen interface file base name
都是在创建项目时创建的占位符。如果您想将Images.xcassets
专门用于您的启动屏幕,请删除LaunchScreen.xib
和info.plist
项。
如果您提供info.plist
设置,您的应用将使用xib
而不是您的Images.xcassets
【讨论】:
很好的直接解决方案。 “arcady bob”解决方案对我有用:我打开“info.plist”并删除元素“启动屏幕界面文件基本名称”,运行我的应用程序,启动图像终于出现了。跨度> 这是旧的,但这是为我解决的问题。【参考方案3】:Xcode 8:
LaunchScreen.xib 中使用的图像不应放在 .xcassets 上,请尝试将它们放入包中。
看起来在 .xib 加载时,.xcassets 中的图像尚不可用。
编辑:由于某些不透明的原因,添加了一些本地化后,启动屏幕停止工作,现在它与资产中的图像一起工作,非常奇怪。
【讨论】:
补充您的答案...最近我尝试在我的“Launch Screen.storyboard”文件中使用自定义字体。阅读此SO answer 并进行更多研究/测试后,我无法弄清楚的原因。图像也是如此……Xcode 会为您的应用启动屏幕准备纵向和横向快照,并(当前)保存在此处:/Library/Caches/Snapshots/<<app_bundle>>/
,在加载支持文件(包括自定义字体和资产目录)之前完成。
我注意到从 .xcasset 加载时,较大的图像 (>512px) 没有显示在我的 LaunchScreen 上,而较小的图像会显示。感谢您提及您的解决方案!
非常感谢,我花了将近3个小时来调试这个问题。原来.xcasstes 是罪魁祸首
同样,将 xib 中使用的图像文件从 1024x1024 更改为小于 512px 的分辨率已修复。
@JuanBoero 在捆绑包中?它们在构建时使用,而不是运行时。【参考方案4】:
我的解决方案是创建所有启动图像。
然后我将 Launch Images Source 设置为 LaunchImage 资源,并将启动屏幕文件留空。
最后,如果项目没有 Launch Screen.xib,则添加该文件并保持原样。
【讨论】:
添加这么多图片。增加 ipa 大小。 XIB Launch 就是解决方案。例如,如果你的背景是纯色的,中间只有一个标志,那么建议我们使用 XIB。只需设置背景颜色并在中间添加一个 UIImage 即可。但它又是一个选择 添加 Launch Sceen.xib 而不使用它,实际上对我有用。谢谢! Xcode 6 不会让我更改“启动图像源”,但会保留此文本,我不允许修改:“使用资产目录” - 它的行为更像是一个按钮,如果我点击它,我可以选择:将启动图像迁移到资产目录......不知道从哪里开始。还有其他人遇到这个吗?我已经将不同大小的预制启动图像的整个文件夹导入到 LaunchImage 资产目录中。没有错误消息,但即使按照上述说明、重建、重新启动计算机后,我也看不到我的启动图像或应用程序图像...【参考方案5】:对我来说,当我卸载应用程序然后重新启动模拟器时它就起作用了。 再次安装时,启动图像按预期出现。 这也适用于实际设备。
【讨论】:
卸载应用程序后,我还不得不重新启动设备。此外,我清除了 Xcode 缓存,并重新启动了 Xcode。【参考方案6】:对于使用Asset Catalog's Launch Image
的人来说,这是我学到的最难的方法,我遇到了这种情况,首先给我一个jpg
文件,然后我要求他们将其转换为PNG
。
我非常信任他们,所以我首先在互联网上搜索了为什么启动图像没有显示并且所有解决方案都无济于事,然后我尝试放回旧的启动图像并且工作正常,我就在那里认为我拥有的不是正确的 PNG
文件。
TL;DR: 确保您实际上使用的是正确的 PNG 文件,而不是具有重命名扩展名的文件。
【讨论】:
小心在文件扩展名中使用大写字母,虽然设备会正确定位文件,但模拟器可能不会。【参考方案7】:从 Info.plist 文件中删除“启动屏幕界面文件基本名称”并删除“启动屏幕.xib”对我有用。
【讨论】:
这解决了我的问题。但我认为苹果建议其他人使用 xib 文件而不是生成 9 个不同的图像会更好。【参考方案8】:只需删除并重新安装对我有用的应用程序:
在模拟器中测试
-
删除模拟器中的应用。
退出并重新启动模拟器。
在 Xcode 中再次运行项目。
在设备上测试
-
从设备中删除应用程序。
在 Xcode 中再次运行项目。
【讨论】:
对于设备,不仅删除和重新安装对我不起作用。重启手机(设备)是我的解决方案【参考方案9】:接受答案的问题是如果您不设置启动屏幕文件,您的应用程序将在 iPhone 6 和 6+ 等设备上处于升级模式 => 模糊渲染。
以下是我为在每台设备上提供完整的工作解决方案(我的目标是 iOS 7.1 并使用 Xcode 8)所做的(真的,我对这个升级问题感到疯狂)
1.准备你的 .xcassets
为了简化它,我使用了一个矢量 .PDF 文件。它非常方便,避免为每个分辨率(1x、2x、3x ...)创建多个图像。我还假设您已经创建了 xcassets。
将您的启动屏幕图像(或矢量文件)添加到您的项目中 转到您的 .xcassets 并创建一个新图像集。在图像的属性窗口中,选择 Scales -> Single Scale 将矢量文件拖放到图像集中。2。创建您的启动屏幕文件
3.将您的图像添加到您的启动屏幕文件
将图像视图对象添加到启动屏幕文件(删除自动创建的标签)。此图像视图应参考之前的 .xcassets 图像集。您可以从 Name 属性中引用它。在这个阶段,您应该可以在图像视图中正确看到启动屏幕图像。 为此图像视图添加约束,以根据屏幕分辨率保持纵横比。4.将启动屏幕文件添加到目标
最后,在您的 Target General 属性中,请参阅 Launch Screen 文件。
启动您的应用程序,您的启动画面应该会显示出来。也可以在 iPhone6 和 iPhone6+ 上尝试,您的应用程序应该可以正确显示而无需任何放大(启动屏幕文件旨在执行此操作)。
【讨论】:
我试过了,但没用:***.com/questions/43168145/… 知道为什么吗?非常感谢。 我刚刚想通了。我的启动图像未显示,在设备(iPhone 6、7+)或 testFlight 上启动时出现白屏。修复:将“Landing_screen.png”重命名为“Landing_screen”,删除 .png 部分。 Xcode 中的图像图标更改为白色图标,并且在启动屏幕故事板中,图像现在显示为问号。现在出现的是 Launch 图像,而不是白屏。 我也有类似的问题。使用矢量图形 (pdf) 时,图像未显示在午餐屏幕中,但如果我使用与 Main 相同的情节提要(显示在午餐屏幕之后),我可以看到图像。所以,我的猜测是矢量图形不适合作为午餐屏幕。 我设法通过重新启动模拟器使其正常工作。之前我删除了应用程序并清理了项目,但启动图像仍然没有显示。【参考方案10】:在对此感到沮丧几个小时后,我决定使用这种方式。它适用于 iPhone 和 iPad(在 Xcode 6.1 上)
文件 >> 新文件 >> 用户界面 >> 启动屏幕 在 YourApp-Info.plist 中创建新的键/值:“启动屏幕界面文件基本名称”/“您的启动屏幕名称”
一张图片价值超过千字。请看下面:
【讨论】:
【参考方案11】:我读到了 Xcode 6 中的一个错误,该错误会阻止仅横向应用程序显示启动图像。
尝试在 Images.xcassets 中设置图像和方向:
【讨论】:
你想用截图告诉你什么? 检查属性检查器的方向。【参考方案12】:存在一个错误,即存储在资产文件中的 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
痛苦但有效。 乙
【讨论】:
【参考方案13】:我已经尝试了所有方法,但解决方案非常简单。只需在 LaunchScreen.storyboard 上使用 .jpg 文件而不是 .png 文件。似乎 iOS 不会在启动屏幕上呈现 .png 文件或相对较大的图像。
【讨论】:
我的启动屏幕中有一个 png - 在 Xcode 中创建故事板时显示非常好 - 但在实际尝试在真实设备上运行应用程序时只会显示为黑色。拉了一会儿头发后,我用jpg替换了,现在可以正常工作了。谢谢!【参考方案14】:做 Spectravideo328 回答的事情,然后:
尝试在资产目录中取消选中 iOS 7 和更高版本框并选中 iOS 6 和更早版本框。 iOS 7 Launch Image 似乎存在错误。 (除了 320x480 之外,它们都具有相同的启动图像)
希望这对我有帮助!
【讨论】:
【参考方案15】:我在我的资产目录中设置了“LaunchImage”,并简单地清除了“启动屏幕”字段,瞧!我有启动图像出现......
【讨论】:
使用该选项,您将在应用中获得旧版规模。 @GeorgeMays 如何使用 Launch Images 而不获得传统规模?【参考方案16】:一种方法是同时添加“启动屏幕”(LaunchScreen.xib
),将图像粘贴到UIImageView
,然后将其设置为“容器中的水平中心 " 和 "容器中的垂直中心" 如果您使用的是自动布局,则在 "Align" 中。
屏幕: http://i.stack.imgur.com/CfnHT.png
不要忘记将LaunchScreen.xib
放入“启动屏幕文件”中。
【讨论】:
【参考方案17】:在我开始使用 Xcode 6.1 并更改了我的启动器图像后,我遇到了同样的问题。我在资产目录中有所有图像。 我只会得到黑屏而不是预期的静态图像。在尝试了这么多事情之后,我意识到问题在于资产目录在其 FileInspector 视图中勾选了项目“目标成员资格”。将其勾选为 ON 确实神奇,图像开始出现在应用启动时。
【讨论】:
【参考方案18】: 确保您的图片尺寸符合 Apple 指南。 确保您只选择一个选项,启动屏幕文件或启动图像源。您可以在 Project build settings -> General 中找到这两个选项我的建议是选择 Launch Image Source 作为 Image.Assets。在 Image.assets 文件夹中创建启动图像资源。
正确配置的参考图片:
【讨论】:
【参考方案19】:如果您已从之前的图像更改了启动图像,请注意以下事项:
之前安装了应用的设备/模拟器,仍然显示之前的图像并拒绝显示新的图像(卸载并重新安装应用没有帮助) 之前未安装应用的设备/模拟器,显示新的启动图像这可能是因为 iOS 对启动图像的缓存。重启设备应该可以解决问题。
【讨论】:
【参考方案20】:我尝试打开一个新项目,并按照您设置启动屏幕的相同步骤进行操作。
默认情况下,.xib 被设置为“启动屏幕文件”,并且带有标签的白屏确实在模拟器中显示了半秒。
然后我“启动图像源”并将其设置为使用我添加到项目中的背景图像生成的 Images.xcassets。 (到目前为止一切都很好)
重新运行模拟器,启动图像不显示...
删除指定的“启动画面文件”并清理:产品->清理,从顶部菜单中,启动图像终于出现了。
也许这会有所帮助?
【讨论】:
Terrence - 您是否尝试再次运行模拟器?我问的原因是这种技术在我第一次运行时就起作用了。但是在重新运行模拟器时,我又回到了原点。 第二次评论的时候我没有尝试。现在我看到了同样的问题。【参考方案21】:有一个文件“LaunchScreen.xib”自动添加到您的项目中 删除它会将 xCode 转换为使用 Images.xcassets 中的默认图像
编辑添加 转到应用程序图标和启动图像 启动屏幕文件应为空白/空
【讨论】:
【参考方案22】:我遇到了一个非常奇怪的错误。显然我的启动图像源仅用于调试配置而不是发布。这导致我在运行调试配置时出现启动屏幕,但是当我更改为发布时,我只是得到一个黑屏。
我在更改构建配置以释放启动图像源按钮时修复了此问题,我不得不再次选择使用资产目录。
对于那些好奇的人,这就是我的 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】:出于某种原因,我必须将资产目录位置更改为“相对于项目”才能正常工作。
我还从手机中删除了该应用并重新安装,但它可能是“相对于项目”的。
【讨论】:
【参考方案24】:*(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;
希望对其他人有所帮助。
【讨论】:
我尝试了类似的方法,但没有成功:***.com/questions/43168145/… 知道为什么吗?非常感谢。 这一定是 Xcode 开发中比较烦人的小 FU 之一。 (显然)要设置的东西很少,但我创建的每个项目都占用了太多时间。每次我解决它时,它似乎都是随机的,一旦它开始工作,我祈祷我不会再次意外触摸该文件/进程。新项目,同样疯狂的需要弄清楚为什么启动屏幕中间的简单图形没有显示。所有设置都按要求,但也许月相是错误的?【参考方案25】:这对我有用。单击 LaunchScreen.storyboard 然后在右侧面板中您可以选择“是初始视图控制器”复选框。
LaunchScreen.storyboard -> 是初始视图控制器
【讨论】:
【参考方案26】:我刚刚想通了。我的启动图像未显示,在设备(iPhone 6、7+)或 testFlight 上启动时出现白屏。修复:将“Landing_screen.png”重命名为“Landing_screen”删除 .png 部分。 Xcode 中的图像图标更改为白色图标,并且在启动屏幕故事板中,图像现在显示为问号。现在会出现启动图像,而不是白屏。我的设置:我使用 Swift 3.1 和 Xcode 8.3.1。在 LaunchScreen.storyboard 中,我添加了一个简单的图像视图并拉伸图像以适合视图控制器。我将自动布局约束 Top/Bottom/Leading/Trailing 空间设置为 superview 为 0。
【讨论】:
【参考方案27】:我的横向应用程序也遇到了这个错误。以下 carlodurso 的解决方案有效:
-
勾选“横向”框
将图像拖放到该位置。
【讨论】:
【参考方案28】:对我来说,当我删除 LaunchScreen.xib
并将其更改为情节提要文件 LaunchScreen.storyboard
时,它会起作用。
【讨论】:
以上是关于启动图像未显示在我的 iOS 应用程序中的主要内容,如果未能解决你的问题,请参考以下文章
在我的应用程序中使用简单适配器未在 ListView 上显示图像
iPhone 应用程序启动图像未显示在 iPad mini 中
cloudkit 数据未显示在提交的应用程序 iOS 8.1 中