iOS 启动页多语言

2023-10-26

iOS 启动页多语言

个人网站: Colin’s Nest 转载请注明出处。
iOS开发交流群: 184226705. 欢迎加入~


启动页适配多语言, 想必很多 App 都有类似的需求。但是之前尝试过程中, 发现 “多语言” 的那几种实现方式, 在欢迎页上都不适应, 直到遇到了 UILaunchImages ~ 下文将详细描述如何实现启动页多语言。

传统多语言设置

说起多语言, 我们无非这样实现:

  1. 为 App 添加多语言支持。LaunchImages_0

  2. 添加对应的配置, 资源。 比如:

    文本: LaunchImages_1

    图片:LaunchImages_2

  3. 使用对应资源, 比如:

    label.text = NSLocalizedString(@"多语言", nil);

再麻烦一点, 就是xib, storyboard的多语言的。 但是原理一样, 这样的方式都能实现多语言支持。So, 就是这么简单~

emoji

然而, 启动页貌似不吃这套 ,,,

启动页设置

先说说我们如何设置启动页吧。

Assets.xcassets 这玩意引入之前, 我们是对启动页图片按规范命名, 比如 Default, -568h, @2x, @3x 之类的, 让系统帮助我们自动判断对应的启动页图片。

Assets.xcassets 之后, 我们都了一种选择, 可以直接拖拽图片到 LaunchImage 中, 并且图片命名也没那么多要求。

LaunchImage_3

再之后, 多了 LaunchScreen.storyboard , 意味着我们有了更多的选择, 可以做更多的事情, 把它当做一个xib, 拖拽相关控件上去就好~

方式很多, 是否意味着实现多语言的办法也很多 ?

然而并不是,, emoji

不论是对图片 进行多语言, 还是 LaunchScreen.storyboard 多语言, 发现启动页始终没有跟着系统语言变, 血崩..

当然, 办法并不是没有, 只是没找到对的而已~ 下面介绍如何通过UILaunchImages 实现启动页多语言。

PS: 感觉 LaunchScreen.storyboard 是能做到多语言支持的, 难道是我实现过程中有问题 ?

UILaunchImages

先看一下官方文档:

UILaunchImages (Array - iOS) Explicitly specifies the launch images to use for the app. This key contains an array of dictionaries. Each dictionary contains detailed information about a single launch image and how it is used. Xcode fills in the value of each dictionary based on information you provide in your project settings.

显然, 我们可以通过设置 UILaunchImages 来配置启动图片。

至于 UILaunchImages 的几个 Key , 简单描述如下:

  • UILaunchImageName (required) 启动页资源名称

  • UILaunchImageMinimumOSVersion(required) 启动页支持的最低版本

  • UILaunchImageSize 启动页尺寸

  • UILaunchImageOrientation 启动页方向

代表什么, 都比较简单, 具体可以参考官方文档~ [ UILaunchImages ]

用这种方式配置启动页也十分简单, 具体步骤:

  1. 取消启动页使用的 Asset Catalog

  2. 在Info.plist 中添加UILaunchImages项

    <key>UILaunchImages</key>
           <array>
               <dict>
                   <key>UILaunchImageName</key>
                   <string>LaunchImage</string>
                   <key>UILaunchImageMinimumOSVersion</key>
                   <string>7.0</string>
                   <key>UILaunchImageSize</key>
                   <string>{320, 480}</string>
                   <key>UILaunchImageOrientation</key>
                   <string>Portrait</string>
               </dict>
               <dict>
                   <key>UILaunchImageName</key>
                   <string>LaunchImage-568h</string>
                   <key>UILaunchImageMinimumOSVersion</key>
                   <string>7.0</string>
                   <key>UILaunchImageSize</key>
                   <string>{320, 568}</string>
                   <key>UILaunchImageOrientation</key>
                   <string>Portrait</string>
               </dict>
               <dict>
                   <key>UILaunchImageName</key>
                   <string>LaunchImage-667h</string>
                   <key>UILaunchImageMinimumOSVersion</key>
                   <string>8.0</string>
                   <key>UILaunchImageSize</key>
                   <string>{375, 667}</string>
                   <key>UILaunchImageOrientation</key>
                   <string>Portrait</string>
               </dict>
               <dict>
                   <key>UILaunchImageName</key>
                   <string>LaunchImage-736h</string>
                   <key>UILaunchImageMinimumOSVersion</key>
                   <string>8.0</string>
                   <key>UILaunchImageSize</key>
                   <string>{414, 736}</string>
                   <key>UILaunchImageOrientation</key>
                   <string>Portrait</string>
               </dict>
           </array>

  3. 添加对应的启动页资源

如此, 即可完成 启动页 多语言的适配, 不信你就试试呗~

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

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

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

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

该怎么设置一个动态的启动图呢?在启动图结束的时候,用一个View来展示你的动图,记得placeHolder设置为和你的LaunchImage的图片一样就行,这样就可以做出类似的效果了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 启动页多语言 的相关文章

  • 适配IPv6遇到的坑,终极解决方案

    6 1AppStore发布之后的应用要兼容IPv6 然而我上个星期发布的版本并没有因为没兼容而被拒 这次提交却遇到IPv6兼容问题 话不多说 上代码 NSString getIPWithHostName const NSString hos
  • iOS图标(AppIcon)与启动图(LaunchImage)

    图标 AppIcon 与启动图 LaunchImage 是开发iOS应用程序必不可少的内容 但是在网络上对于这部分的内容讲解的并不详细 所以花些时间写了这篇文章 希望有需要的朋友可以随时查看 想知道AppIcon与LaunchImage的原
  • 安卓图片浏览app,应付期末考试的(附下载链接)

    安卓图片浏览app 一个简单的安卓app 采用andstudio开发 有注册登录功能 可以搜索详细情况请看应用截图所示 下载链接 https download csdn net download weixin 43474701 850717
  • 2018年最优秀的第三方框架汇总

    实时搜索 AutoCompleteTextView AutoCompleteTextView 是一个实时刷选控件 根据输入框中的文本信息进行筛选 View的部分都已经封装好 业务部分自己实现 都以以Block的形式回掉 简单实用 现在已经支
  • ad Hoc打包测试

    一 iOS证书 首先介绍一下iOS证书 iOS证书分两种 1 开发证书 用来给你 开发人员 做真机测试 2 发布证书 又分为两种 发布到app store 和发布测试的ad hoc证书 本文就详细讲解 ad hoc证书的创建 二 什么时候用
  • iOS左对齐自动换行collection样式

    前言 想必大家工作中或多或少会遇到下图样式的UI需求吧 像这种cell长度不固定 以此向右对齐排列的样式UI可以说是很常见的 实现方式 一般的实现可能主要是分一下两种 1 一种是用button依次排列实现 动态计算text宽度 记录之前一个
  • git 解决冲突之 theirs & ours

    git merge 从feature分支合并到master分支 git checkout master git merge feature Auto merging Document CONFLICT content Merge confl
  • uni-app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别!

    uni app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别 文章目录 1 官网Popup 弹出层链接 2 属性不同 3 属性对照 4 弹出的方式 5 uView特有属性 1 官网Popup 弹出层链接 uni
  • Fish Redux系列学习之认识view、action

    继续上一篇文章 Fish Redux系列学习之新建page以及认识state 如上图 现在我们学习的是buildview这个组件 说白了 buildView是我们写页面的地方 跟写普通flutter的page页面一样 我们将页面都写在这里面
  • iOS Push详述,了解一下?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由WeTest质量开放平台团队发表于云 社区专栏 作者 陈裕发 腾讯系统测试工程师 商业转载请联系腾讯WeTest获得授权 非商业转载请注明出处 原文链接 http wetest
  • iOS下XMPP开发之XMPP开发环境配置(二)mac上搭建openfire服务器

    一 下载并安装openfire 1 到http www igniterealtime org downloads index jsp下载最新openfire for mac版 比如 Openfire 3 8 1 下载后的文件 openfir
  • 应用程序本地化

    一 简介 使用本地化功能 可以轻松地将应用程序翻译成多种语言 甚至可以翻译成同一语言的多种方言 如果要添加本地化功能 需要为每种支持的语言创建一个子目录 称为 本地化文件夹 通常使用 lproj作为拓展名 当本地化的应用程序需要载入某一资源
  • 如何获取iPhone手机的UUID

    方法一 通过Windows下的iTunes 1 数据线连接iPhone手机 在Windows下打开iTunes 在 iPhone 管理界面下zhi点击 序列号 查看自己的 UUID 标识符 2 此dao时点击菜单 编辑 gt 复制 3 新建
  • 电商APP开源

    电商APP开源 https github com myxh CoolShopping 效果demo CoolShopping 一个仿拉手团购的购物App 采用Bmob后台实现短信验证码注册 登录 收藏 订单管理 自动更新等功能 数据抓取自拉
  • Android Studio 中Gradle Build时报错:请求的操作无法在使用用户映射区域打开的文件上

    今天在运行Android项目 Android Studio 中Gradle Build时报错 请求的操作无法在使用用户映射区域打开的文件上执行 1 问题描述 Error java io FileNotFoundException F And
  • App登录状态维持

    转载地址 http www jianshu com p 4b6b04244773 目前APP大都支持长登录 就是用户登录一次后 如果用户没有主动注销 清除APP缓存数据或卸载APP 就在一段时间内或一直保持登录状态 一般情况下 有以下三种方
  • IOS开发系列——异步绘制专题

    异步绘制专题 1 图片处理 1 1 编辑图片的几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate函数创建CGImageRef 然后把CGI
  • iOS代码混淆初探

    iOS代码混淆初探 在没有对应用的代码做过特殊处理的情况下 一般应用的代码中的类名和方法都是明文的 在逆向分析中 通过class dump获取MachO可执行文件中的所有类 定义的方法和属性 就能很快的从名字入手猜到这个方法是做什么用的 所
  • 如何在 iOS 设备上运行 .app [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有应用程序的 app 文件 我有 mac 和 iPhone 但没有安装 Xcode 如何在没有 Xcode 的情况下在 iPhone 上
  • iOS:无法启动 .app 文件

    我不知道为什么它在我的 app 文件中寻找目录 每次我运行应用程序时 它都会在 iPhone 上安装应用程序 但不会运行并给出以下错误 谁能告诉我这个设置存储在哪里 谢谢 error failed to launch Users xxx L

随机推荐

  • 黄页是什么意思

    黄页 起源于北美洲 1880年世界上第一本黄页电话号簿在美国问世 至今已有100多年的历史 黄页是国际通用按企业性质和产品类别编排的工商电话号码薄 相当于一个城市或地区的工商企业的户口本 国际惯例用黄色纸张印制 故称黄页 目前我们常说的黄页
  • Python 类型提示和静态类型检查

    介绍 在本文中 将了解 Python 类型检查 Type Checking 在本教程中 将了解以下内容 类型注释和类型提示 将静态类型添加到代码中 包括你的代码和其他人的代码 运行静态类型检查器 在运行时强制类型 视频介绍如下 Python
  • 树莓派软键盘乱码

    树莓派软键盘乱码的快速处理 matchbox keyboard的显示 处理办法 matchbox keyboard的显示 正常的Matchbox keyboard安装完成后应该出现如下的界面 但是 在初次安装时 发现部分用户的界面出现乱码情
  • react,useEffect一直重复执行

    import useState useEffect from react useEffect callback arr useEffect接受两个参数 callback 回调函数 第一次会默认执行一次 内部可以return一个回调函数 当卸
  • 客户端和服务端端口的建立与连接

    socket 建立通信的端口 并返回引用该端口的文件描述符 man sockst https man7 org linux man pages man2 socket 2 html 头文件 include
  • nacos服务中断导致项目无法连接,就算nacos服务恢复也不会自动注册,springboot要如何配置nacos自动重连?...

    您可以在配置文件中 例如 application properties 或 application yml 中添加如下配置来启用 Nacos 自动重连 spring cloud nacos discovery retry enabled t
  • [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)

    这是作者网络安全自学教程系列 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您喜欢 一起进步 这篇文章主要介绍5月9日参加津门杯CTF题目知识 包括power cut hate php Go0SS HploadHub和
  • 一步一步写算法(之单向链表)

    声明 版权所有 欢迎转载 请勿用于商业用途 联系信箱 feixiaoxing 163 com 有的时候 处于内存中的数据并不是连续的 那么这时候 我们就需要在数据结构中添加一个属性 这个属性会记录下面一个数据的地址 有了这个地址之后 所有的
  • 四种方法让你的Boost电路更安全

    开关电源最常见的三种结构布局是降压 buck 升压 boost 和降压 升压 buck boost 这三种布局都不是相互隔离的 今天介绍的主角是boost升压电路 the boost converter 或者叫step up convert
  • 宜搭低代码开发师(高级)创建待办列表应用 流程截图及实例代码(避坑专用)

    目录 目标 操作步骤 一 主要涉及的接口 二 代码及说明步骤 目标 试题截图及步骤代码说明 很快完成考试
  • 蓝桥杯常用知识点

    datetime 库 import datetime 设置时间 start datetime date 1901 1 1 不算这一天 是从1900 12 31开始的 end datetime date 2001 1 1 到2000 12 3
  • Tesseract5.0.0+OpenCV3+VS2019安装、字符识别学习

    Tesseract5 0 0 OpenCV3 VS2019安装 字符识别学习 背景 Visual Studio 2019安装 OpenCV3安装 配置 Tesseract v5 0 0安装 在Windows PowerShell中下指令识别
  • python3+pyqt5实践历程(一)——基于socket通信与pyqt5的串口工具

    python3 pyqt5实践历程 一 基于socket通信与pyqt5的串口工具 文章目录 系列文章目录 制作背景 最终功能 工具截图展示 代码详解 系列文章目录 python3 tkinter实践历程 一 基于requests与tkin
  • 1.23 DC-DC的输入电容Cin与输出电容Cout功能

    DC DC电路的输入电容Cin和输出电容Cout是十分重要的器件 输入电容Cin和输出电容Cout具体功能如下 输入电容Cin 给DCDC电路提供稳定的输入电流 提高响应时间 且还能稳定输入电压Vin 输出电容Cout 减小DCDC电路的输
  • STM32——中断概览(中断优先级)

    中断是指计算机运行过程中 出现某些意外情况需要主机干预时 机器能够自动停止正在运行的程序并转入处理新情况的程序 处理完毕后有返回原来被暂停的程序继续运行 STM32的中断和异常 1 对于异常和外部中断的功能 对于STM32单片机而言 是由芯
  • 弹性盒子flex

    display flex flex direction属性决定主轴的方向 即项目的排列方向 flex direction row row reverse column column reverse row 默认值 主轴为水平方向 起点在左端
  • P1010 [NOIP1998 普及组] 幂次方

    NOIP1998 普及组 幂次方 题目描述 任何一个正整数都可以用 2 2 2 的幂次方表示 例如 137 27 23 2 0 同时约定方次用括号来表示 即 a b a b
  • Python iter()函数

    描述 iteration 迭代的意思 顾名思义 iter 函数用来返回迭代器对象 语法 iter object sentinel 参数介绍 object 支持迭代的集合对象 sentinel 如果传递了第二个参数 则参数object必须是一
  • (初学版)多国语言中动态加载语言dll

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 应用背景 有的软件可能在不同的国家被用 那么就根据不同的国家选择不同的语言dll 新建一个项目把资源信息编译成一个dll 在
  • iOS 启动页多语言

    iOS 启动页多语言 个人网站 Colin s Nest 转载请注明出处 iOS开发交流群 184226705 欢迎加入 启动页适配多语言 想必很多 App 都有类似的需求 但是之前尝试过程中 发现 多语言 的那几种实现方式 在欢迎页上都不