使用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()
}
}