欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-12 20:31:26
本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。 Eul 是一款 SwiftUI & Combine 教程 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现给读者。笔者意在尽可能 ......

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

本文为 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 可能会因为空间不足而被压缩。

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

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 查看更多内容。