Open KkevinK opened 3 years ago
这次我们跟随苹果开发者官网的swiftui教程练习了其中基础的第一课与第二课,分别是第一课**_创建与合并视图_** 以及通过第一课的内容,来创建一个LandmarkList的简单app。
https://developer.apple.com/tutorials/swiftui/creating-and-combining-views 具体的步骤在官网上写的非常详细,可以按教学照葫芦画瓢自己做一遍。 但是关键点是,要抓住其中的核心思想并结合自己的理解。 图中右侧为显示的List界面(红色),List的单个元素由Row(蓝色)与detail(绿色)组成。其中detail为一个表单的链接(NavigationLink),点击后会显示自己的文字信息、地图位置(MapView)和相关贴图(CircleImage) 这其实是一个嵌套形式的界面分布,List -> (Row + detail(MapView + CircleImage))
这里有大家熟悉的model、view 和 resources
List层中的代码其实包含了一些基础的语法知识,声明形式的语法。 其中第一个landmarks来自于Model中ModelData的自定义数据landmarks 这个方法读取了资源文件landmarkData.json的信息并格式化为json。遗憾的是虽然知道这个方法是干什么的,但是其中的语句理解起来并没有想象中的那么简单,原因并不难发现,就是缺乏了基础知识,在直接上swiftui的课时忽略了先在swift.org中的学习基础知识,导致这里的下划线和反斜杠根本看不明白,看来后续需要进行补课了^_^
Row中使用了List中传来的Landmark数据信息,使用其中的image和name通过HStack水平排列出来,效果:
detail中同样使用了List传来的Landmark,将其中的明细呈现出来。 其中的MapView和CircleImage是一个计算坐标显示地图的view和一个自制的圆形图片view:
至此,一个简单的LandmarkListApp就做完了,在list的swift文件中点击右边视图的开始按钮可以模拟手机进行调试,因为我创建项目是基于ios的所以这里开始后就会显示一个手机模拟器:
此外在LandmarkList.swift中下端的代码可以分别展示不同的机型进行调试:
OK,官方第一课与第二课到这里就上完啦,对于简单的习题,写出成果固然重要,但是自己有所收获与感想更加难能可贵,借官档的课后习题来总结一下吧。
创建自定义SwiftUI视图时,应在body属性中声明,这是View协议的要求 可以使用堆栈在一个body中返回多个视图 可以链接多个修饰符以实现所需效果 第一张猫是因为资源中缺少了一张图片,所以随便下了一张补上,好看就行^_^ 从零开始学习的时候,基础还是要打好的!
创建自定义SwiftUI视图时,应在body属性中声明,这是View协议的要求
可以使用堆栈在一个body中返回多个视图
可以链接多个修饰符以实现所需效果
第一张猫是因为资源中缺少了一张图片,所以随便下了一张补上,好看就行^_^
从零开始学习的时候,基础还是要打好的!
顺便把相关代码提交仓库,苹果里面push代码以及XCode里面ide操作git的经验也可以起一篇Blog
https://developer.apple.com/tutorials/swiftui/creating-and-combining-views 具体的步骤在官网上写的非常详细,可以按教学照葫芦画瓢自己做一遍。 但是关键点是,要抓住其中的核心思想并结合自己的理解。 图中右侧为显示的List界面(红色),List的单个元素由Row(蓝色)与detail(绿色)组成。其中detail为一个表单的链接(NavigationLink),点击后会显示自己的文字信息、地图位置(MapView)和相关贴图(CircleImage) 这其实是一个嵌套形式的界面分布,List -> (Row + detail(MapView + CircleImage))
这里有大家熟悉的model、view 和 resources
List层中的代码其实包含了一些基础的语法知识,声明形式的语法。 其中第一个landmarks来自于Model中ModelData的自定义数据landmarks 这个方法读取了资源文件landmarkData.json的信息并格式化为json。遗憾的是虽然知道这个方法是干什么的,但是其中的语句理解起来并没有想象中的那么简单,原因并不难发现,就是缺乏了基础知识,在直接上swiftui的课时忽略了先在swift.org中的学习基础知识,导致这里的下划线和反斜杠根本看不明白,看来后续需要进行补课了^_^
Row中使用了List中传来的Landmark数据信息,使用其中的image和name通过HStack水平排列出来,效果:
detail中同样使用了List传来的Landmark,将其中的明细呈现出来。 其中的MapView和CircleImage是一个计算坐标显示地图的view和一个自制的圆形图片view:
至此,一个简单的LandmarkListApp就做完了,在list的swift文件中点击右边视图的开始按钮可以模拟手机进行调试,因为我创建项目是基于ios的所以这里开始后就会显示一个手机模拟器:
此外在LandmarkList.swift中下端的代码可以分别展示不同的机型进行调试:
OK,官方第一课与第二课到这里就上完啦,对于简单的习题,写出成果固然重要,但是自己有所收获与感想更加难能可贵,借官档的课后习题来总结一下吧。