Skip to content

Instantly share code, notes, and snippets.

@DaisukeNagata
Last active December 29, 2019 09:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DaisukeNagata/7ce97f8cc65897fd858c2b3b57785b3b to your computer and use it in GitHub Desktop.
Save DaisukeNagata/7ce97f8cc65897fd858c2b3b57785b3b to your computer and use it in GitHub Desktop.
SwiftUI_Scroll_onTapGesture
import SwiftUI
struct Event: Identifiable {
let id: Int
let name: String
let emoji: String
let color: Color
}
struct ContentView : View {
let events = [
Event(id: 0, name: "Happy", emoji: "🤞", color: Color.white),
Event(id: 1, name: "NewYear", emoji: "🎉", color: Color.white),
Event(id: 2, name: "Zodiac", emoji: "🐹", color: Color.white),
Event(id: 3, name: "happiness", emoji: "👍", color: Color.white),
]
@ObservedObject var viewModel = OrientationModel()
var body: some View {
ScrollView(.horizontal) {
HStack {
ForEach(events) { event in
VStack {
Text(event.emoji)
.font(.system(size: 50))
Text(event.name)
.font(.system(.caption))
}
.padding(40)
.background( event.id == self.viewModel.count ? self.viewModel.backColor : self.viewModel.indexColor[event.id])
.cornerRadius(10)
.onTapGesture {
var s = self
s.onCellEvent(.cellEvent(id: event))
}
}
}
}
.padding()
}
mutating func onCellEvent(_ event: CellEvent<Event>) {
switch event {
case let .cellEvent(event):
viewModel.backColor =
viewModel.indexColor[event.id] == viewModel.setColor[event.id] ?
Color.white : viewModel.setColor[event.id]
viewModel.count = event.id
viewModel.indexColor[event.id] = viewModel.backColor
}
}
}
final class OrientationModel: ObservableObject {
@Published var count = Int()
@Published var backColor = Color.white
@Published var setColor = [Color.red,Color.green,Color.blue,Color.yellow]
@Published var indexColor = [Color.white,Color.white,Color.white,Color.white]
}
public enum CellEvent<Event> { case cellEvent(id: Event) }
@DaisukeNagata
Copy link
Author

movie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment