У меня проблемы с моей реализацией 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)
}
}
}