Ric*_*ich 5 foreach scrollview swiftui
我想要完成的是有一个项目循环,我可以点击其中一个项目,一旦点击它就会以编程方式变得更大
这是我的代码和到目前为止的结果:
struct ContentView: View {
@State var emojisArray = ["", "", "", ""]
@State var selectedIndex = 0
var body: some View {
VStack {
ScrollView(.horizontal) {
HStack {
ForEach(0..<emojisArray.count) { item in
emojiView(emoji: self.emojisArray[item],
isSelected: item == self.selectedIndex ? true : false)
.onTapGesture {
print (item)
self.selectedIndex = item
}
}
}
}
.onAppear()
.frame(height:160)
VStack{
Text("selcted item:")
Text("\(self.emojisArray[self.selectedIndex])")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中 emojiView 是:
struct emojiView: View {
var emoji : String
@State var isSelected : Bool
var body: some View {
Text(emoji)
.font(isSelected ? .system(size: 120) : .system(size: 45))
}
}
Run Code Online (Sandbox Code Playgroud)
我猜问题是 ScrollView 不会自行重新加载
只需删除@State在emojiView
struct emojiView: View {
var emoji : String
var isSelected : Bool // << here !!
var body: some View {
Text(emoji)
.font(isSelected ? .system(size: 120) : .system(size: 45))
}
}
Run Code Online (Sandbox Code Playgroud)
使用 Xcode 12 / iOS 14 进行测试
| 归档时间: |
|
| 查看次数: |
2925 次 |
| 最近记录: |