PagerTabStripView/Sources/PagerSetAppearModifier.swift

39 lines
1.2 KiB
Swift

//
// PagerSetAppearModifier.swift
// PagerTabStrip
//
// Copyright © 2021 Xmartlabs SRL. All rights reserved.
//
import SwiftUI
struct PagerSetAppearItemModifier: ViewModifier {
private var onPageAppear: () -> Void
init(onPageAppear: @escaping () -> Void) {
self.onPageAppear = onPageAppear
}
func body(content: Content) -> some View {
content
.overlay(
GeometryReader { reader in
Color.clear
.onAppear {
DispatchQueue.main.async {
let frame = reader.frame(in: .named("PagerViewScrollView"))
index = Int(round((frame.minX - settings.contentOffset) / settings.width))
dataStore.setAppear(callback: onPageAppear, at: index)
}
}
}
)
}
@EnvironmentObject private var dataStore: DataStore
@EnvironmentObject private var settings: PagerSettings
@Environment(\.pagerTabViewStyle) var style: PagerTabViewStyle
@State private var index = -1
}