From 4a3343fe612a16de0a45362d68fa5b8eb7583dd6 Mon Sep 17 00:00:00 2001 From: Fabian Thies Date: Mon, 12 Dec 2022 19:15:16 +0100 Subject: [PATCH] Improved app detail view --- AltStore/View Components/AppIconView.swift | 6 ++++++ AltStore/Views/App Detail/AppDetailView.swift | 7 ++++++- AltStore/Views/App Detail/AppPermissionsGrid.swift | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/AltStore/View Components/AppIconView.swift b/AltStore/View Components/AppIconView.swift index 202cccfb..acec82d1 100644 --- a/AltStore/View Components/AppIconView.swift +++ b/AltStore/View Components/AppIconView.swift @@ -30,3 +30,9 @@ struct AppIconView: View { } } +extension AppIconView: Equatable { + /// Prevent re-rendering of the view if the parameters didn't change + static func == (lhs: AppIconView, rhs: AppIconView) -> Bool { + lhs.iconUrl == rhs.iconUrl && lhs.cornerRadius == rhs.cornerRadius + } +} diff --git a/AltStore/Views/App Detail/AppDetailView.swift b/AltStore/Views/App Detail/AppDetailView.swift index 94fed3da..5ac4a65c 100644 --- a/AltStore/Views/App Detail/AppDetailView.swift +++ b/AltStore/Views/App Detail/AppDetailView.swift @@ -32,6 +32,9 @@ struct AppDetailView: View { let headerViewHeight: CGFloat = 140 let permissionColumns = 4 + var headerBlurRadius: CGFloat { + min(20, max(0, 20 - (scrollOffset / -150) * 20)) + } var isHeaderViewVisible: Bool { scrollOffset < headerViewHeight + 12 } @@ -78,8 +81,10 @@ struct AppDetailView: View { ZStack(alignment: .center) { GeometryReader { proxy in AppIconView(iconUrl: storeApp.iconURL, size: proxy.frame(in: .global).width) - .blur(radius: 20) + .blur(radius: headerBlurRadius) + .offset(y: min(0, scrollOffset)) } + .padding() AppRowView(app: storeApp) .padding(.horizontal) diff --git a/AltStore/Views/App Detail/AppPermissionsGrid.swift b/AltStore/Views/App Detail/AppPermissionsGrid.swift index f76138e6..072c8cab 100644 --- a/AltStore/Views/App Detail/AppPermissionsGrid.swift +++ b/AltStore/Views/App Detail/AppPermissionsGrid.swift @@ -37,7 +37,7 @@ struct AppPermissionGridItemView: View { Image(uiImage: (permission.type.icon?.withRenderingMode(.alwaysTemplate) ?? UIImage(systemName: "questionmark"))!) // TODO: Replace with system icon .padding() .background(Circle().foregroundColor(Color(.secondarySystemBackground))) - Text(permission.type.localizedShortName ?? "") + Text(permission.type.localizedShortName ?? permission.type.localizedName ?? "") } .foregroundColor(.primary) }