【发布时间】:2022-08-19 21:33:53
【问题描述】:
我对SwiftUI 很陌生,并且正在研究这个小项目。我想根据位置变量将图像放置在行的顶部或行之间。
struct ContentView: View {
@State var position = 5
var body: some View {
VStack(spacing: 20){
ForEach(1...15, id: \\.self){i in
ZStack{
if i%2 != 0{
Rectangle()
.frame(height: 4)
.foregroundColor(.white)
}
if i == position{
Circle()
.frame(height: 30)
.foregroundColor(.white)
}
}
}
}
}
}
这是结果内容视图图像:-
如果 i 是奇数,我们创建一条线。如果 i 等于 position,我们会在线上创建一个圆,或者如果我们没有创建一条线,那么圆将绘制在其他线之间。
我的问题是当我改变位置的值时线条不会保持静止。*这是因为圆圈占用空间并将线条推离它。当圆圈位于两条线之间时,圆圈上方和下方的线条会被推得更多,这会导致线条在我从线条之间变为线条顶部时来回移动。
我将如何解决这个问题?
-
代替
if i == position{,我们在Circle上使用opacity修饰符并将不透明度设置为0,除非它匹配正确的位置。
标签: swift swiftui swift3 swiftui-view