【发布时间】:2020-02-19 06:57:32
【问题描述】:
我希望能够像这样使用自定义View:传递给Nav 的视图的数量或类型可以不同。
Nav(
width: 200
) {
NavButton("Item 1", action: {self.someAction}, isActive: true)
NavButton("Item 1", action: {self.someAction}, isActive: false)
NavTitle("Page 1")
}
并且它会给出与以下相同的结果:
HStack {
NavButton("Item 1", action: {self.someAction}, isActive: true)
.frame(width: 200 / 3)
NavButton("Item 1", action: {self.someAction}, isActive: false)
.frame(width: 200 / 3)
NavTitle("Page 1")
.frame(width: 200 / 3)
}
这个想法是在导航栏中均匀分布项目。
我考虑过使用视图数组并将其作为属性传递,但这对我来说看起来很糟糕。有没有办法和我上面的例子一样,或者有更好的方法吗?
【问题讨论】:
-
您是否尝试过在两者之间使用 Spacer()?
-
如果第一个元素的标签比第三个长,会发生什么?我认为中间元素不会在中心,而是稍微向右?
-
所以在这种情况下,您必须提供标签的宽度和高度以及 .lineLimit(nil) 以获得正确的响应。喜欢下面的答案
-
以及如何在不为每个元素指定的情况下将元素的宽度和高度应用于自定义视图中的每个元素?
-
您必须为它创建一个具有高度和宽度的单独类,然后调用它