SwiftUI 简明教程之布局优先级与视图理想尺寸

2022-07-22,,,,

本文为 eul 样章,如果您喜欢,请移步 appstore/eul 查看更多内容。

eul 是一款 swiftui & combine 教程 app(ios、macos),以文章(文字、图片、代码)配合真机示例(xcode 12+、ios 14+,macos 11+)的形式呈现给读者。笔者意在尽可能使用简洁明了的语言阐述 swiftui & combine 相关的知识,使读者能快速掌握并在 ios 开发中实践。

layoutpriority

layoutpriority 可以使我们手动控制视图布局优先级。我们看看如下代码:

hstack {
  text("hello")
  text("world")
  text("stay hungry, stay foolish")
     // .layoutpriority(1)
}
.linelimit(1)
.font(.title3)

在不打开注释处的代码时,最后的 text 文字是会被压缩显示成省略号的。系统默认所有 view 的 layoutpriority 都是 0。如果我们将注释打开,赋予最后的 text 较高的优先级,那么最后的 text 就可以完全展示出来,而前面的两个 text 可能会因为空间不足而被压缩。

fixedsize

fixedsize 可以将试图调整为理想的尺寸,比如我们有如下视图:

text("stay hungry, stay foolish")
  //.fixedsize()
  .font(.title)
  .frame(width: 200, height: 50)
  .border(color.blue)
  .centerhorizontal()

在没有使用 fixedsize 的情况下,文本会被压缩,因为 200 * 50 的空间不足以展示所有文字。如果我们将注释处的代码打开,文本就可以完全展示了,因为 swiftui 会为该视图调整最理想的尺寸。

fixedsize 还能指定调整的方向:

func fixedsize(horizontal: bool, vertical: bool) -> some view

bool 值为 true 时,表示要调整该方向上的尺寸。

本文为 eul 样章,如果您喜欢,请移步 appstore/eul 查看更多内容。

《SwiftUI 简明教程之布局优先级与视图理想尺寸.doc》

下载本文的Word格式文档,以方便收藏与打印。