VStack {
AsyncImage(url: URL(string: coverURL)) { phase in
switch phase {
case .failure:
Image(systemName: "photo")
.font(.largeTitle)
case .success(let image):
image.resizable()
default:
ProgressView()
}
}
.scaledToFit()
.frame(height: 300)
.cornerRadius(10)
.padding()
VStack {
Text(title)
.font(.title)
.foregroundStyle(.white)
if let author = author {
Text(author)
.font(.subheadline)
.foregroundStyle(.white)
}
}
.padding()
}
.padding(.top, geometry.safeAreaInsets.top)
.frame(maxWidth: .infinity)
.background(
AsyncImage(url: URL(string: coverURL)) { phase in
switch phase {
case .failure:
Color.gray
case .success(let image):
image.resizable()
default:
Color.gray
}
}
.blur(radius: 30, opaque: true)
)
< /code>
Проблема в том, что текст недостаточно контрастирует, когда изображение является легким. В идеале текст должен быть либо белым, либо черным в зависимости от фонового изображения. Я нашел предложения по вычислению среднего цвета изображения и основания цвета текста на этом, но они работают для Uiimage
Not Image . Режим смешивания, .blendmode (.difference) , также не дал лучших результатов.>
if let author = author { Text(author) .font(.subheadline) .foregroundStyle(.white) } } .padding()
} .padding(.top, geometry.safeAreaInsets.top) .frame(maxWidth: .infinity) .background( AsyncImage(url: URL(string: coverURL)) { phase in switch phase { case .failure: Color.gray case .success(let image): image.resizable() default: Color.gray } } .blur(radius: 30, opaque: true) ) < /code> Проблема в том, что текст недостаточно контрастирует, когда изображение является легким. В идеале текст должен быть либо белым, либо черным в зависимости от фонового изображения. Я нашел предложения по вычислению среднего цвета изображения и основания цвета текста на этом, но они работают для Uiimage [/code] Not Image . Режим смешивания, .blendmode (.difference) , также не дал лучших результатов.>