Set full screen views background color based on color scheme on tvOS (fixes #30)

This commit is contained in:
Arkadiusz Fal 2021-12-05 18:09:25 +01:00
parent 5143c4f8ce
commit 941e6a909d
10 changed files with 31 additions and 13 deletions

View File

@ -10,8 +10,8 @@ extension Color {
static let secondaryBackground = Color(UIColor.secondarySystemBackground)
static let tertiaryBackground = Color(UIColor.tertiarySystemBackground)
#else
static let background = Color.black
static let secondaryBackground = Color.black
static let tertiaryBackground = Color.black
static func background(scheme: ColorScheme) -> Color {
scheme == .dark ? .black : .init(white: 0.8)
}
#endif
}

View File

@ -7,6 +7,7 @@ struct AddToPlaylistView: View {
@State private var selectedPlaylistID: Playlist.ID = ""
@Environment(\.colorScheme) private var colorScheme
@Environment(\.presentationMode) private var presentationMode
@EnvironmentObject<PlaylistsModel> private var model
@ -37,7 +38,7 @@ struct AddToPlaylistView: View {
.padding(.vertical)
#elseif os(tvOS)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.background(Color.tertiaryBackground)
.background(Color.background(scheme: colorScheme))
#else
.padding(.vertical)
#endif

View File

@ -10,6 +10,7 @@ struct PlaylistFormView: View {
@State private var valid = false
@State private var showingDeleteConfirmation = false
@Environment(\.colorScheme) private var colorScheme
@Environment(\.presentationMode) private var presentationMode
@EnvironmentObject<AccountsModel> private var accounts
@ -77,7 +78,7 @@ struct PlaylistFormView: View {
.frame(maxWidth: 1000)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.background(Color.tertiaryBackground)
.background(Color.background(scheme: colorScheme))
#endif
}
.onChange(of: name) { _ in validate() }

View File

@ -15,6 +15,7 @@ struct AccountForm: View {
@State private var validationError: String?
@State private var validationDebounce = Debounce()
@Environment(\.colorScheme) private var colorScheme
@Environment(\.presentationMode) private var presentationMode
var body: some View {
@ -30,7 +31,7 @@ struct AccountForm: View {
.padding(.vertical)
#elseif os(tvOS)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.background(Color.tertiaryBackground)
.background(Color.background(scheme: colorScheme))
#else
.frame(width: 400, height: 145)
#endif

View File

@ -13,6 +13,7 @@ struct InstanceForm: View {
@State private var validationError: String?
@State private var validationDebounce = Debounce()
@Environment(\.colorScheme) private var colorScheme
@Environment(\.presentationMode) private var presentationMode
var body: some View {
@ -32,7 +33,7 @@ struct InstanceForm: View {
.padding(.vertical)
#elseif os(tvOS)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.background(Color.tertiaryBackground)
.background(Color.background(scheme: colorScheme))
#else
.frame(width: 400, height: 190)
#endif

View File

@ -9,6 +9,8 @@ struct SettingsView: View {
}
#endif
@Environment(\.colorScheme) private var colorScheme
#if os(iOS)
@Environment(\.presentationMode) private var presentationMode
#endif
@ -102,7 +104,7 @@ struct SettingsView: View {
InstanceForm(savedInstanceID: $savedFormInstanceID)
}
#if os(tvOS)
.background(Color.black)
.background(Color.background(scheme: colorScheme))
#endif
#endif
}

View File

@ -9,6 +9,8 @@ struct ChannelPlaylistView: View {
@StateObject private var store = Store<ChannelPlaylist>()
@Environment(\.colorScheme) private var colorScheme
#if os(iOS)
@Environment(\.inNavigationView) private var inNavigationView
#endif
@ -83,7 +85,7 @@ struct ChannelPlaylistView: View {
.navigationTitle(playlist.title)
#else
.background(Color.tertiaryBackground)
.background(Color.background(scheme: colorScheme))
#endif
}

View File

@ -9,6 +9,7 @@ struct ChannelVideosView: View {
@StateObject private var store = Store<Channel>()
@Environment(\.colorScheme) private var colorScheme
@Environment(\.presentationMode) private var presentationMode
@Environment(\.inNavigationView) private var inNavigationView
@ -105,8 +106,6 @@ struct ChannelVideosView: View {
}
}
}
#else
.background(Color.tertiaryBackground)
#endif
#if os(iOS)
.sheet(isPresented: $presentingShareSheet) {
@ -126,6 +125,9 @@ struct ChannelVideosView: View {
return Group {
if #available(macOS 12.0, *) {
content
#if os(tvOS)
.background(Color.background(scheme: colorScheme))
#endif
#if !os(iOS)
.focusScope(focusNamespace)
#endif

View File

@ -25,13 +25,19 @@ struct DetailBadge: View {
}
struct DefaultStyleModifier: ViewModifier {
@Environment(\.colorScheme) private var colorScheme
func body(content: Content) -> some View {
if #available(iOS 15.0, macOS 12.0, tvOS 15.0, *) {
content
.background(.thinMaterial)
} else {
content
.background(Color.background.opacity(0.95))
#if os(tvOS)
.background(Color.background(scheme: colorScheme))
#else
.background(Color.background.opacity(0.95))
#endif
}
}
}

View File

@ -106,7 +106,9 @@ struct PlayerControlsView<Content: View>: View {
.background(Material.ultraThinMaterial)
} else {
controls
.background(Color.tertiaryBackground)
#if !os(tvOS)
.background(Color.tertiaryBackground)
#endif
}
}
}