文章

SwiftUI:"some View" 到底是什么类型

两个同样描述的调整器,调整器的顺序不同,为什么 Text 表现出不同的结果?

some-view-1

some View

some-view-2

图中 text1 的类型是 SwiftUI 的 Text,text2 与 text3 返回的是一个 ModifiedContent 类型。

some-view-3

some View 本质是 ModifiedContent<Content, Modifier> 结构,他包含了两个内容。在多嵌套的状态下,可以看作:

some View <–等价–> ModifiedContent<ModifiedContent, 最后一个修饰结构>

而内部的 ModifiedContent 里面同样递归包含了 ModifiedContent<ModifiedContent, 倒数第二个修饰结构>

结论

调整器的顺序不同会导致返回不同的 ModifiedContent 类型。回到最开始的问题:

some-view-4

前者 Color 调整器针对的是包裹 TextPadding 的 some View,而后者 Color 仅仅针对 Text,所以造成表现形式不同。

本文由作者按照 CC BY 4.0 进行授权

© Liam. 保留部分权利。

本博客由 Jekyll 生成,使用 Chirpy 作为主题