SwiftUI - изображение отображается на большинстве устройств, кроме iPhone 8 Plus, iPhone 11 Pro и iPhone 11 Pro Max. - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь показать изображение позади lo go в моем приложении. Все работает как положено в окне предварительного просмотра. Когда я запускаю приложение на симуляторе или переключаюсь в режим Live Preview, оно идеально подходит для всех устройств, кроме iPhone 8 Plus, 11 Pro и 11 Pro Max, в этом случае изображение просто не отображается, и вместо этого я получаю черный или белый фон на основе устройства, установленного в светлый или темный режим.

Вот код для основного вида:

struct MainView: View {
    // A reference to the DeviceInformation EnvironmentObject used to access properties such as the device width and height.
    @EnvironmentObject var deviceInfo: DeviceInformation

    var body: some View {
        GeometryReader { geometry in
            ZStack {
                BackgroundImage(needsOffset: false) // needsOffset is used in case the background image has to be moved in the x-axis in order to better frame the logo
                VStack {
                    Spacer()
                    Image("Logo")
                        .resizable()
                        .scaledToFit()
                        .frame(width: self.deviceInfo.screenWidth * 0.6)
                    Spacer()
                    FieldsCard()
                }
            }
            .edgesIgnoringSafeArea(.all)
        }
    }
}

А вот как выглядит BackgroundImage ():

struct BackgroundImage: View {
    let needsOffset: Bool

    var body: some View {
        Image("WelcomeScreenBackground")
            .resizable()
            .aspectRatio(contentMode: .fill)
            .edgesIgnoringSafeArea(.all)
            .frame(
                minWidth: 0,
                maxWidth: .infinity,
                minHeight: 0,
                maxHeight: .infinity
            )
            .offset(x: needsOffset ? -30 : 0)   // Offsets the image on the x-axis to better frame the logo
    }
}

Я уже пытался использовать BackgroundImage () в качестве .background на VStack вместо ZStack, но это тоже не работает. Я получаю точно такие же результаты. Я также попытался разместить только изображение с фоновым изображением внутри тела MainView, и изображение также не отображается.

Интересно, это какая-то ошибка в Xcode или Simulator, или я Я просто делаю что-то тупое. Любая помощь будет принята с благодарностью!

...