swiftUI 中框架中的 IdealWidth 和 width 参数有什么区别

问题描述 投票:0回答:2

idealwidth 与 swiftUI 框架中的正常宽度有何不同?

swift swiftui
2个回答
12
投票

宽度和高度是定义框架尺寸的固定值。如果你写了这样的东西...

    Rectangle()
        .foregroundColor(.blue)
        .frame(width: 200, height: 200)

...您将得到一个 200x200 的蓝色方块,无论它是否适合父视图。

但是,“理想”尺寸并不是固定的。写这样的东西... Rectangle() .foregroundColor(.blue) .frame(idealWidth: 200, idealHeight: 200)

...将完全填满空白视图。这是因为理想的尺寸更多的是一个温和的建议,而不是父母提出的尺寸。对于许多预定义的视图,理想的尺寸定义了视图需要被理解的空间大小。对于 
Text()

,理想宽度是字符串的长度,理想高度是线条的高度。

回顾我们理想大小的矩形,像这样应用

.fixedSize()

...

Rectangle()
    .foregroundColor(.blue)
    .frame(idealWidth: 200, idealHeight: 200)
    .fixedSize()

...将强制使用理想尺寸并创建 200x200 的蓝色正方形。如果您将该修饰符添加到 
Text()

,您会看到它也呈现出理想的大小,在许多情况下,它会是一个太宽的字符串,以至于超出了其父框架。

您可以使用 

.fixedSize()

修饰符进一步定义视图定义的轴。

Rectangle()
    .foregroundColor(.blue)
    .frame(idealWidth: 200, idealHeight: 200)
    .fixedSize(horizontal: true, vertical: false)

在上面的示例中,我们的矩形固定为其理想宽度,但可以垂直增长以填充其父级。这对于自定义按钮之类的东西很有用,您有时可能想限制其高度但允许其拉伸以填充其父视图。

您可以从

这篇文章

以及这篇文章中学到更多信息。苹果还在.fixedSize()修饰符

这里
的讨论中探索了一些理想的尺寸。


0
投票
idealWidth

宽度或高度时,会使用

idealHeight
nil
。在这种情况下,孩子们将使用他们理想的尺寸。
出现这种情况的一种情况是视图位于 

ScrollView

中。沿着滚动轴,子视图将使用其理想的宽度/高度。

我在这里找到了解释:

https://www.swiftuifieldguide.com/layout/scrollview/

© www.soinside.com 2019 - 2024. All rights reserved.