我有一个生成的超大图表,我将其放入 ScrollView 中,以便用户可以向右滚动并查看所有值。我想通过淡出 ScrollView 来向用户表明右侧有“更多内容”。通过应用 CAGradientLayer,Swift 中的某些事情变得很容易。
我的方法是应用从透明(从 80% 开始)到系统背景颜色(以 100% 结束)渐变的叠加层。结果可以看到所附的屏幕截图。
问题编号 1:看起来不像它应该看起来的样子。
问题编号 2:尽管将 -1 的 zIndex 应用到叠加层,但一旦应用叠加层,ScrollView 就不会再滚动。
知道如何实现这一目标吗?谢谢!
这是我的代码:
struct HealthExportPreview: View {
@ObservedObject var carbsEntries: CarbsEntries
var body: some View {
ScrollView(.horizontal) {
HStack {
ForEach(0..<self.carbsEntries.carbsRegime.count, id: \.self) { index in
ChartBar(carbsEntries: self.carbsEntries, entry: self.carbsEntries.carbsRegime[index], requiresTimeSplitting: index == self.carbsEntries.timeSplittingAfterIndex)
}
}
.padding()
.animation(.interactiveSpring())
}
.overlay(Rectangle()
.fill(
LinearGradient(gradient: Gradient(stops: [
.init(color: .clear, location: 0.8),
.init(color: Color(UIColor.systemBackground), location: 1.0)
]), startPoint: .leading, endPoint: .trailing)
)
.zIndex(-1)
) …Run Code Online (Sandbox Code Playgroud) 自从更新到 Xcode 12 / iOS 14 以来,我遇到了一些奇怪的行为。为了验证此行为,我在测试应用程序中将其隔离。
在我原来的应用程序中,我有多个Sheet要控制的。这就是为什么我必须enum区分当前活动的工作表并将其存储在@State private var activeSheet. 在@ViewBuilder函数中sheetContent(),我返回View所选的Sheet.
对于这个测试应用程序,出于简单原因,我只实现了一张表。
这是 的ContentView代码:
struct ContentView: View {
@State private var showingSheet = false
@State private var activeSheet = ContentViewSheets.State.none
var body: some View {
Button(action: {
activeSheet = .aSheet
showingSheet = true // <-- ISSUE: activeSheet is still set to .none here!
}) {
Text("Open Sheet")
}
.sheet(isPresented: $showingSheet, content: sheetContent)
} …Run Code Online (Sandbox Code Playgroud)