如何解决SwiftUI (Playgrounds) - 将值从一个视图传递到另一个
我正在学习 SwiftUI 并试图实现滚动内容时背景图像变得模糊的效果。
我目前在 Mac 上使用 Playgrounds(这就是 ArtworkImage 公开的原因),其中有两个包含代码的文件。
我尝试按照此处的说明进行操作,但运气不佳 - ScrollView effects using GeometryReader
主要(电影视图)
import SwiftUI
import PlaygroundSupport
struct MovieView: View {
var body: some View {
ArtworkImage()
.overlay(
ScrollView { <- the amount scrolled will determine the blur effect
vstack(alignment: .leading,spacing: 40) {
Spacer()
.frame(height: 280)
MovieInfo()
CastRow()
MovieRow()
Spacer()
}
}
)
}
}
PlaygroundPage.current.setLiveView(MovieView())
ArtworkImage.swift(在 MovieView Sources 中)
import SwiftUI
public struct ArtworkImage: View {
public init(){}
public var body: some View {
let poster: Image = Image(uiImage: #imageLiteral(resourceName: "wandavision.jpg"))
GeometryReader { geo in
poster
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geo.size.width)
.blur(radius: 80,opaque: true)
.ignoresSafeArea()
}
.overlay(
vstack {
GeometryReader { geo in
poster
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geo.size.width,height: 456,alignment: .top)
.mask(
Rectangle()
.fill(LinearGradient(gradient: Gradient(colors: [Color.clear,Color.black]),startPoint: .bottom,endPoint: .top))
)
.blur(radius: [based on the amount the user has scrolled the ScrollView in the MovieView view])
}
Spacer()
}
)
}
}
我想要做的(不确定这是否是最好的方法),是存储用户滚动的单位数量(以像素为单位?),并将其传递给 {{1}查看,我可以在 ArtworkImage
修饰符的计算中使用它。
我希望这是有道理的。任何帮助表示赞赏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。