新手求问, swiftui 的文档应该怎么去阅读理解?救命啊。。

2021-04-17 10:59:23 +08:00
 uswood

提问背景:学习了 swift 语法,但没有实际做 APP 的经验,所以对实际 APP 成型,以及面向对象编程的理解比较模糊,对于文档只阅读过 python 的 beautifulsoup,但感觉和 swiftui 的文档差别很大,swift 的文档真的看不懂,下面我贴了代码和文档的对比,求大神解答,真的 真的要疯了。

如下图:

代码本身的疑问:

第一张图的代码是按照书中教程说的写的,但疑惑很多,从上至下:

1 、struct 结构不是不能继承的吗?为什么会有个 View 在后面。

2 、var body 后面花括号一大段,这个变量是计算变量吗?计算变量不应该是通过计算返回一个值吗。

3 、Text.fontWeight(.thin)该如何理解,我的理解是对 Text 对象的属性 /方法调用,为何里面又有个.thin,这到底是属性还是什么,直接通过点号就能设置属性吗。

4 、Text 对象先用点号调用了 fontWeight,然后直接接着后面又点号调用了 padding(),这个 padding 是在 fontWeight 的基础上调用的吗,padding 应该不属于 fontWeight 吧?他们可以混在一起调用的吗

上图代码与文档结合后,理解文档的疑问:

第二张图,是上图代码调用的 fontWeight 。

1 、首先,这个 Declaration 声明是如何理解的,没看懂要怎么使用;其次,下面全部是常量属性,比如名为 thin 的 Font.Weight (类型?结构?),这又该如何使用。。。

2 、同样的,下图是 TextStyle 的文档,怎么又变成了一个枚举,这个 Declaration 和 case 又是要人怎么用。。。

4796 次点击
所在节点    iDev
46 条回复
lujie2012
2021-04-17 15:30:37 +08:00
@uswood 具体的看我的资料,你进去看看我的学习记录,希望能帮到你
Flutter 是 google 开发的一套代码 code 可以在 iOS 和 android 上只需的框架,写界面是 dart 语言,思想内核是前端 DOM tree 一样逻辑,可以让移动端开发飞的更高,视野更广泛
jyman
2021-04-17 15:59:37 +08:00
@uswood 其实看了你的问题,感觉是 Swift 语言的一些基本概念还不是很清楚,建议进一步了解这门语言。SwiftUI 是一个用于构建界面的框架,但是在学习之前还是应该掌握好 Swift 这门语言,这样才能真正看明白这些用法。
“ 文档只阅读过 python 的 beautifulsoup,但感觉和 swiftui 的文档差别很大,swift 的文档真的看不懂” 这三者本来就不是一个东西,所以没有可比性。
Swift 语言可以学习官方文档 https://swiftgg.gitbook.io/swift/ 这是官方推荐的中文翻译版,或者直接阅读英文版,里面也有原版链接
fidetro
2021-04-17 16:27:17 +08:00
如果没有实际开发的经验,我建议不要学 SwiftUI,特别是如果你抱着一套代码可以 Mac 和 iOS 一起用的想法,在实际开发过程中你没法确认是自己代码的错误还是 SwiftUI 自身的 bug
frqk
2021-04-17 16:55:55 +08:00
> Text.fontWeight 而不是文档中的 Font.Weight / @frozen struct Weight

因为你点进去 Text 这个类里面就可以看见他的 fontWeight 方法的引数是 Font.Weight 这个类,然后因为是只能赋予这个类的值,所以写的时候就可以省略类的名字直接.thin 了。当然你也可以写 Font.Weight.thin 。
uswood
2021-04-17 17:24:39 +08:00
@jyman 嗯嗯谢谢,对的我就是看的这个 swiftgg,而且大体上都看了,只是在实际操作中,好多细节问题没说过啊,比如这里直接用.thin 代替了 Font.Weight.thin 真的很晕
uswood
2021-04-17 17:25:31 +08:00
@fidetro 说中啦,我确实是冲着这个方向去的。。能具体说下有什么突出的劣势吗
uswood
2021-04-17 17:25:39 +08:00
@lujie2012 谢谢!
uswood
2021-04-17 17:27:33 +08:00
@frqk 对对对,我就是卡在这种细节上,文档中没写这些东西,fontWeight 是一个方法,参数又是 Font.Weight 这个类,这个类里面又有很多常量属性比如 thin,这种东西在文档中哪里可以看到啊,不然真的是瞎子过河啊
fidetro
2021-04-17 18:48:49 +08:00
@uswood 我 SwiftUI 的经验不算很深,用 SwiftUI 写过一款平时开发用的 mac 工具 app 和目前在写的一套代码两端用的单词本 App,平时遇到问题就边搜边写,没怎么系统学习过,总结一下一直以来遇到的问题(不排除是自己水平问题):
1. 在 UI 细节上调整很痛苦(左移 xxpt 之类的);
2. 有些方法不同调用顺序会有不同效果(举例:Text("").a().b()和 Text("").b().a()),为什么会这样,我也没懂;
3. 最近遇到的问题,同一套代码.onChange 在 iOS 上回调 1 次,MacOS 上回调 2 次;另外有个场景下声明了一个全局变量(没有使用),会导致在 iOS .sheet 回调 2 次,MacOS 上回调 1 次;
fidetro
2021-04-17 19:00:17 +08:00
@uswood 另外不同的 Mac 系统版本也会有些功能不支持,为了写 Multiplatform 我把自己 Mac 升级到 big sur,在工程只支持 iOS 14 & Mac 11.0 的情况,在 Mac 上依然会出现 list 不支持左滑删除(具体哪个系统版本不支持忘记了,公司的电脑不支持,自己 Mac 11.2.3 是支持的)
xing7673
2021-04-17 19:12:33 +08:00
先会 uikit,再去搞 swiftui
justin2018
2021-04-17 19:13:54 +08:00
Learn SwiftUI for iOS 13 [part1+part2 全套视频] _哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
https://www.bilibili.com/video/BV1X7411R73g

这个教程 不错 非常棒
agagega
2021-04-17 19:29:34 +08:00
其实我觉得枚举直接从点开始这个语法还挺直观的,见过一次就能猜到意思了。苹果为了 SwiftUI 在 Swift 语言里加了不少语言特性,所以这些针对 SwiftUI 的新语法可以点到为止..
ooops
2021-04-17 19:54:34 +08:00
从提问描述来看就是 Swift 还没学明白。。再找个书和教程看看吧
Leonard
2021-04-17 22:40:38 +08:00
swift 没学好就先学 swift,弄明白了再学 swiftUI
xjbeta
2021-04-17 23:35:24 +08:00
@fidetro List 滑动删除 是 iOS 的逻辑 macOS 应该是选中 然后按钮 /快捷键 /右键弹出 Menu
macOS 上个人建议还是直接在 SwiftUI 里用 NSTableView 比较靠谱
只显示内容不需要交互的倒是可以用 List
Bruce2077
2021-04-17 23:48:51 +08:00
SwiftUI 的文档算是历年 Apple 文档最详细的了,毕竟它是 iOS 的下一个十年,苹果非常重视
看了你的疑问,盲猜是还不太懂 Swift,建议先去学 Swift
直接上手 SwiftUI 好比英文单词和基本语法还没学会,就要开始写作文,那是不现实的
mfmal
2021-04-18 01:06:31 +08:00
@onevcat
@uswood
喵神来了啊,多请教一下,毕竟大量 Swift 的教程都是喵神翻译的
uswood
2021-04-18 13:41:40 +08:00
@fidetro 明白了,谢谢~~
uswood
2021-04-18 13:42:03 +08:00
@xing7673 嗯嗯好,现在开始先看 UIKit 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX