在 SwiftUI 中,滚动视图内部 UI 视图的阴影会被滚动视图的大小截断吗?

Ale*_*eng 6 scrollview swiftui

更新Xcode11 beta3后,我发现scrollview内部视图的阴影会在边界处被切断,但在Xcode11 beta2中没有问题。我只是使用底部填充来修复它,但我认为这不是一个好的解决方案。有没有其他解决方案来解决这个问题?

ScrollView(.horizontal, showsIndicators: false) {
                HStack(spacing: 30) {
                    ForEach(courses) { item in
                        PresentationLink(destination: ContentView()) {
                            CourseView(
                                title: item.title,
                                image: item.image,
                                color: item.color,
                                shadowColor: item.shadowColor
                            )
                        }
                    }
                }
                .padding(.leading, 40)
                .padding(.bottom, 60)
Run Code Online (Sandbox Code Playgroud)

CourseView() 有一个阴影修饰符,定义的主体就像:

var body: some View {
        return VStack(alignment: .leading) {
            Text(title)
                .font(.title)
                .fontWeight(.bold)
                .color(.white)
                .padding(30)
                .lineLimit(4)
                .padding(.trailing, 50)
            Spacer()
            Image(image)
                .resizable()
                .renderingMode(.original)
                .aspectRatio(contentMode: .fit)
                .frame(width: 246, height: 150)
                .padding(.bottom, 30)
            }
            .background(color)
            .cornerRadius(30)
            .frame(width: 246, height: 360)
            .shadow(color: shadowColor, radius: 20, x:0, y: 20)
    }
Run Code Online (Sandbox Code Playgroud)

希望CourseView()的影子可以正常显示,不要被ScrollView的边界截断。

小智 4

尝试在水平堆栈之前和之后使用 Spacer() 。这样你的水平堆栈(HStack)将占据滚动视图的整个高度。希望能帮助到你