使用Apple最新的Swift UI技术编写更好的app

image.png

使用Apple最新的Swift UI技术编写更好的app。

随着技术的不断进步,iOS的开发语言也在不断的进步。不仅开发语言再进步,界面的开发也是历经了很多技术更新,从一开始的完全使用代码----> 到后来的xib----> 再到后来的storyboard-----> 再到现在的Swift UI,虽然现在大部分开发者还在使用storyboard,但现在Swift UI越来越成为趋势。开发人员要不断学习新的技术,精进自己的技能,用新技术编写更好应用。对与已经从事iOS开发多年的开发人员来说,学习新的技能并不难,关键是你要愿意学。

本次所学课程为美国斯坦福大学最新的iOS编程课程。使用全新的swift UI进行编写。除了Apple官方的文档,sanford 大学的iOS编程课一直是非常不错的学习教材。

本人所用开发环境:

Xcode版本:12.0

macOS版本:11.0 macOS Big Sur

Github仓库地址:https://github.com/MyColourfulLife/MySwiftUI

github仓库中的图片,您可能需要科学上网才能看得到。

第一天:

写了一个卡片demo,目前的状态是写了四个卡片,卡片的正面是个幽灵图片,卡片反面纯色背景。后续可以翻开卡片,看到卡片正面。后面会增加更多不同内容的卡片,翻开两张卡片相同加分,不同扣分。

目前做的结果如图:

image.png

知识点:

SwiftUI编写和我们使用平常使用的开发技术多少会有些不同。

struct ContentView: View {
    var body: some View {
       Text("Hello World!")
    }
}

第一个很有意思的是:ContentView: View

在面向对象编程的语言中,我们通常会说“结构体ContentView 是 一种View ”,而在这里,并不是“是”的意思,这和我们所说的继承关系不一样。在这里是说,this struct is going to behave like a View or it's going to function like a View.也就是说我们声明的这个contentView这个结构体的行为(方法)和View相似。我们知道一个View是一个矩形,有边框,背景,前景,可以触摸,缩放,响应事件等等。我们声明的这个结构体表现和View相似。

第二个很有意思的是:var body: some View

body是一个计算属性,类型是 some View, 意思是某种view,但并没有说是哪种View,之所以不指明是哪种View,是为了开发方便,让程序去推断返回的应该是什么类型的View。

像上面的代码那样,返回的就是 Text 这种类型的View,我们其实也可以写

 var body: Text {
       Text("Hello World!")
 }

但是这样我们应对不了很多情况,程序需要的内容可能是文本,也可能是图片,还可能是一堆视图的集合。因此我们并不具体指明使用哪种类型的View,而是使用 some View 来指定body的类型。

上述代码 Text之前省略了 return,这是swift语言的特性,当只有一行语句时可以省略return。

文本用 Text, 圆角矩形用 RoundedRectangle,把文本叠加在圆角矩形上,我们可以使用 ZStack,意思是垂直于屏幕摆放。

        ZStack {
            RoundedRectangle(cornerRadius: 10).fill(Color.white)
            RoundedRectangle(cornerRadius: 10).stroke(lineWidth: 3)
            Text("")
        }

构造ZStack的时候,其实是用 ZStack(content: {})构造的,最后一个参数是closure时,可能省略行参,打括号直接写在后面 ZStack(){},当没有参数时,圆括号也可以省略,就变成了上面的样子。这个在Swift中很常见,已经用Swift开发很多年了,就不多提了,后面会经常遇到。

            RoundedRectangle(cornerRadius: 10).fill(Color.white)

这句话的意思是为圆角半径为10的矩形填充上白色。填充用fill,描边用stroke。之所以要加上这句话是因为在iOS dark mode 下,背景会自动填充为黑色。这不是我们想要的,所以加上了这句话,使其不管在light mode 还是 dark mode 都看起来很舒服。

HStack 、VStack 和 ZStack 都是表现像View的 视图容器,可以组合视图,视图里面的部分属性会从上层View获取属性,当然也给可以给视图直接设置属性。

 ZStack {
               RoundedRectangle(cornerRadius: 10).fill(Color.white) // 重新设置颜色为白色
            RoundedRectangle(cornerRadius: 10).stroke(lineWidth: 3) 
            Text("")
        }.foregroundColor(.orange)
        .font(.largeTitle)

上述中 第二个矩形和下面的Text都会使用ZStack的前景色,当前emoji 文本本身具有形状颜色,在这里不会重新绘制颜色。若果换成普通的文字,效果就很明显。文本的字体使用 上层的 largeTitle。

foreach的使用。这里介绍了foreach的一种使用方式

ForEach(0..<4){ index in
               GridView()
}

这里用range而没有用数字,执行4次,生成了四个卡片。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358