辛宝的玄酒清谈!
1279 words
6 minutes
如何快速学习和测试 Swift 和 UIKit 代码?
2024-08-24

我的基础背景#

我是一名普通前端,之前并没有学习过 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,得到下面的对话框

image.png

提示:

  • Product Name 随便起一个名字
  • Team 随便选,我选择了 None
  • Org ID 这里,默认,或者随便的 a.b.c 的格式就可以
  • Interface 这里试了试,选择 Storyboard,不选择 SwiftUI
  • Language 选择 Swift
  • Storage 选择 None
  • 取消勾选 Include Tests

点击 Next,会出现下面弹窗,让你选择代码存放路径

image.png

最终选择 Create 就完成了一个普通项目的创建。

测试 demo 代码#

有了项目,我们就可以测试 swift 代码块了。

image.png

按照我的上图提示,打开 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() 方法并打印结果到控制台。

这个代码会获取电量,并返回数据。

粘贴完毕,在顶部选择模拟器,然后点击运行,稍等片刻,可以在控制台看到返回结果。

image.png

以上就是普通项目的测试方案,这种方案虽然稍微复杂,但是比较规整,属于最常见的模板。

下面介绍一种,我问 ai 知道的简单方案。

2 创建 Playground 项目#

xcode 选择创建 playground,不知道为啥,默认的创建工程里没有这个模板。

基础模板搭建#

必须使用下面的方案:

打开 xcode 这个启动页面

image.png

左上角选择 File - New - Playground…

image.png

出现下面的截图,选择默认的 iOS - Blank。

image.png

点击 Next 就可以出现代码存放位置了。工程后缀文件 .playground,比较简单。

测试 demo 代码#

image.png

点击图片中的运行,就可以得到这段代码的运行结果了。

你可以复制我提供的代码进行验证

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 代码?]]

如何快速学习和测试 Swift 和 UIKit 代码?
https://ijust.cc/posts/quick-learn-swift-uikit/
Author
辛宝 Otto
Published at
2024-08-24