swiftui - SwiftUI 的 tabViewStyle PageView 不适用于纵向到横向的旋转
问题描述
使用Swift5.5、iOS15.0.1、
在 SwiftUI 中创建 PageView 仍然不是那么简单——即使在 2021 年秋季也是如此。
Apple 让我们可以滥用带有特殊修饰符的 TabView 来创建 PageView
修改器被调用.tabViewStyle(.page(indexDisplayMode: .always))
,并且在您将手机从纵向旋转到横向之前它会起作用。
Apple 不知何故没有想到使用此 API 进行纵向到横向的旋转。
旋转手机完全弄乱了页面索引!
下面是这个例子的完整代码。尝试自己旋转手机。
看视频:
为了在旋转后保持索引完好无损,您需要做什么?
--> 拜托,我不是要重新获得索引。我说的是围绕当前索引进行的漂亮,平滑的旋转(不是某种需要存储索引并在旋转后再次重新分配的变通方法......)
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack {
ScrollView(.init()) {
TabView {
Text("Hello 1")
Text("Hello 2")
Text("Hello 3")
Text("Hello 4")
}
.id(UUID())
.tabViewStyle(.page(indexDisplayMode: .always))
}
.ignoresSafeArea()
.transition(.move(edge: .bottom))
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
解决方案
推荐阅读
- java - 将 Iterable 与 List 进行比较会引发 NullPointerException
- blazor - Blazor,没有 ID 为“x”的跟踪对象。也许 DotNetObjectReference 实例已经被释放
- python - 在 python 环境中运行 Tesseract 或替代 OCR 模块,无需下载 .exe 文件
- java - 从 WAR 获取实现版本
- r - 在多面 ggplot 中包含特定但可变的因子水平
- c++ - 在线程中使用锁会减慢其他不使用锁的线程吗?
- r - 如何在 ggplot 函数中指定参数?
- xcode - 还有其他人在使用 Facebook SDK 时遇到困难吗?
- angular - 问题重构为角度反应式编程
- r - 如何使用 mlr3 估算数据并使用 NA 值进行预测?