这是我参与更文挑战的第5天,活动详情查看: 更文挑战
Swift 学习工具:Playgrounds App
Swift Playgrounds是由苹果公司在2016年6月14日苹果全球开发者大会WWDC上发布的Swift编程语言学习App
说到iOS开发工具,你一定想到的是Xcode,这有啥好介绍的;XCode确实是一个很强大的工具,但是用在swift 的基础学习上有两个弊端
- 太繁琐,太重
- 太慢
Xcode适合构建大型应用,但对于swift学习感觉有点杀鸡用牛刀,一般我们开发步骤是先新建一个工程:File -New-Project,然后选择App创建模式;这样创建一个项目工程,写完代码,Comm+B进行编译,然后再选择模拟器和真机进行调试查看结果,感觉整个过程太复杂和太慢了
今天推是Swift Playgrounds,他是一个mac app,直接电脑上App Store 上就能下载到:
当然你也可能说:File -New-Playgrounds 不也直接能创建.Playgrounds文件吗;这个确实是的可以的,但是我觉得Xcode 自带的Playgrounds 和 App相比还是有很大差别;很早之前就体验过,上手之后你就会发现跟想象不一样,只要当前这个Playgrounds文件代码行数超过100多行,她的编译速度就巨慢,有时候莫名其妙的卡住不动;当然值得表扬的是比当年推出来好很多了,基本算是可以用了;
而我用Swift Playgrounds 就完全没有遇到过编译慢卡顿的问题; 我觉得有5个优点
- 启动速度快
- 界面简洁好用
- 编译速度快
- 提示到位:编辑有代码提示,运行错误提示到位
- 大量周边swift demo 场景,可以探索出更多好玩的东西;
非常容易上手,根据你学习情况,可以创建很多分类文件;也方便后面回顾
三种方式在Playgrounds上渲染SwiftUI视图
在介绍下再Playgrounds渲染SwiftUI的技巧;
尽管Xcode Previews 可以快速的构建SwiftUI视图,但某些时候想速尝试新UI 和想法时候的,使用Playground是最快和最简单的方法。
1. 使用UIHostingController
使用UIHostingController 包装你的SwiftUI View 把他分配给当前liveView属性,PlaygroundPage例如:
import SwiftUI
import PlaygroundSupport
struct MyExperimentalView: View {
var body: some View {
Image(systemName: "calendar").resizable()
.padding().background(Color.red).cornerRadius(10).foregroundColor(.white)
}
}
let view = MyExperimentalView()
let hostingVC = UIHostingController(rootView: view)
PlaygroundPage.current.liveView = hostingVC
2. 调用setLiveView
更简单的方式是直接调用上面的liveView,可以直接使用,setLiveView方法,该方法实际上执行与UIHostingController上述相同的包装,
import SwiftUI
import PlaygroundSupport
struct MyExperimentalView: View {
var body: some View {
...
}
}
let view = MyExperimentalView()
PlaygroundPage.current.setLiveView(view)
3. Playground’s 时间线预览
和前面两种不同,直接通过自带的调试预览功能就可以实现;相信你已经使用过了,因为从Playground 退出的第一天开始就自带了这个功能;
MyExperimentalView()通过在右侧的时间轴中使用矩形图标来固定上面的表达式,则现在它将以如下方式内联呈现:
掌握Playgrounds这三种 SwiftUI 渲染方式, 你就可以每天使用它,再也不用创建一个完整的Xcode项目来实现的想法了