34、iOS 开发:应用国际化与小费计算器应用搭建

iOS 开发:应用国际化与小费计算器应用搭建

1. 应用国际化:导出与翻译字符串资源

在开发 iOS 应用时,为了让应用能够支持多种语言,需要进行国际化处理。首先要创建包含应用字符串资源的 XLIFF 文件,以下是具体步骤:
1. 在 Xcode 项目导航器中选择你的应用。
2. 选择“Editor”>“Export for Localization…”,指定 XLIFF 文件的保存位置(项目文件夹之外),然后点击“Save”。默认情况下,Xcode 会创建一个与应用同名的文件夹,并将文件 en.xliff 放置在该文件夹中。文件名取决于应用的基础语言,这里以英语为例,所以使用语言 ID en 。完整的语言和区域 ID 列表可查看: http://bit.ly/iOSLanguageLocaleIDs

以下是生成的 XLIFF 文件中对应 Main.storyboard 的部分代码:

<file original="Welcome/Base.lproj/Main.storyboard" source-language="en"
      datatype="plaintext">
    <header>
        <tool tool-id="com.apple.dt.xcode" tool-name="Xcode"
              tool-version="6.0" build-num="6A280e"/>
    </header>
    <body>
        <trans-unit id="GCg-Ah-7Id.text">
            <source>Welcome to iOS App Development!</source>
            <note>Class = “IBUILabel”; text = “Welcome to iOS App
                  Development!”; ObjectID = “GCg-Ah-7Id”;</note>
        </trans-unit>
        <trans-unit id="waJ-nz-oow.accessibilityHint">
            <source>Deitel double-thumbs-up bug logo</source>
            <note>Class = “IBUIImageView”; accessibilityHint = “Deitel
                  double-thumbs-up bug logo”; ObjectID = “waJ-nz-oow”;</note>
        </trans-unit>
        <trans-unit id="waJ-nz-oow.accessibilityLabel">
            <source>Deitel logo</source>
            <note>Class = “IBUIImageView”; accessibilityLabel =
                  “Deitel logo”; ObjectID = “waJ-nz-oow”;</note>
        </trans-unit>
    </body>
</file>

接下来,对字符串资源进行翻译,以添加西班牙语字符串为例:
1. 在 Finder 中找到之前创建的 en.xliff 文件,复制一份并将其重命名为 es.xliff es 是西班牙语的语言 ID)。
2. 双击 es.xliff 文件在 Xcode 中打开。
3. 在 XML 中找到上述代码的第 1 行,修改它以包含 XLIFF 的 target-language 属性,修改后的行如下:

<file original="Welcome/Base.lproj/Main.storyboard"
      source-language="en" target-language="es" datatype="plaintext">
  1. 找到上述代码的第 9 行,在其后插入一个空行并输入翻译后的字符串资源:
<target>¡Bienvenido al Desarrollo de App iOS!</target>
  1. 找到上述代码的第 14 行,在其后插入一个空行并输入翻译后的字符串资源:
<target>El logo de Deitel que tiene el insecto con dedos pulgares
   hacia arriba</target>
  1. 最后,找到上述代码的第 19 行,在其后插入一个空行并输入翻译后的字符串资源:
<target>Logo de Deitel</target>
  1. 保存并关闭文件。

翻译完成后,需要将包含西班牙语字符串资源的 XLIFF 文件导入项目:
1. 在 Xcode 项目导航器中选择你的应用。
2. 选择“Editor”>“Import Localizations…”,找到 es.xliff 文件并点击“Open”。
3. Xcode 会显示一个窗口,你可以在其中比较源字符串和翻译后的字符串。由于没有为各种字符串资源(如设备主屏幕上应用图标旁边显示的应用产品名称)提供翻译字符串,会显示一些警告。点击“Import”将西班牙语字符串导入项目。Xcode 会从 XLIFF 文件中提取故事板的翻译后的西班牙语字符串,并将它们放入一个名为 Main.strings 的文件中,该文件嵌套在项目导航器的 Main.storyboard 节点中。

2. 测试应用的西班牙语版本

要在西班牙语环境下测试应用,需要更改 iOS 模拟器(或你的设备)的语言设置。打开模拟器(选择“Xcode”>“Open Developer Tool”>“iOS Simulator”),然后执行以下步骤:
1. 如果未显示主屏幕,从 iOS 模拟器菜单中选择“Hardware”>“Home”,或按下设备上的主页按钮。
2. 找到并选择“Settings”应用。
3. 选择“General”,然后选择“Language & Region”。
4. 选择“iPhone Language”,然后从语言列表中选择“Español”,按下“Done”,然后确认你要更改语言。

模拟器或设备将把语言设置更改为西班牙语并返回主屏幕。使用 Xcode 再次运行“Welcome”应用,此时应用将以西班牙语显示。如果在启用 VoiceOver 的设备上运行应用,VoiceOver 将朗读西班牙语版本的无障碍字符串。你还可以使用模拟器的“Accessibility Inspector”来确认西班牙语无障碍字符串。

若要将模拟器(或你的设备)恢复到原始语言设置,可以执行上述相同步骤,但选择英语(或你自己的语言)。也可以将模拟器恢复到默认设置,在模拟器运行时,选择“iOS Simulator”>“Reset Content and Settings…”,会显示一个对话框要求你确认操作。如果按下“Reset”,该特定模拟器上为测试而安装的任何应用都将被删除,所有设置将恢复到原始值。

3. 小费计算器应用:概述与测试

小费计算器应用可以根据餐厅账单金额计算并显示可能的小费和账单总额。当你通过触摸数字键盘输入金额的每一位数字时,应用会计算并显示 15% 小费和自定义小费的小费金额和总账单金额。你可以通过移动滑块的拇指来指定自定义小费百分比,这将更新自定义小费百分比标签,并在滑块下方右侧的黄色标签列中显示自定义小费和总账单。默认自定义百分比为 18%,因为美国许多餐厅会为六人或更多人的团体添加此小费百分比,但你可以轻松更改。

以下是在 iOS 模拟器中测试小费计算器应用的步骤:
|步骤|操作内容|
| ---- | ---- |
|1|定位应用文件夹,打开一个 Finder 窗口,导航到包含示例的文件夹。|
|2|打开 TipCalculator 项目,打开 TipCalculator 文件夹,然后双击 TipCalculator.xcodeproj 文件在 Xcode 中打开项目。|
|3|启动小费计算器应用,在 Xcode 中,点击 Xcode IDE 左上角“Run”和“Stop”按钮右侧的方案选择器,然后选择“iPhone 6”模拟器。接下来,点击“Run”按钮(或按 ⌘ + R )在模拟器中运行应用。|
|4|输入账单总额,通过触摸显示的数字键盘输入账单总额 56.32。如果输入错误,按下键盘右下角的删除按钮删除最后一位输入的数字。键盘不包含小数点。每次触摸一个数字或删除一个数字时,应用会读取你目前输入的内容并将其转换为数字,将该值除以 100,并在蓝色标签中显示结果,小数点后保留两位数字,同时计算并更新显示的各种小费和总金额。此应用使用 iOS 的特定区域货币格式设置功能,以适应用户当前区域的格式显示货币值。对于美国区域,当你输入四位数字时,账单总额将依次显示为 $0.05、$0.56、$5.63 和 $56.32。|
|5|选择自定义小费百分比,滑块允许你选择自定义百分比,滑块下方右侧列中的标签显示相应的小费和总账单。将滑块的拇指向右拖动,直到自定义百分比显示为 25%。拖动拇指时,滑块的值会不断变化。应用会根据每个滑块值相应地更新自定义小费百分比、金额和总金额,直到你松开拇指。|
|6|关闭应用,点击模拟器上的主页按钮,或点击 Xcode 中的“Stop”按钮,或从菜单栏中选择“iOS Simulator”>“Quit iOS Simulator”。|

若要在 iPad 模拟器中测试应用,点击方案选择器,然后选择“iPad Air”模拟器,接着点击“Run”按钮在模拟器中运行应用。

graph TD;
    A[打开Finder窗口] --> B[导航到示例文件夹];
    B --> C[打开TipCalculator文件夹];
    C --> D[双击TipCalculator.xcodeproj];
    D --> E[选择iPhone 6模拟器];
    E --> F[点击Run按钮];
    F --> G[输入账单总额];
    G --> H[选择自定义小费百分比];
    H --> I[关闭应用];

通过以上步骤,你可以完成应用的国际化处理,并对小费计算器应用进行测试,为后续的开发和优化打下基础。在后续的开发中,还将涉及更多关于 Swift 编程、视图控制器等技术的应用,以实现应用的完整功能。

iOS 开发:应用国际化与小费计算器应用搭建

4. 小费计算器应用:技术概述

开发小费计算器应用会用到 Xcode、Interface Builder 和 Swift 等工具和技术,下面对相关技术进行详细介绍。

4.1 Swift 编程

应用的代码会使用 Swift 的数据类型、运算符、控制语句、关键字等语言特性,还会使用函数、重载运算符、类型推断、变量、常量等。同时,会运用 Swift 的面向对象编程特性,包括对象、类、继承、方法和属性。

4.2 Cocoa Touch 框架

iOS 8 提供了丰富的预构建组件,这些能力被组织成 Cocoa Touch 框架,帮助开发者创建符合苹果要求的 iOS 应用。以下是一些主要的框架:
|框架名称|简介|
| ---- | ---- |
|Foundation 框架|包含基本类型、数据存储、文本和字符串处理、文件系统访问、日期和时间差异计算、应用间通知等功能。在本应用中,会使用 Foundation 的 NSDecimalNumber NSNumberFormatter 类。该框架的类名以 NS 开头,因为它起源于 NextStep 操作系统。|
|UIKit 框架|包含适用于移动应用的多触摸 UI 组件、事件处理(即响应用户与 UI 的交互)等功能。|

其他 Cocoa Touch 框架还有很多,更多信息可查看 iOS Developer Library Reference

4.3 在 Swift 代码中使用 UIKit 和 Foundation 框架

要使用 UIKit 框架的类(或任何其他现有框架的类),必须在使用该框架的每个源代码文件中导入它。本应用除了使用 UIKit 框架的 UI 组件外,还会使用 Foundation 框架的各种类,如 NSDecimalNumber NSNumberFormatter 。由于 UIKit 框架会间接导入 Foundation 框架,所以无需显式导入 Foundation 框架。

4.4 使用 Interface Builder 创建 UI 组件

会再次使用 Interface Builder 和自动布局来设计应用的 UI,UI 包括用于显示信息的标签、用于选择自定义小费百分比的滑块和用于接收用户输入的文本字段。部分标签配置相同,可以在 Interface Builder 中复制组件,以更快地构建 UI。标签、滑块和文本字段分别是 UILabel UISlider UITextField 类的对象,它们是每个应用项目都包含的 UIKit 框架的一部分。

4.5 视图控制器

每个定义的场景都由一个视图控制器对象管理,该对象决定显示什么信息。iPad 应用有时会在一个场景中使用多个视图控制器,以更好地利用更大的屏幕尺寸。每个场景代表一个包含屏幕上显示的 UI 组件的视图,视图控制器还指定如何处理用户与场景的交互。 UIViewController 类定义了基本的视图控制器功能,创建的每个视图控制器(或基于 Xcode 的应用模板创建新应用时自动创建的视图控制器)都继承自 UIViewController 或其子类。在本应用中,Xcode 会创建 ViewController 类来管理应用的场景,并在该类中添加额外的代码来实现小费计算器的逻辑。

4.6 将 UI 组件与 Swift 代码关联
  • 属性 :使用 Interface Builder 为视图控制器生成属性,以便以编程方式与应用的 UI 组件进行交互。Swift 类可以包含可变属性和常量属性,可变属性使用 var 关键字声明,是读写的;常量属性使用 let 关键字声明,初始化后不能修改,是只读的。可变属性定义了 getter 和 setter 方法,分别用于获取和修改属性的值;常量属性只定义了 getter 方法。
  • @IBOutlet 属性 :每个用于以编程方式与 UI 组件交互的属性都以 @IBOutlet 前缀开头,这告诉 Interface Builder 该属性是一个出口。使用 Interface Builder 的拖放技术将 UI 控件连接到视图控制器中对应的出口,连接后,视图控制器就可以以编程方式操作相应的 UI 组件。 @IBOutlet 属性是可变属性,以便在故事板创建 UI 控件时可以修改它们的引用。
  • 动作方法 :当与 UI 组件交互(如触摸滑块或在文本字段中输入文本)时,会发生用户界面事件。视图控制器使用动作(即事件处理方法)来处理这些事件,指定事件发生时要执行的操作。每个动作在视图控制器的类中使用 @IBAction 进行注释, @IBAction 向 Interface Builder 表明该方法可以响应用户与 UI 组件的交互。使用 Interface Builder 的拖放技术将动作与特定的用户界面事件进行可视化连接。
5. 开发步骤展望

开发小费计算器应用的后续步骤如下:
1. 构建应用的 UI
- 创建项目。
- 为设计竖屏方向的 iPhone 应用配置大小类。
- 添加 UI 组件,如标签、文本字段和滑块。
- 添加自动布局约束,确保 UI 在不同设备上都能正确显示。
2. 使用 Interface Builder 创建出口 :将 UI 组件与视图控制器的 @IBOutlet 属性连接起来。
3. 使用 Interface Builder 创建动作 :将用户界面事件与视图控制器的 @IBAction 方法连接起来。
4. 实现 ViewController
- 进行 import 声明,导入所需的框架。
- 定义 ViewController 类,继承自 UIViewController
- 定义 ViewController @IBOutlet 属性,用于操作 UI 组件。
- 定义其他 ViewController 属性,用于存储应用的状态。
- 重写 UIViewController viewDidLoad 方法,在视图加载后执行一些初始化任务。
- 实现 ViewController 的动作方法 calculateTip ,处理用户输入并计算小费。
- 定义全局实用函数,辅助实现应用的功能。

graph TD;
    A[构建应用UI] --> B[创建项目];
    B --> C[配置大小类];
    C --> D[添加UI组件];
    D --> E[添加自动布局约束];
    E --> F[创建出口];
    F --> G[创建动作];
    G --> H[实现ViewController类];
    H --> I[import声明];
    H --> J[定义ViewController类];
    H --> K[定义@IBOutlet属性];
    H --> L[定义其他属性];
    H --> M[重写viewDidLoad方法];
    H --> N[实现calculateTip方法];
    H --> O[定义全局实用函数];

通过以上对技术的了解和后续开发步骤的规划,开发者可以逐步完成小费计算器应用的开发。在开发过程中,要充分利用 Swift 编程和 Cocoa Touch 框架的优势,实现应用的功能和良好的用户体验。

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理迭代收敛过程,以便在实际项目中灵活应用改进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值