idealwidth 与 swiftUI 框架中的正常宽度有何不同?
宽度和高度是定义框架尺寸的固定值。如果你写了这样的东西...
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()
修饰符
这里的讨论中探索了一些理想的尺寸。