From a1bbc51c118c5622a24bc016bec338d3d96488cd Mon Sep 17 00:00:00 2001 From: Ibrahim Sulejmenov Date: Sat, 15 Mar 2025 22:35:26 +0100 Subject: [PATCH] added setting to change anime per row in landscape and portrait modes + fixed stretched images 3 --- Sora/Views/SearchView.swift | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/Sora/Views/SearchView.swift b/Sora/Views/SearchView.swift index 9680cca..85802ba 100644 --- a/Sora/Views/SearchView.swift +++ b/Sora/Views/SearchView.swift @@ -43,6 +43,26 @@ struct SearchView: View { "Please wait...", "Almost there..." ] + + private var columnsCount: Int { + if UIDevice.current.userInterfaceIdiom == .pad { + let isLandscape = UIScreen.main.bounds.width > UIScreen.main.bounds.height + return isLandscape ? mediaColumnsLandscape : mediaColumnsPortrait + } else { + return verticalSizeClass == .compact ? mediaColumnsLandscape : mediaColumnsPortrait + } + } + + private var cellWidth: CGFloat { + let keyWindow = UIApplication.shared.connectedScenes + .compactMap { ($0 as? UIWindowScene)?.windows.first(where: { $0.isKeyWindow }) } + .first + let safeAreaInsets = keyWindow?.safeAreaInsets ?? .zero + let safeWidth = UIScreen.main.bounds.width - safeAreaInsets.left - safeAreaInsets.right + let totalSpacing: CGFloat = 16 * CGFloat(columnsCount + 1) + let availableWidth = safeWidth - totalSpacing + return availableWidth / CGFloat(columnsCount) + } var body: some View { NavigationView { @@ -86,10 +106,6 @@ struct SearchView: View { if !searchText.isEmpty { if isSearching { - let totalSpacing: CGFloat = 16 * CGFloat(columnsCount + 1) // Spacing between items - let availableWidth = UIScreen.main.bounds.width - totalSpacing - let cellWidth = availableWidth / CGFloat(columnsCount) - LazyVGrid(columns: Array(repeating: GridItem(.flexible(), spacing: 16), count: columnsCount), spacing: 16) { ForEach(0..