67、iOS应用本地化与Swift基础入门

iOS应用本地化与Swift基础入门

应用本地化

在开发iOS应用时,为了让应用能够覆盖更广泛的用户群体,应用本地化是一项非常重要的工作。以下是应用本地化的相关操作和要点。

法语和英语本地化

首先,构建并运行应用,然后按下主屏幕按钮返回启动屏幕。如果设备或模拟器当前使用英语运行,将其切换为法语。通常,你会在应用图标下方看到本地化名称,但有时可能不会立即显示。这是因为iOS在添加新应用时会缓存相关信息,当用新版本替换现有应用时,该信息不一定会改变。如果在法语环境下未看到新名称,可按以下步骤操作:
1. 从启动屏幕删除应用。
2. 返回Xcode,再次构建并运行应用。

完成这些操作后,应用就实现了法语和英语的本地化。

添加瑞士法语本地化

接下来,我们要为应用添加瑞士法语(语言代码为fr - CH)的本地化。具体步骤如下:
1. 在项目导航器中选择项目,然后在编辑器中选择项目本身,接着点击Info标签。
2. 在Localizations部分,点击“+”添加新语言。由于菜单中没有瑞士法语,需向下滚动并选择“Other”。
3. 在弹出的包含大量语言的子菜单中(语言按字母顺序排列),向下滚动找到“French (Switzerland)”并选择。
4. 在弹出的对话框中,将所有列出文件的参考语言更改为法语,然后点击“Finish”。此时,项目导航器中会出现故事板、可本地化字符串和InfoPlist.strings文件的瑞士法语版本。
5. 打开瑞士法语版本的InfoPlist.strings文件,将捆绑名称更改为:

"CFBundleDisplayName" = "Swiss Localisez Moi";
  1. 构建并运行应用,切换到设置应用,进入“语言与地区”。由于iPhone语言列表中没有瑞士法语,点击“其他语言”,向下滚动(或搜索)找到“French (Switzerland)”,选择它并点击“完成”。
  2. 会弹出一个操作表,询问你是选择瑞士法语还是当前语言,选择瑞士法语,让iOS重置。此时,应用名称将显示为“Swiss Localisez Moi”。

本地化应用有助于提高应用的销量,iOS的本地化架构使得在应用中支持多种语言甚至同一语言的多种方言变得轻松。即便你目前没有本地化应用的计划,也建议在代码中使用 NSLocalizedString() 代替静态字符串,这样在后续需要翻译应用时会更加方便。

Swift基础入门

Swift是一种由苹果推出的编程语言,其语法对于熟悉C++和Java等面向对象编程语言的开发者来说更容易识别,降低了为iOS和Mac开发应用的门槛。下面我们从Swift的基础开始学习。

创建Swift playground

Xcode 6的playground是一个非常实用的功能,它允许你在无需创建运行环境的情况下测试代码。创建新playground的步骤如下:
1. 启动Xcode,选择“File ➤ New ➤ Playground…”。
2. 在打开的对话框中,为playground命名(如“SwiftBasics”),确保平台为iOS,然后点击“Next”。
3. 选择保存playground的文件夹,点击“Create”。Xcode会创建并在新窗口中打开playground。

playground、注释、变量和常量

打开创建好的playground,会看到它分为左右两个区域,左边是代码,右边是结果。当你输入代码时,Swift编译器会立即编译并执行代码,并显示结果。以下是一些相关示例:

注释

// 这是单行注释
var str = "Hello, world"   // 代码末尾也可添加注释

/*
 这是多行注释
 可以跨越多行
*/

/*
 * 另一种多行注释的写法
 * 每行以 * 开头
 */

/* 这是另一种单行注释的写法 */

导入框架

import UIKit
// UIKit会自动导入Foundation框架,所以无需再显式导入

变量声明与初始化

var str = "Hello, playground"
// 也可以先声明类型,再赋值
var str: String
str = "Hello, playground"

var count = 2 // 编译器会推断count为整数类型Int

你可以通过将鼠标悬停在变量上并按住⌥(Option)键,然后点击鼠标来查看编译器推断的变量类型。需要注意的是,Swift是静态类型语言,一旦变量被声明为某种类型,就不能再将其类型更改为其他类型。例如:

var count = 2
count = "Two" // 这会导致错误

另外,Swift语句末尾通常不需要分号,除非你想在同一行写两条语句。例如:

var count = 2; count = 3

常量声明

let pi = 3.14159265
// 常量一旦赋值就不能再更改
pi = 42 // 这会导致错误

let pi = 3.14159265
var value = pi // 可以用常量初始化变量

你可以使用 println() 函数在playground中输出内容,输出结果会显示在右侧结果区域,同时也会显示在控制台。将鼠标悬停在结果区域,点击右侧的圆形控件可打开控制台。

Swift的预定义类型、运算符和控制语句

Swift提供了一组基本的预定义类型,同时还有运算符和控制语句,这些在其他编程语言中也较为常见。下面我们先了解一下基本类型。

数值类型

Swift有四种基本数值类型:Int、UInt、Float和Double,以及一系列更专业的整数类型。具体整数类型及其相关信息如下表所示:
| 类型 | 位数 | 最大值 | 最小值 |
| ---- | ---- | ---- | ---- |
| Int | 32或64 | 同Int32或Int64 | 同Int32或Int64 |
| UInt | 32或64 | 同UInt32或UInt64 | 0 |
| Int64 | 64 | 9,223,372,036,854,775,807 | –9,223,372,036,854,775,808 |
| UInt64 | 64 | 18,446,744,073,709,551,615 | 0 |
| Int32 | 32 | 2,147,483,647 | –2,147,483,648 |
| UInt32 | 32 | 4,294,967,295 | 0 |
| Int16 | 16 | 32767 | –32768 |
| Uint16 | 16 | 65535 | 0 |
| Int8 | 8 | 127 | –128 |
| UInt8 | 8 | 255 | 0 |

Int及其派生类型是有符号值,而与UInt相关的类型是无符号值。整数默认类型为Int,除非有特殊需求,否则建议使用该类型。你可以通过类型的 max min 属性来获取其最大和最小值,例如:

Int8.max     // 127
Int8.min     //  -128
Int32.max    // 2,147,483,647
Int32.min    // -2,147,483,648
UInt32.max   // 4,294,967,295

整数文字可以用十进制、十六进制、二进制或八进制表示,例如:

let decimal = 123      // 十进制
let octal = 0o77       // 八进制,值为十进制的63
let hex = 0x1234       // 十六进制,值为十进制的4660
let binary = 0b1010    // 二进制,值为十进制的10

let v = -1_234       // 用下划线分隔数字组,值为 -1234
let w = 12_34_56     // 值为123456

Float和Double分别是32位和64位浮点数。赋值时,Swift默认推断为Double类型,除非显式指定:

let a = 1.23         // 推断为Double类型
let b: Float = 1.23  // 强制为Float类型

let c = 1.23e2        // 指数表示法,值为123.0
let d = 1.23e-1       // 值为0.123
let e = 1.23E-1       // 与1.23e - 1相同

由于浮点数的特性,其表示并非完全精确。例如:

let f:Float = 0.123456789123     // 0.1234567891043282
let g:Double = 0.123456789123    // 0.123456789123

可以看出Float的表示精度低于Double。

Swift在赋值时不会进行隐式类型转换,例如以下代码会编译错误:

let a = 123
let b = 0.456
let c = a + b

需要手动进行类型转换:

let a = 123
let b = 0.456
let c = Double(a) + b

涉及CGFloat类型时,也需要显式转换。例如:

let a: CGFloat = 123
let b: Double = 456
let c = a + CGFloat(b)     // 结果为CGFloat类型
let c = Double(a) + b    // 结果为Double类型

不过,当所有值都是文字时,Swift允许混合数值类型,例如 1 + 0.5 会计算为 1.5

运算符

Swift中的二元算术运算符如下表所示,运算符按优先级降序排列:
| 运算符 | 含义 |
| ---- | ---- |
| << | 按位左移 |
| >> | 按位右移 |
| , & | 乘法 |
| /, &/ | 除法 |
| %, &% | 取余 |
| & | 按位与 |
| +, &+ | 加法 |
| -, &- | 减法 |
| | | 按位或 |
| ^ | 按位异或 |

算术运算 + , - , * , / , 和 % 会检测溢出,若想忽略溢出,可使用 &+ , &- , &* , &/ , 或 &% 。例如:

let a = Int.max
let b = 1
let c = Int.max + b // 会触发溢出
let c = a &+ b // 忽略溢出

<< >> 运算符分别对左操作数按右操作数指定的位数进行左移和右移,相当于乘以或除以2的幂。例如:

let a = 4
let b = a << 2   // 结果为16
let c = b >> 1   // 结果为8

let a = -4
let b = a << 2   // 结果为 -16
let c = b >> 1   // 结果为 -8

& , | , 和 ^ 分别进行按位与、按位或和按位异或操作,注意不要与逻辑运算符 && || 混淆。例如:

let a = 7        // 二进制为0b111
let b = 3        // 二进制为0b011
let c = a & b    // 结果为0b011 = 3
let c = a | b    // 结果为0b111 = 7
let c = a ^ b    // 结果为0b100 = 4

还有复合赋值运算符,例如:

var a = 10
a += 20       // 相当于 a = a + 20,结果为30
var b = 7
b &= 3        // 相当于 b = b & 3,结果为3

Swift还有五个一元运算符,具体信息可参考相关文档进一步了解。通过以上内容,你对Swift的基础有了初步的认识,可以在playground中进行更多的实践和探索。

iOS应用本地化与Swift基础入门(续)

操作流程总结

为了更清晰地呈现iOS应用本地化和Swift基础操作的流程,下面用mermaid流程图展示关键步骤。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B{选择操作}:::decision
    B -->|应用本地化| C(构建并运行应用):::process
    C --> D(返回启动屏幕):::process
    D --> E{语言是否为英语}:::decision
    E -->|是| F(切换到法语):::process
    E -->|否| G(检查本地化名称显示):::process
    F --> G
    G --> H{名称是否显示}:::decision
    H -->|否| I(删除应用):::process
    I --> J(返回Xcode):::process
    J --> C
    H -->|是| K(添加瑞士法语本地化):::process
    K --> L(选择项目):::process
    L --> M(选择Info标签):::process
    M --> N(添加新语言):::process
    N --> O(选择French (Switzerland)):::process
    O --> P(更改参考语言为法语):::process
    P --> Q(修改InfoPlist.strings文件):::process
    Q --> R(构建并运行应用):::process
    R --> S(切换到设置应用):::process
    S --> T(选择语言与地区):::process
    T --> U(选择French (Switzerland)):::process
    U --> V(选择瑞士法语重置iOS):::process
    B -->|Swift基础| W(创建新playground):::process
    W --> X(输入代码):::process
    X --> Y(查看结果):::process
    Y --> Z(学习预定义类型和运算符):::process
进一步学习建议

在掌握了iOS应用本地化和Swift基础之后,你可以从以下几个方面进一步深入学习:

  1. 应用本地化拓展

    • 尝试为应用添加更多语言的本地化,如德语、西班牙语等,熟悉不同语言的本地化设置流程。
    • 研究如何处理不同语言的文本排版和布局差异,确保应用在各种语言环境下都有良好的用户体验。
  2. Swift进阶学习

    • 学习Swift的面向对象编程特性,如类、继承、多态等,了解如何构建复杂的应用架构。
    • 探索Swift的高级特性,如闭包、协议、泛型等,提高代码的灵活性和可复用性。
    • 结合UIKit和其他框架,开发完整的iOS应用,将所学知识应用到实际项目中。
总结

通过本文,我们详细介绍了iOS应用本地化的操作步骤,包括法语和英语本地化以及瑞士法语本地化的添加方法。同时,深入学习了Swift的基础知识,涵盖了变量、常量、预定义类型、运算符等内容。以下是关键知识点总结:

主题 关键知识点
应用本地化 1. 构建运行应用并切换语言查看本地化名称
2. 添加新语言本地化的具体步骤
3. 修改InfoPlist.strings文件实现特定语言名称显示
Swift基础 1. 创建playground进行代码测试
2. 变量和常量的声明与使用
3. 预定义类型(数值类型)的特点和使用
4. 运算符的功能和使用注意事项

希望这些内容能帮助你快速入门iOS应用开发,在后续的学习和实践中不断提升自己的技能水平。通过不断地练习和探索,你将能够开发出功能丰富、用户体验良好的iOS应用。

【激光质量检测】利用丝杆步进电机的组合装置带动光源的移动,完成对光源使用切片法测量其光束质量的目的研究(Matlab代码实现)内容概要:本文研究了利用丝杆步进电机的组合装置带动光源移动,结合切片法实现对激光光源光束质量的精确测量方法,并提供了基于Matlab的代码实现方案。该系统通过机械装置精确控制光源位置,采集不同截面的光强分布数据,进而分析光束的聚焦特性、发散角、光斑尺寸等关键质量参数,适用于高精度光学检测场景。研究重点在于硬件控制图像处理算法的协同设计,实现了自动化、高重复性的光束质量评估流程。; 适合人群:具备一定光学基础知识和Matlab编程能力的科研人员或工程技术人员,尤其适合从事激光应用、光电检测、精密仪器开发等相关领域的研究生及研发工程师。; 使用场景及目标:①实现对连续或脉冲激光器输出光束的质量评估;②为激光加工、医疗激光、通信激光等应用场景提供可靠的光束分析手段;③通过Matlab仿真实际控制对接,验证切片法测量方案的有效性精度。; 阅读建议:建议读者结合机械控制原理光学测量理论同步理解文档内容,重点关注步进电机控制逻辑切片数据处理算法的衔接部分,实际应用时需校准装置并优化采样间距以提高测量精度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值