更新Xcode11 beta3之后,我发现滚动视图内部视图的阴影将在边界处被切除,但是在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)
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)
}
我希望CourseView()的阴影可以显示为OK,而不是被ScrollView的边界切断。
答案 0 :(得分:0)
尝试在水平堆栈前后使用Spacer()。这样,水平堆栈(HStack)将占据滚动视图的整个高度。希望对您有帮助
答案 1 :(得分:0)
对于您的问题,我有一种解决方法。解决方案是在下一个视图中使用偏移量,并将其重叠在ScrollView
的顶部。在您的情况下,看起来像这样:
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)
}
SomeView().offset(x:0, y: -60) // 60 is your bottom padding so we offset by negative 60 to counter it.