SwiftUI 从下到上反转 ScrollView
SwiftUI reverse ScrollView from bottom to top
我想制作一个 ScrollView,它可以让我从底部滚动到顶部。
基本上我有一个渐变背景(底部 - 黑色,顶部 - 白色)。当我设置 ScrollView 时,我可以从白色向下滚动到黑色。我希望应用程序从 ScrollView 的底部开始,让我可以向上滚动。 (从黑到白)
谢谢!
当前代码:
struct ContentView: View {
var body: some View {
ScrollView(.vertical/*, showsIndicators: false*/){
VStack(spacing: 0) {
ForEach ((0..<4).reversed(), id: \.self) {
Image("background\([=10=])").resizable()
.aspectRatio(contentMode: .fill)
.frame(width: UIScreen.main.bounds.width ,height:1000)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.red)
}
.edgesIgnoringSafeArea(.all)
}
}
我希望滚动视图从下到上显示,而不是从上到下显示。这有我的答案:https://www.thirdrocktechkno.com/blog/implementing-reversed-scrolling-behaviour-in-swiftui/
TLDR:.rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
滚动视图和滚动视图中的项目
我的完整代码:
ScrollView(.vertical, showsIndicators: true, content: {
LazyVStack(alignment: .center, spacing: nil, pinnedViews: [], content: {
ForEach(1...5, id: \.self) { count in
ScrollView(.horizontal, showsIndicators: false, content: {
LazyHStack(alignment: .center, spacing: nil, pinnedViews: [], content: {
ForEach(1...10, id: \.self) { count in
Text("Placeholder \(count)").rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
}
})
})
}
})
}).rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
我能够通过 UIScrollView 中的 StackView 实现这一点。把你想要的任何东西放在堆栈视图中,然后放在 ViewController.viewDidLoad do
//flip the scrollview
scrollview.transform = CGAffineTransform(rotationAngle: Double.pi)
//flip the stackview
stackview.transform = CGAffineTransform(rotationAngle: Double.pi)
现在滚动视图将从下向上滚动
我想制作一个 ScrollView,它可以让我从底部滚动到顶部。 基本上我有一个渐变背景(底部 - 黑色,顶部 - 白色)。当我设置 ScrollView 时,我可以从白色向下滚动到黑色。我希望应用程序从 ScrollView 的底部开始,让我可以向上滚动。 (从黑到白)
谢谢!
当前代码:
struct ContentView: View {
var body: some View {
ScrollView(.vertical/*, showsIndicators: false*/){
VStack(spacing: 0) {
ForEach ((0..<4).reversed(), id: \.self) {
Image("background\([=10=])").resizable()
.aspectRatio(contentMode: .fill)
.frame(width: UIScreen.main.bounds.width ,height:1000)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.red)
}
.edgesIgnoringSafeArea(.all)
}
}
我希望滚动视图从下到上显示,而不是从上到下显示。这有我的答案:https://www.thirdrocktechkno.com/blog/implementing-reversed-scrolling-behaviour-in-swiftui/
TLDR:.rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
滚动视图和滚动视图中的项目
我的完整代码:
ScrollView(.vertical, showsIndicators: true, content: {
LazyVStack(alignment: .center, spacing: nil, pinnedViews: [], content: {
ForEach(1...5, id: \.self) { count in
ScrollView(.horizontal, showsIndicators: false, content: {
LazyHStack(alignment: .center, spacing: nil, pinnedViews: [], content: {
ForEach(1...10, id: \.self) { count in
Text("Placeholder \(count)").rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
}
})
})
}
})
}).rotationEffect(Angle(degrees: 180)).scaleEffect(x: -1.0, y: 1.0, anchor: .center)
我能够通过 UIScrollView 中的 StackView 实现这一点。把你想要的任何东西放在堆栈视图中,然后放在 ViewController.viewDidLoad do
//flip the scrollview
scrollview.transform = CGAffineTransform(rotationAngle: Double.pi)
//flip the stackview
stackview.transform = CGAffineTransform(rotationAngle: Double.pi)
现在滚动视图将从下向上滚动