问题描述
使用 Swift5.3.2、iOS14.4、Xcode12.4,
我正在尝试在 SwiftUI 中将 TabView 旋转为横向并返回纵向。
我将 TabView 作为 PageTabViewStyle 运行,以使其看起来像一个 PageViewController。
一切正常,除了旋转到横向和纵向。
这是我的代码:
TabView(selection: self.$selectedTab) {
Text("1")
.frame(maxWidth: .infinity,maxHeight: .infinity)
.background(Color.pink)
Text("2")
.frame(maxWidth: .infinity,maxHeight: .infinity)
.background(Color.yellow)
Text("3")
.frame(maxWidth: .infinity,maxHeight: .infinity)
.background(Color.green)
Text("4")
.frame(maxWidth: .infinity,maxHeight: .infinity)
.background(Color.blue)
}
.tabViewStyle(PageTabViewStyle())
.onRotate { _ in
print(selectedTab)
}
为了更好地观察我们最终看到的选项卡,我编写了这个视图扩展和自定义修饰符。但是,不需要扩展名和自定义修饰符的情况下已经发生了不需要的选项卡跳转。
知道该怎么做吗??
extension View {
func onRotate(perform action: @escaping (UIDeviceOrientation) -> Void) -> some View {
self.modifier(DeviceRotationViewModifier(action: action))
}
}
struct DeviceRotationViewModifier: ViewModifier {
let action: (UIDeviceOrientation) -> Void
func body(content: Content) -> some View {
content
.onAppear()
.onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in
action(UIDevice.current.orientation)
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)