我在我的 SwiftUI 應用程式中制作一個加載螢屏,直到內容顯示,螢屏將在漸變內為白色和灰色設定影片。
當我嘗試運行此代碼時出現錯誤,實體方法“填充(_:樣式:)”要求“某些視圖”符合與我的 RoundedRectangle 相鄰出現的“ShapeStyle”,我不知道為什么?
有任何想法嗎?謝謝

struct LoadingMediaLibrary: View {
@State private var animateGradient = false
let size = UIScreen.main.bounds.width / 3.057
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<4, id: \.self) { _ in
RoundedRectangle(cornerRadius: 20.00)
.fill(
LinearGradient(gradient: Gradient(colors: [Color.white, Color.gray]), startPoint: .top, endPoint: .bottom)
.onAppear {
withAnimation(.linear(duration: 2.0).repeatForever(autoreverses: true)) {
animateGradient.toggle()
}
}
)
.frame(width: size, height: size)
}
}
}.padding(.leading, 10).padding(.top, 10)
}
}
uj5u.com熱心網友回復:
問題是 onApear() 修飾符。它回傳一些視圖,并且填充修改器需要符合 ShapeStyle 協議的視圖。
onApear 將在您的 ForEach 回圈中多次觸發。
將其移至最外層范圍:
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<4, id: \.self) { _ in
RoundedRectangle(cornerRadius: 20.00)
.fill(
LinearGradient(gradient: Gradient(colors: [Color.white, Color.gray]), startPoint: .top, endPoint: .bottom)
)
.frame(width: size, height: size)
}
}
}
.padding(.leading, 10).padding(.top, 10)
.onAppear {
withAnimation(.linear(duration: 2.0).repeatForever(autoreverses: true)) {
animateGradient.toggle()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421732.html
標籤:
