SwiftUI Просмотр багги при повороте телефона - PullRequest
0 голосов
/ 04 мая 2020

У меня проблемы с моей реализацией SwiftUI. Когда я запускаю свою реализацию XCode, все отображается нормально. Если я поверну устройство, стиль и заполнение отверстий нарушатся ( Sim. In Landscapemode ). В отличие от этого все нормально, когда я запускаю симулятор в ландшафтном режиме.

Это ошибка в симуляторе или вызвана моей реализацией?

    import SwiftUI

struct ContentView: View {

    @EnvironmentObject var store : ItemStore

    // important for fucking xcode bug workaround  .... :/
    @State var needRefresh : Bool = false


    var body: some View {
        NavigationView{
                List {
                    Section{
                        ForEach(store.allItems){
                            item in
                            NavigationLink(destination: ItemDetailView(item: self.$store.allItems[self.store.allItems.firstIndex(of: item)!], needRefresh: self.$needRefresh)){

                                VStack(alignment: .leading) {
                                    Text(item.name).foregroundColor(self.needRefresh ? .black: .black)
                                    Text("\(item.serialNumber)").font(.caption).foregroundColor(.secondary)
                                }
                                Spacer()
                                Text("\(item.valueInDollars) $").foregroundColor(item.valueInDollars > 50 ? Color.red: Color.green)
                            }

                        }.onDelete(perform: delete).onMove(perform: move).frame(height: 60).font(.system(size: 20))
                    }
                    Section
                        {
                            Text("No more Items ...")
                    }.frame(height: 44)
                }.listStyle(GroupedListStyle()).navigationBarTitle(Text("Homepwner"),displayMode: .inline ).navigationBarItems(
                    leading: EditButton(),
                    trailing: Button(action: addItem) {
                        Image(systemName: "plus")
                }).background(Image("bg")).opacity(0.9)
            WelcomeView()
        }.phoneOnlyStackNavigationView()
    }

    func addItem()
    {
        store.createItem()
    }

    func delete(at offsets: IndexSet)
    {
        store.allItems.remove(atOffsets: offsets )
    }

    func move(from source: IndexSet, to destination: Int)
    {
        store.allItems.move(fromOffsets: source, toOffset: destination)
    }




}


struct WelcomeView: View {
    var body: some View {
        VStack {
            Text("Welcome to SnowSeeker!")
                .font(.largeTitle)

            Text("Please select a resort from the left-hand menu; swipe from the left edge to show it.")
                .foregroundColor(.secondary)
        }
    }
}

extension View {
    func phoneOnlyStackNavigationView() -> some View {
        if UIDevice.current.userInterfaceIdiom == .phone {
            return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
        } else {
            return AnyView(self)
        }
    }
}
...