[英]How can I get rid of index dots on TabView with PageTabViewStyle in SwiftUI?
[英]How to get TabView offset in SwiftUI
struct FooView: View {
@State private var offset: CGFloat = 0
var body: some View {
NavigationView {
TabView {
VStack {
Text("Tab 1")
}
VStack {
Text("Tab 2")
}
}
.SomeWatchOffsetMethod(of: offset) { value in
// I want to get horizontal offset when TabView Scrolling.
offset = value
}
}
}
}
我想在 SwiftUI 中 TabView 滾動時獲得水平偏移。
在 UIKit 中有類似的東西。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
parent.offset = scrollView.contentOffset.x
}
要跟蹤任何視圖的偏移量,以及TabView
的視圖,您可以使用Overlay
+ GeometryReader
將OffsetProxy
作為疊加層添加到您感興趣的偏移視圖
struct OffsetProxy: View {
var body: some View {
GeometryReader { proxy in
Color.clear
.preference(key: OffsetKey.self, value: proxy.frame(in: .global).minX)
}
}
}
然后就可以在onPreferenceChange
訂閱監聽offset的變化
struct FooView: View {
@State private var offset: CGFloat = 0
var body: some View {
NavigationView {
TabView {
VStack {
Text("Tab")
}
.overlay(
OffsetProxy()
)
.onPreferenceChange(OffsetKey.self) { offset in
self.offset = offset
}
}
}
}
}
struct OffsetKey: PreferenceKey {
static var defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
value = nextValue()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.