Код: Выделить всё
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 Подробнее здесь: https://stackoverflow.com/questions/797 ... ound-image