Ориентация SwiftUI AsyncImage

Я использую AsyncImage для загрузки jpg с моего сервера Parse. Если я загружаю файл вручную, он имеет ориентацию 6 (90 градусов против часовой стрелки), но когда файл возвращается AsyncImage, эта ориентация отсутствует и он выглядит повернутым.

Кроме того, когда я заменяю SBPAsyncImage на AsyncImage, ориентация правильная.

Есть ли возможность AsyncImage обнаружить и исправить ориентацию?

                  AsyncImage(url: photoURL) { image in
                    image
                        .resizable()
                        .scaledToFill()
                        .frame(width: 200, height: 200, alignment: .leading)
                    } placeholder: {
                         ProgressView()
                    }

Редактировать: я слишком усердствовал в упрощении кода. Ориентация правильная, когда AsyncImage отображается в простом представлении, но в моем макете есть список ScrollViews, отображающий изображения, полученные с сервера Parse. Вот вариант оригинала:

      struct TimeLineView: View {
//: A view model in SwiftUI
@StateObject var viewModel = PFTour.query(matchesKeyInQuery(key: "routeID", queryKey: "uniqueID", query: PFRoute.query("state" == "Colorado")))
    .order([.descending("date")])
    .include("route")
    .include("creator")
    .include("photos")
    .viewModel

    var body: some View {
    Group {
        if let error = viewModel.error {
            Text(error.description)
        } else {
            List(viewModel.results, id: \.id) { tour in
                ParseTourImageOnlyScrollView(tour: tour)
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
        }
        Spacer()
    }
    .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
    .edgesIgnoringSafeArea(.all)
    .onAppear(perform: {
        viewModel.find()
    })
}

Каждая ячейка отображает ScrollView:

      struct ParseTourImageOnlyScrollView: View {
let tour: PFTour
var body: some View {
    VStack {
        Divider()
        ScrollView(.horizontal) {
            HStack(spacing: 5.0) {
                if let photos = tour.photos {
                ForEach(photos, id: \.self) { parsePhoto in
                    PhotoOnlyView(photoFile: parsePhoto.photo!)
                }
                }
            }
        }
        Divider()
        Spacer()
    }
}

При сравнении AsyncImage с BackPortAsyncImage первый не показывает правильную ориентацию данных изображения по адресу https://parsefiles.back4app.com/zgqRRfY6Tr5ICfdPocRLZG8EXK59vfS5dpDM5bqr/7d5eaf509e0745be0314aa493099dc82_file.bin:

      struct PhotoOnlyView: View {
let photoFile: ParseFile
var body: some View {
    if #available(iOS 15.0, *) {
        VStack{
            SwiftUI.AsyncImage(url: photoFile.url) { image in
                    image
                        .resizable()
                        .scaledToFill()
                } placeholder: {
                    ProgressView()
                }
                .frame(width: UIScreen.main.bounds.size.width - 150, height: UIScreen.main.bounds.size.width - 150, alignment: .leading)

            BackportAsyncImage(url: photoFile.url) { image in
                    image
                        .resizable()
                        .scaledToFill()
                } placeholder: {
                    ProgressView()
                }
                .frame(width: UIScreen.main.bounds.size.width - 150, height: UIScreen.main.bounds.size.width - 150, alignment: .leading)
        }
    }
    else {
        ProgressView()
    }
}

0 ответов

Другие вопросы по тегам