之前写过IOS开发之国际化localization多语言支持,说的是软件内的文字语言的多语言设置,可以通过这个iOS获取当前系统语言文章来获取系统使用的语言,现在又碰到要软件启动图也弄成多语言,谁让产品的脑洞大呢,所以就只好想办法实现了,幸亏苹果提供了一个info.plist设置的key叫做UILaunchImages,顺利实现多语言。
UILaunchImages
是一个数组,每个对象对应了一个启动图,每个启动图有四个键需要设置,分别为名字、最低版本、大小、方向。这里每个启动图都有几套,分别对应需要设置的每个多语言的版本,下面的操作先使用一套即可,比如使用中文的那套启动图。
一、项目设置
1.1、首先取消掉用storybord或者使用LaunchImage设置的启动图
1.2、启动图片命名
根据启动图片的分辨率大小设置不同的命名,之前文件是自己命名的,发现并没有生效,在参考文章里面stackoverflow上面有用户说是命名问题,所以这里严格按照命名使用
启动图分辨率 | 图片命名 | 对应的系统 | 对应机型 |
---|---|---|---|
320x480px | Default.png | iPhone Portrait iOS5,6 – 1x | pre iPhone5 |
640x960px | Default@2x.png | "iPhone Portrait iOS5,6 – 2x" and "iPhone Portrait iOS7,8 – 2x" | pre iPhone5 |
640x1136px | Default-568h@2x.png | "iPhone Portrait iOS5,6 – Retina 4" and "iPhone Portrait iOS7,8 – Retina 4" | iPhone5 |
750 x 1334px | Default-iPhone6.png | "iPhone Portrait iOS8 – Retina HD 4.7" | iPhone 6 |
1242 x 2208px | Default-iPhone6Plus.png | "iPhone Portrait iOS8 – Retina HD 5.5" and "iPhone Landscape iOS8 – Retina HD 5.5" | iPhone 6 Plus |
768x1024px | Default-Portrait~ipad.png | For iPad | |
1024x768px | Default-Landscape~ipad.png | For iPad | |
1536x2048px | Default-Portrait@2x~ipad.png | For iPad | |
2048x1536px | Default-Landscape@2x~ipad.png | For iPad | |
768x1024px | Default-PortraitUpsideDown.png | Possible Other iPad Images | |
1024x768px | Default-LandscapeLeft.png | Possible Other iPad Images | |
1024x768px | Default-LandscapeRight.png | Possible Other iPad Images | |
1536x2048px | Default-PortraitUpsideDown@2x.png | Possible Other iPad Images | |
2048x1536px | Default-LandscapeLeft@2x.png | Possible Other iPad Images | |
2048x1536px | Default-LandscapeRight@2x.png | Possible Other iPad Images | |
1125px × 2436px | Default-812h@3x.png | iPhone X |
1.2.1、启动图片的横竖屏分辨率
参考:https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/
Device | Portrait size | Landscape size |
---|---|---|
12.9" iPad Pro | 2048px × 2732px | 2732px × 2048px |
10.5" iPad Pro | 1668px × 2224px | 2224px × 1668px |
9.7" iPad | 1536px × 2048px | 2048px × 1536px |
7.9" iPad mini 4 | 1536px × 2048px | 2048px × 1536px |
iPhone X | 1125px × 2436px | 2436px × 1125px |
iPhone 8 Plus | 1242px × 2208px | 2208px × 1242px |
iPhone 8 | 750px × 1334px | 1334px × 750px |
iPhone 7 Plus | 1242px × 2208px | 2208px × 1242px |
iPhone 7 | 750px × 1334px | 1334px × 750px |
iPhone 6s Plus | 1242px × 2208px | 2208px × 1242px |
iPhone 6s | 750px × 1334px | 1334px × 750px |
iPhone SE | 640px × 1136px | 1136px × 640px |
1.3、添加启动图片
先拖动一套启动图拖动到工程,比如只拖动中文的启动图到工程,然后选中图片在xcode右侧选择多语言,选中需要设置的语言版本,会自动生成多语言的图片和文件夹,当然这时候的多语言图片都是相同的。
1.4、替换其他语言的文件夹下的启动图
选中需要设置的语言版本,会自动生成多语言的图片和文件夹,当然这时候的多语言图片都是相同的,都是刚开始拖进去的中文图片,然后找到本地对应的文件夹,使用外文图片同名覆盖即可。
1.5、在info.plist配置启动图
在项目的info.plist文件中,注意是Info.plist
文件,不是InfoPlist.strings
文件,添加UILaunchImages,我现在的软件只是需要竖屏,不需要横屏,所以只配置了竖屏的启动图
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-568h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-iPhone6</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-iPhone6Plus</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-Portrait~ipad</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-PortraitUpsideDown</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
</array>
配置完毕之后是这样的
这样配置之后,删除软件重新运行即可生效,需要删除软件
启动页只会保留一份, 也就是说, 你第一次加载完以后, 切换了语言, 再重新打开App, 它的启动页不会跟着更新的。 这也符合苹果的用户交互指引。
如果你想要动态修改启动页面图LaunchImage, 抱歉!根据苹果的用户交互指引,该页面是在程序加载时显示的,不建议动态修改.
正确的做法一般都是用固定的图片做启动页面图,在启动页面结束之后做任何你想做的事.
如果真想动态修改启动页面,启动页面是固定的名字,可以在程序执行之后强制把页面替换掉,不过这样APP可能会被拒.
iOS11的iPhoneX更新(2017-10-11)
iphoneX的命名为Default-812h@3x.png
并且记得在info.plist里面的UILaunchImages加上iphoneX的配置
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-812h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 812}</string>
</dict>
参考文章
- Default (Launch) Image
- iOS Human Interface Guidelines
- iOS启动页多语言
- How to use UILaunchImages Key
- iOS应用中如何获取启动图
- A launch image named “-568h@2x.png” is required to run at native resolution on Retina 4 devices
- Missing default-568h@2x launch image, launch image won't display
- Launching your iPhone Application in Landscape
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/559.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!
10 条评论
ERROR ITMS-90096: "Your binary is not optimized for iPhone 5 - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image referenced in the Info.plist under UILaunchImages with a UILaunchImageSize value set to {320, 568}. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images. Learn more about iPhone 5 support and app launch images by reviewing the 'iOS Human Interface Guidelines' at https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen."
按照你的方法可以实现多语言,但是提交appstore 一直提示iphone5没适配
你好,我也碰到了这个问题,请问你后面是怎么解决的呢?
这个报错检查你的那个320,568的图片啊,包括是不是png格式和指定的那个名字的图片有没有
楼主,我按照你的方法设置的,为什么启动图变成黑色的了呢?
你的启动图设置成是通过图片,而不是通过那个launch.storyboard做启动图的吧
是的,现在有个问题,就是我加载成功了,然后上下出现黑边,这个问题有没有遇到?
黑边是因为对应机型的启动图不存在,并且你换了启动图要卸载软件重装才可以看到效果,我现在人在高铁上,网络不好
已添加iOS11的iPhoneX的适配,可以查看文章内iOS11的iPhoneX更新(2017-10-11)
楼主 为什么我切换了系统语言,但是启动页还是不会改变呢?求解释一下?
看文章中间的说明