我试着创建一个下拉列表,但是列表看起来不太好,当打开时,它一直在改变HStack的大小
ZStack {
VStack() {
HStack(spacing: 0) {
HStack {
Text(filters[selectedFilter].name)
.foregroundColor(Color.black)
.font(.system(size: 25))
Image(systemName: "chevron.right")
.aspectRatio(contentMode: .fit)
.font(.system(size: 25, weight: .none))
}
.padding(10)
.background(.ultraThinMaterial, in : RoundedRectangle(cornerRadius: 45.0))
.onTapGesture {
withAnimation(Animation.spring().speed(2)) {
showOptions.toggle()
}
}
if showOptions {
VStack() {
ForEach(filters.indices, id: \.self) { i in
Text(filters[i].name)
.onTapGesture {
showOptions.toggle()
selectedFilter = i
}
}
}
.background(.ultraThinMaterial, in : RoundedRectangle(cornerRadius: 45.0))
}
字符串
我贴了一些崩溃时的照片
的数据
展开时低于
的
我不想在右边,但下面的下拉列表。正如你所看到的,整个图标都在向下移动。我需要的图标,留在顶部,只是有一个简单的下拉菜单时,在左边的文本点击
知道吗?谢谢
2条答案
按热度按时间9gm1akwq1#
其他按钮向下移动,因为
HStack
的对齐方式是.center
。如果将对齐设置为
.top
,则其他按钮不会向下移动:字符串
如果您希望下拉列表直接出现在“Surf >"下面,请将它们都 Package 在
VStack(alignment: .leading)
中。同样,这里的对齐很重要。也就是说,创建下拉列表的更简单方法是使用
Menu
:的数据
由于这看起来像一个选择器,因此也可以考虑使用
Picker
和.menu
样式:的字符串
djmepvbi2#
首先创建一个自定义首选项。
字符串
然后将锚点首选项键添加到所需的视图中。在当前情况下,
Surf Button
型
最后将overlayPreferenceValue添加到VStack
型
的数据