【发布时间】:2020-01-15 16:54:05
【问题描述】:
我有一个水平滚动视图,我想以编程方式设置一个位置。这是视图的主体:
let radius = CGFloat(25)
let scrollWidth = CGFloat(700)
let scrollHeight = CGFloat(100)
let spacing = CGFloat(20)
let circleDiameter = CGFloat(50)
...
var body: some View {
GeometryReader { viewGeometry in
ScrollView () {
VStack(spacing: 0) {
Spacer(minLength: spacing)
Circle()
.fill(Color.black.opacity(0.5))
.scaledToFit()
.frame(width: circleDiameter, height: circleDiameter)
ScrollView(.horizontal) {
Text("The quick brown fox jumps over the lazy dog. Finalmente.")
.font(Font.title)
.frame(width: scrollWidth, height: scrollHeight)
.foregroundColor(Color.white)
.background(Color.white.opacity(0.25))
}
.frame(width: viewGeometry.size.width, height: scrollHeight)
.padding([.top, .bottom], spacing)
Circle()
.fill(Color.white.opacity(0.5))
.scaledToFit()
.frame(width: circleDiameter, height: circleDiameter)
Spacer(minLength: spacing)
}
.frame(width: viewGeometry.size.width)
}
.background(Color.orange)
}
.frame(width: 324 / 2, height: spacing * 4 + circleDiameter * 2 + scrollHeight) // testing
.cornerRadius(radius)
.background(Color.black)
}
如何更改此代码,以便我可以获取“The quick brown fox”的当前位置并在以后恢复它?我只是在尝试做一些我们一直在 UIKit 中使用 contentOffset 所做的事情。
我可以看到GeometryReader 可能对获取内容的当前帧很有用,但没有等效的编写器。为滚动视图或文本设置 .position() 或 .offset() 也没有让我有任何收获。
任何帮助将不胜感激!
【问题讨论】:
-
看看我的 [post] (stackoverflow.com/questions/57258846/…) 关于自定义滚动视图的实验。
标签: uiscrollview swiftui