相关疑难解决方法(0)

SwiftUI 不透明度渐变

我希望让滚动视图在边缘附近淡出。我已经实现了一个掩模,它几乎达到了我想要的效果。但是,滚动停止工作,并且蒙版使矩形变黑(应该有图像)。

我看过另一篇文章,它覆盖了视图的背景颜色,以创建看起来像淡出的东西,但我的背景是渐变的,所以它不起作用。

var body: some View {
    ZStack {
        LinearGradient(
            gradient: Gradient(colors: [Color(#colorLiteral(red: 0.1333333333, green: 0.7098039216, blue: 0.4509803922, alpha: 1)), Color(#colorLiteral(red: 0.1607843137, green: 0.6705882353, blue: 0.8862745098, alpha: 1))]),
            startPoint: .top, endPoint: .bottom)
            .ignoresSafeArea()
        
        LinearGradient(gradient: Gradient(colors: [.clear, .black, .clear]), startPoint: .leading, endPoint: .trailing)
            .mask(ScrollingRectangles())
    }
}
Run Code Online (Sandbox Code Playgroud)

这是上面代码的结果:

在此输入图像描述

下面是我整理的一个示例,以说明我想要实现的目标。

在此输入图像描述

swiftui

12
推荐指数
1
解决办法
1万
查看次数

淡入/淡出 ScrollView Swift UI

当用户滚动文本时,是否可以淡入/淡出滚动视图顶部和底部的文本?Xcode 14.2、iOS 16、斯威夫特 5.7

我研究了其他解决方案,例如:SwiftUI - fade out a ScrollView

我尝试过以下操作,但它水平淡出侧面并添加颜色。我希望它是垂直的并且透明淡入淡出,如图所示。

ScrollView {
    ScrollViewReader { scrollViewProxy in
        VStack {        
            ForEach(chatMessages, id: \.id) { message in
                messageView(message: message)
                
            }
            .mask(
                VStack(spacing: 0) {
                    
                    // Top gradient
                    LinearGradient(gradient:
                                    Gradient(
                                        colors: [Color.black.opacity(0), Color.black]),
                                   startPoint: .leading, endPoint: .trailing
                    )
                    .frame(width: 250)
                    
                    // Middle
                    Rectangle().fill(Color.black)
                    
                    // Bottom gradient
                    LinearGradient(gradient:
                                    Gradient(
                                        colors: [Color.black, Color.black.opacity(0)]),
                                   startPoint: .leading, endPoint: .trailing
                    )
                    .frame(width: 250)
                }
            )   
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经使用此代码来产生水平淡入淡出,但需要在顶部和底部垂直。这是模拟器中现在的内容。

在此输入图像描述

看图片:

在此输入图像描述

swift swiftui

2
推荐指数
1
解决办法
537
查看次数

标签 统计

swiftui ×2

swift ×1