Fix ContentUnavailableView centering on Apple TV

On tvOS, ContentUnavailableView inside a Group doesn't expand to fill
available space — it sizes to content and aligns top-leading. Add
.frame(maxWidth: .infinity, maxHeight: .infinity) to all instances
so they center correctly in their parent containers.
This commit is contained in:
Arkadiusz Fal
2026-02-25 21:48:59 +01:00
parent f14ed4c2cb
commit 0fdac499bb
28 changed files with 62 additions and 6 deletions

View File

@@ -841,6 +841,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noDescription"), systemImage: "text.alignleft")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
}
}
@@ -869,6 +870,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noVideos"), systemImage: "play.rectangle")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
} else if !filteredVideos.isEmpty {
VideoListContent(listStyle: listStyle) {
@@ -965,6 +967,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noVideos"), systemImage: "play.rectangle")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
}
@@ -1006,6 +1009,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noPlaylists"), systemImage: "list.bullet.rectangle")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
} else if !playlists.isEmpty {
VideoListContent(listStyle: listStyle) {
@@ -1068,6 +1072,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noPlaylists"), systemImage: "list.bullet.rectangle")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
}
@@ -1110,6 +1115,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noShorts"), systemImage: "bolt")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
} else if !filteredShorts.isEmpty {
VideoListContent(listStyle: listStyle) {
@@ -1186,6 +1192,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noShorts"), systemImage: "bolt")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
}
@@ -1228,6 +1235,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noStreams"), systemImage: "video")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
} else if !filteredStreams.isEmpty {
VideoListContent(listStyle: listStyle) {
@@ -1304,6 +1312,7 @@ struct ChannelView: View {
ContentUnavailableView {
Label(String(localized: "channel.noStreams"), systemImage: "video")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
}
@@ -1329,6 +1338,7 @@ struct ChannelView: View {
.padding(.vertical, 40)
} else if searchResults.items.isEmpty {
ContentUnavailableView.search(text: searchText)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.padding(.vertical, 40)
} else {
switch layout {
@@ -1519,6 +1529,7 @@ struct ChannelView: View {
}
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
// MARK: - Helpers