Post

Replies

Boosts

Views

Activity

App Lost all selection info of navigation and tab, after update a AppStorage state
I want to realize a function which could change the color scheme of app. However, whenever I click theme style in ThemeView, it will pop to SettingsView and Tab will reselect to Home. Is there a way that I can change the color scheme of app, and still stay in ThemeView? AppTabView.swift public enum ThemeStyle: Int, CaseIterable {       case automatic   case light   case dark } extension View {       @ViewBuilder   func themeStyle(_ themeStyle: ThemeStyle) -> some View {     switch themeStyle {     case .automatic:       self     case .light:       preferredColorScheme(.light)     case .dark:       preferredColorScheme(.dark)     }   } } struct AppTabView: View {       @AppStorage(StorageKeys.themeStyle) private var themeStyle: ThemeStyle = .automatic       var body: some View {     TabView(selection: $tabItem) {       Text("First Tab")         .tabItem {           Label("Home", systemImage: .house)         }       NavigationView {         SettingsView()       }       .tabItem {         Label("Settings", systemImage: .gearshapeFill)       }     }     .themeStyle(themeStyle)     .toggleStyle(SwitchToggleStyle(tint: .accentColor))   } } SettingsView.swift struct SettingsView: View { var body: some View {     List {       Section {         NavigationLink {           ThemeView()         } label: {           Label("TITLE_THEME", systemImage: .circleLefthalfFill)         }     }     .navigationTitle("TITLE_SETTINGS")     .navigationBarTitleDisplayMode(.inline)   } } ThemeView.swift struct ThemeView: View {       @AppStorage(StorageKeys.themeStyle) private var themeStyle: ThemeStyle = .automatic       @ViewBuilder   private func text(_ themeStyle: ThemeStyle) -> some View {     switch themeStyle {     case .automatic:       Text("TITLE_THEME_AUTOMATIC")     case .light:       Text("TITLE_THEME_LIGHT")     case .dark:       Text("TITLE_THEME_DARK")     }   }       @ViewBuilder   private func image(_ themeStyle: ThemeStyle) -> some View {     switch themeStyle {     case .automatic:       Image(systemName: .circleLefthalfFill)     case .light:       Image(systemName: .sunMax)     case .dark:       Image(systemName: .moon)     }   }       var body: some View {     List {       ForEach(ThemeStyle.allCases, id: \.rawValue) { value in         Button {           themeStyle = value         } label: {           HStack {             Label {               text(value)                 .foregroundColor(.label)             } icon: {               image(value)             }             if themeStyle == value {               Spacer()               Image(systemName: .checkmark)             }           }         }       }     }     .navigationTitle("TITLE_THEME")     .navigationBarTitleDisplayMode(.inline)   } }
0
0
381
Mar ’23
Can Airplay play local mp4 files on iPhone with AVPlayer?
Can Airplay only play remote videos? Is it possible to play local video files on iPhone?      let player = AVQueuePlayer() //    let url = fileURLOnIPhone // can not airplay, no video, no audio     let url = URL(string: "https://xxxxxx.mp4")! // can be airplay with video and audio     let asset = AVAsset(url: url)     let playerItem = AVPlayerItem(asset: asset)     player.insert(playerItem, after: nil)     let vc = AVPlayerViewController()     vc.player = player     present(vc, animated: true) {       player.play()     }
0
0
1.5k
Sep ’22