我的基础背景
我是一名普通前端,之前并没有学习过 iOS 开发,有时候我需要实现 Swift 代码,包装为插件,在 app 中调用原生功能。
在 uni-app x 的 4.25 支持原生混编之后,可以做的事情就更多了。
举个例子,比如我希望封装一个函数,获取当前手机的电量,或者获取当前系统的主题是否暗黑、获取按钮时候播放一段音乐。
JS Web 开发一样很容易测试,打开浏览器随便打开一个网页,按下 F12 打开控制台,就可以运行 JS 并得到响应。客户端原生开发并不可以。
所以,我该如何尽可能少地学习无关知识,让我快速测试和实验 UIKit 和 Swift 代码?
本篇文章记录我的学习过程,面向读者是和我一样的纯前端、客户端开发无知者。如果后续有更深入的理解,我会尝试修改其中的细节。也请读者请注意甄别。
代码从哪里来?
以前我推荐快速阅读官方文档,了解大纲后再进行测试练习。现在有了 AI,更适合问 AI,比如
如何使用 UIKit 获取当前电量,我希望编写一个 fun 返回结果。我可以调用 fun 并 print 结果。
知道了如何获取代码,如何进行测试?考虑到我现阶段不需要考虑系统性地掌握 xcode 的使用。这就引出了下面的话题。
快速测试 UIKit?
如何快速学习 UIKit 和 Swift?
经过我的探索,我找了两个方案来测试:创建普通项目和使用 playground。下面分别说一说。
以下方案基于 XCode 15.4 进行截图说明,随着版本迭代,部分截图可能会发生变化,但预计不会发生大的变化。
1 创建普通项目
基础模板搭建
打开 xcode,选择创建新的工程,弹出下面对话框。
注意:顶部平台选择 iOS,不要选择默认的 Multiplaform 跨平台
点击 Next,得到下面的对话框
提示:
- Product Name 随便起一个名字
- Team 随便选,我选择了 None
- Org ID 这里,默认,或者随便的 a.b.c 的格式就可以
- Interface 这里试了试,选择 Storyboard,不选择 SwiftUI
- Language 选择 Swift
- Storage 选择 None
- 取消勾选 Include Tests
点击 Next,会出现下面弹窗,让你选择代码存放路径
最终选择 Create 就完成了一个普通项目的创建。
测试 demo 代码
有了项目,我们就可以测试 swift 代码块了。
按照我的上图提示,打开 ViewController.swift
全部删除,粘贴我提供的代码。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 获取电量并打印·
let currentBatteryLevel = getBatteryLevel()
print("当前电量: \(currentBatteryLevel)%")
}
func getBatteryLevel() -> Float {
// 开启电池监测
UIDevice.current.isBatteryMonitoringEnabled = true
// 获取当前电量
let batteryLevel = UIDevice.current.batteryLevel
// 转换为百分比
return batteryLevel * 100
}
}
这个代码会在应用启动之后,调用 getBatterLevel()
方法并打印结果到控制台。
这个代码会获取电量,并返回数据。
粘贴完毕,在顶部选择模拟器,然后点击运行,稍等片刻,可以在控制台看到返回结果。
以上就是普通项目的测试方案,这种方案虽然稍微复杂,但是比较规整,属于最常见的模板。
下面介绍一种,我问 ai 知道的简单方案。
2 创建 Playground 项目
xcode 选择创建 playground,不知道为啥,默认的创建工程里没有这个模板。
基础模板搭建
必须使用下面的方案:
打开 xcode 这个启动页面
左上角选择 File - New - Playground…
出现下面的截图,选择默认的 iOS - Blank。
点击 Next 就可以出现代码存放位置了。工程后缀文件 .playground
,比较简单。
测试 demo 代码
点击图片中的运行,就可以得到这段代码的运行结果了。
你可以复制我提供的代码进行验证
import UIKit
func getBatteryLevel() -> Float {
// 开启电池监测
UIDevice.current.isBatteryMonitoringEnabled = true
// 获取当前电量
let batteryLevel = UIDevice.current.batteryLevel
// 转换为百分比
return batteryLevel * 100
}
// 获取电量并打印·
let currentBatteryLevel = getBatteryLevel()
print("当前电量: \(currentBatteryLevel)%")
下一步做什么?
系统学习官方文档
官网文档关于 UIDevice.current.batteryLevel
的介绍
路径是:App and environment - UIDevice - Getting the device battery state - batteryLevel
。
batteryLevel | Apple Developer Documentation
问 Ai 如何获取暗黑模式等其他问题
询问 AI
使用 swift 和 UIKit 查询当前系统的主题,是否是暗黑模式,封装成 fun,返回当前是 light 还是 dark,还有其他值吗?
经过我测试,ok。这里读者可以自行测试。可以有意识地积累代码了,后面可以随手拿来用。
学习 UTS 插件包装
[[新手向:包装 UTS 插件]]
学习 Android 如何快速测试代码
[[如何快速学习和测试 Android Kotlin 代码?]]