SwiftUI: как отображать одно изображение за раз?
У меня есть массив изображений, которые я просматриваю и отображаю в scrollView. Это то, чего я хочу достичь:
- Я хотел бы, чтобы было только одно видимое изображение за раз. Нравится TikTok и инстаграм.
- Я хотел бы, чтобы изображение занимало как можно большую часть экрана, сохраняя при этом соотношение сторон.
- Центральное изображение
- я не против использовать
.edgesIgnoringSafeArea([.top, .leading, .trailing])
Это код, который у меня есть до сих пор. Как видите, одновременно видны два изображения. И даже когда в массиве всего одно изображение, оно не центрируется, а цепляется за верхнюю часть экрана.
Любые идеи о том, как решить эту проблему?
ScrollView(.vertical) {
ForEach(allRetrievedMedia, id: \.self) { item in
switch(item) {
case .image(let img):
Image(uiImage: img)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(alignment: .center)
}
}
}
1 ответ
Вставьте изображение в контейнер и добавьте.frame(width: screenSize.width, height: screenSize.height, alignment: .center)
к этому контейнеру. Затем добавьте.scaledToFill()
метод к самому изображению. Это должно помочь, вот фрагмент, чтобы помочь...
struct ContentView: View {
let screenSize: CGRect = UIScreen.main.bounds
var body: some View {
ScrollView(.vertical) {
ForEach(allRetrievedMedia, id: \.self) { item in switch(item) {
case .image(let img):
VStack {
Image(uiImage: img)
.resizable()
.scaledToFill()
}.frame(width: screenSize.width, height: screenSize.height, alignment: .center)
}
}
}
}
Сам не пробовал, но должно работать как шарм. Надеюсь, поможет