Did some autoscroll stuff but will probably shelve that for now..?
This commit is contained in:
@@ -8,34 +8,87 @@
|
||||
import SwiftUI
|
||||
import SwiftData
|
||||
|
||||
//struct AutoScrollView<Content: View>: View {
|
||||
// let content: Content
|
||||
// var scrollSpeed: Double = 15.0
|
||||
//
|
||||
// @State private var offset: Double = 0.0
|
||||
//
|
||||
// init(scrollSpeed: Double = 0, @ViewBuilder _ content: () -> Content) {
|
||||
// self.content = content()
|
||||
// self.scrollSpeed = scrollSpeed
|
||||
// }
|
||||
//
|
||||
// var body: some View {
|
||||
// ScrollView {
|
||||
// content
|
||||
// .offset(y: offset)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func startScrolling() {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// func stopScrolling() {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// mutating func setScrollSpeed(_ speed: Double) {
|
||||
// self.scrollSpeed = speed
|
||||
// }
|
||||
//}
|
||||
|
||||
struct AutoScrollView<Content: View>: View {
|
||||
@State private var scrollOffset: CGFloat = 0
|
||||
@State private var timer: Timer? = nil
|
||||
|
||||
let content: Content
|
||||
var scrollSpeed: Double = 15.0
|
||||
var scrollSpeed: CGFloat = 0.5 // Adjust this value to control the scroll speed
|
||||
|
||||
@State private var offset: Double = 0.0
|
||||
|
||||
init(scrollSpeed: Double = 0, @ViewBuilder _ content: () -> Content) {
|
||||
init(scrollSpeed: Double = 0.7, @ViewBuilder _ content: () -> Content) {
|
||||
self.content = content()
|
||||
self.scrollSpeed = scrollSpeed
|
||||
}
|
||||
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
content
|
||||
.offset(y: offset)
|
||||
VStack {
|
||||
content
|
||||
.padding()
|
||||
.background(GeometryReader { geo in
|
||||
Color.clear.onAppear {
|
||||
// Calculate the height of the content
|
||||
let contentHeight = geo.size.height
|
||||
startTimer(contentHeight: contentHeight)
|
||||
}
|
||||
})
|
||||
.offset(y: -scrollOffset)
|
||||
}
|
||||
}
|
||||
.onDisappear {
|
||||
stopTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func startScrolling() {
|
||||
|
||||
|
||||
private func startTimer(contentHeight: CGFloat) {
|
||||
timer?.invalidate() // Invalidate any existing timer
|
||||
timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { _ in
|
||||
// Update the scroll offset
|
||||
withAnimation {
|
||||
scrollOffset += scrollSpeed
|
||||
}
|
||||
|
||||
// Reset scroll offset when it reaches the end
|
||||
if scrollOffset >= contentHeight {
|
||||
scrollOffset = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func stopScrolling() {
|
||||
|
||||
}
|
||||
|
||||
mutating func setScrollSpeed(_ speed: Double) {
|
||||
self.scrollSpeed = speed
|
||||
|
||||
private func stopTimer() {
|
||||
timer?.invalidate()
|
||||
timer = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user