iOS软件启动图的多语言化

之前写过IOS开发之国际化localization多语言支持,说的是软件内的文字语言的多语言设置,可以通过这个iOS获取当前系统语言文章来获取系统使用的语言,现在又碰到要软件启动图也弄成多语言,谁让产品的脑洞大呢,所以就只好想办法实现了,幸亏苹果提供了一个info.plist设置的key叫做UILaunchImages,顺利实现多语言。

UILaunchImages是一个数组,每个对象对应了一个启动图,每个启动图有四个键需要设置,分别为名字、最低版本、大小、方向。这里每个启动图都有几套,分别对应需要设置的每个多语言的版本,下面的操作先使用一套即可,比如使用中文的那套启动图。

一、项目设置

1.1、首先取消掉用storybord或者使用LaunchImage设置的启动图

LaunchImages屏幕快照 2016-03-12 下午4.44.06.png

1.2、启动图片命名

根据启动图片的分辨率大小设置不同的命名,之前文件是自己命名的,发现并没有生效,在参考文章里面stackoverflow上面有用户说是命名问题,所以这里严格按照命名使用

启动图分辨率图片命名对应的系统对应机型
320x480pxDefault.pngiPhone Portrait iOS5,6 – 1xpre iPhone5
640x960px[email protected]"iPhone Portrait iOS5,6 – 2x" and "iPhone Portrait iOS7,8 – 2x"pre iPhone5
640x1136px[email protected]"iPhone Portrait iOS5,6 – Retina 4" and "iPhone Portrait iOS7,8 – Retina 4"iPhone5
750 x 1334pxDefault-iPhone6.png"iPhone Portrait iOS8 – Retina HD 4.7"iPhone 6
1242 x 2208pxDefault-iPhone6Plus.png"iPhone Portrait iOS8 – Retina HD 5.5" and "iPhone Landscape iOS8 – Retina HD 5.5"iPhone 6 Plus
768x1024pxDefault-Portrait~ipad.pngFor iPad
1024x768pxDefault-Landscape~ipad.pngFor iPad
1536x2048px[email protected]~ipad.pngFor iPad
2048x1536px[email protected]~ipad.pngFor iPad
768x1024pxDefault-PortraitUpsideDown.pngPossible Other iPad Images
1024x768pxDefault-LandscapeLeft.pngPossible Other iPad Images
1024x768pxDefault-LandscapeRight.pngPossible Other iPad Images
1536x2048px[email protected]Possible Other iPad Images
2048x1536px[email protected]Possible Other iPad Images
2048x1536px[email protected]Possible Other iPad Images
1125px × 2436px[email protected]iPhone X

1.2.1、启动图片的横竖屏分辨率

参考:https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/

DevicePortrait sizeLandscape size
12.9" iPad Pro2048px × 2732px2732px × 2048px
10.5" iPad Pro1668px × 2224px2224px × 1668px
9.7" iPad1536px × 2048px2048px × 1536px
7.9" iPad mini 41536px × 2048px2048px × 1536px
iPhone X1125px × 2436px2436px × 1125px
iPhone 8 Plus1242px × 2208px2208px × 1242px
iPhone 8750px × 1334px1334px × 750px
iPhone 7 Plus1242px × 2208px2208px × 1242px
iPhone 7750px × 1334px1334px × 750px
iPhone 6s Plus1242px × 2208px2208px × 1242px
iPhone 6s750px × 1334px1334px × 750px
iPhone SE640px × 1136px1136px × 640px

1.3、添加启动图片

先拖动一套启动图拖动到工程,比如只拖动中文的启动图到工程,然后选中图片在xcode右侧选择多语言,选中需要设置的语言版本,会自动生成多语言的图片和文件夹,当然这时候的多语言图片都是相同的。

屏幕快照 2017-05-24 16.47.18.png

屏幕快照 2017-05-24 16.46.54.png

屏幕快照 2017-05-24 16.47.33.png

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>

配置完毕之后是这样的

屏幕快照 2017-05-24 16.54.22.png

这样配置之后,删除软件重新运行即可生效,需要删除软件

启动页只会保留一份, 也就是说, 你第一次加载完以后, 切换了语言, 再重新打开App, 它的启动页不会跟着更新的。 这也符合苹果的用户交互指引。

如果你想要动态修改启动页面图LaunchImage, 抱歉!根据苹果的用户交互指引,该页面是在程序加载时显示的,不建议动态修改.

正确的做法一般都是用固定的图片做启动页面图,在启动页面结束之后做任何你想做的事.

如果真想动态修改启动页面,启动页面是固定的名字,可以在程序执行之后强制把页面替换掉,不过这样APP可能会被拒.

iOS11的iPhoneX更新(2017-10-11)

iphoneX的命名为[email protected]

屏幕快照 2017-10-11 19.14.15.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>

参考文章

Last modification:October 11th, 2017 at 07:16 pm
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

7 comments

  1. 佛前一粒沙

    楼主,我按照你的方法设置的,为什么启动图变成黑色的了呢?

    1. 东东
      @佛前一粒沙

      你的启动图设置成是通过图片,而不是通过那个launch.storyboard做启动图的吧

      1. 佛前一粒沙
        @东东

        是的,现在有个问题,就是我加载成功了,然后上下出现黑边,这个问题有没有遇到?

        1. 东东
          @佛前一粒沙

          黑边是因为对应机型的启动图不存在,并且你换了启动图要卸载软件重装才可以看到效果,我现在人在高铁上,网络不好

          1. 东东
            @东东

            已添加iOS11的iPhoneX的适配,可以查看文章内iOS11的iPhoneX更新(2017-10-11)

            1. 佛前一粒沙
              @东东

              楼主 为什么我切换了系统语言,但是启动页还是不会改变呢?求解释一下?

              1. 东东
                @佛前一粒沙

                看文章中间的说明

                这样配置之后,删除软件重新运行即可生效,需要删除软件

                启动页只会保留一份, 也就是说, 你第一次加载完以后, 切换了语言, 再重新打开App, 它的启动页不会跟着更新的。 这也符合苹果的用户交互指引。

Leave a Comment