Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
f574b91ebb
commit
1999f7c137
@ -428,6 +428,7 @@
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
"INFOPLIST_KEY_UILaunchScreen_BackgroundColor" = LaunchBackground;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@ -464,6 +465,7 @@
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
"INFOPLIST_KEY_UILaunchScreen_BackgroundColor" = LaunchBackground;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
||||
@ -16,7 +16,9 @@ struct SelfieCamApp: App {
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
AppLaunchView(config: .selfieCam) {
|
||||
ContentView()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,6 +141,14 @@ struct SettingsView: View {
|
||||
|
||||
acknowledgmentsSection
|
||||
|
||||
// MARK: - Debug Section
|
||||
|
||||
#if DEBUG
|
||||
SettingsSectionHeader(title: "Debug", systemImage: "ant.fill")
|
||||
|
||||
brandingDebugSection
|
||||
#endif
|
||||
|
||||
Spacer(minLength: Design.Spacing.xxxLarge)
|
||||
}
|
||||
.padding(.horizontal, Design.Spacing.large)
|
||||
@ -752,6 +760,70 @@ struct SettingsView: View {
|
||||
.padding(.top, Design.Spacing.large)
|
||||
.padding(.bottom, Design.Spacing.xSmall)
|
||||
}
|
||||
|
||||
// MARK: - Branding Debug Section
|
||||
|
||||
#if DEBUG
|
||||
private var brandingDebugSection: some View {
|
||||
VStack(spacing: Design.Spacing.small) {
|
||||
// Icon Generator
|
||||
NavigationLink {
|
||||
IconGeneratorView(config: .selfieCam, appName: "SelfieCam")
|
||||
} label: {
|
||||
HStack {
|
||||
VStack(alignment: .leading, spacing: Design.Spacing.xxSmall) {
|
||||
Text("Icon Generator")
|
||||
.font(.system(size: Design.BaseFontSize.body, weight: .medium))
|
||||
.foregroundStyle(.white)
|
||||
|
||||
Text("Generate and save app icon to Files")
|
||||
.font(.system(size: Design.BaseFontSize.caption))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Image(systemName: "chevron.right")
|
||||
.font(.system(size: Design.BaseFontSize.caption))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
.padding(Design.Spacing.medium)
|
||||
.background(Color.Surface.primary, in: RoundedRectangle(cornerRadius: Design.CornerRadius.medium))
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
|
||||
// Branding Preview
|
||||
NavigationLink {
|
||||
BrandingPreviewView(
|
||||
iconConfig: .selfieCam,
|
||||
launchConfig: .selfieCam,
|
||||
appName: "SelfieCam"
|
||||
)
|
||||
} label: {
|
||||
HStack {
|
||||
VStack(alignment: .leading, spacing: Design.Spacing.xxSmall) {
|
||||
Text("Branding Preview")
|
||||
.font(.system(size: Design.BaseFontSize.body, weight: .medium))
|
||||
.foregroundStyle(.white)
|
||||
|
||||
Text("Preview app icon and launch screen")
|
||||
.font(.system(size: Design.BaseFontSize.caption))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Image(systemName: "chevron.right")
|
||||
.font(.system(size: Design.BaseFontSize.caption))
|
||||
.foregroundStyle(.white.opacity(Design.Opacity.medium))
|
||||
}
|
||||
.padding(Design.Spacing.medium)
|
||||
.background(Color.Surface.primary, in: RoundedRectangle(cornerRadius: Design.CornerRadius.medium))
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@ -1,6 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "AppIcon.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.450",
|
||||
"green" : "0.250",
|
||||
"red" : "0.850"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@ -529,6 +529,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Branding Preview" : {
|
||||
"comment" : "A link that takes the user to a view that previews the app's icon and launch screen.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Camera" : {
|
||||
"comment" : "Options for the camera position picker.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@ -1267,6 +1271,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Generate and save app icon to Files" : {
|
||||
"comment" : "A description of the feature that generates and saves an app icon to the user's Files folder.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Get ready!" : {
|
||||
"comment" : "A text displayed in the countdown overlay when a photo is about to be taken.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@ -1507,6 +1515,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Icon Generator" : {
|
||||
"comment" : "A label for the icon generator feature in the settings view.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Last synced %@" : {
|
||||
"localizations" : {
|
||||
"es-MX" : {
|
||||
@ -1815,6 +1827,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Preview app icon and launch screen" : {
|
||||
"comment" : "A description of the Branding Preview feature.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Purchase successful! Pro features unlocked." : {
|
||||
"comment" : "Announcement read out to the user when a premium purchase is successful.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
|
||||
66
SelfieCam/Shared/BrandingConfig.swift
Normal file
66
SelfieCam/Shared/BrandingConfig.swift
Normal file
@ -0,0 +1,66 @@
|
||||
//
|
||||
// BrandingConfig.swift
|
||||
// SelfieCam
|
||||
//
|
||||
// App-specific branding configurations for icons and launch screens.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Bedrock
|
||||
|
||||
// MARK: - App Branding Colors
|
||||
|
||||
extension Color {
|
||||
/// SelfieCam branding colors for icon and launch screen.
|
||||
enum Branding {
|
||||
/// Primary gradient color - rich magenta/rose for a vibrant, modern selfie aesthetic.
|
||||
static let primary = Color(red: 0.85, green: 0.25, blue: 0.45)
|
||||
|
||||
/// Secondary gradient color - deeper magenta/purple for depth.
|
||||
static let secondary = Color(red: 0.45, green: 0.12, blue: 0.35)
|
||||
|
||||
/// Accent color - soft white/cream for clean, bright text and icons.
|
||||
static let accent = Color.white
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - App Icon Configuration
|
||||
|
||||
extension AppIconConfig {
|
||||
/// SelfieCam app icon configuration.
|
||||
/// A vibrant, modern icon perfect for a selfie camera app.
|
||||
static let selfieCam = AppIconConfig(
|
||||
title: "SELFIE",
|
||||
subtitle: "CAM",
|
||||
iconSymbol: "camera.fill",
|
||||
primaryColor: Color.Branding.primary,
|
||||
secondaryColor: Color.Branding.secondary,
|
||||
accentColor: Color.Branding.accent
|
||||
)
|
||||
}
|
||||
|
||||
// MARK: - Launch Screen Configuration
|
||||
|
||||
extension LaunchScreenConfig {
|
||||
/// SelfieCam launch screen configuration.
|
||||
/// Animated launch screen with camera-focused visuals and radial glow.
|
||||
static let selfieCam = LaunchScreenConfig(
|
||||
title: "SELFIE CAM",
|
||||
tagline: "Look Your Best",
|
||||
iconSymbols: ["camera.fill", "sparkles"],
|
||||
cornerSymbol: "sparkle",
|
||||
decorativeSymbol: "circle.fill",
|
||||
patternStyle: .radial,
|
||||
layoutStyle: .iconAboveTitle,
|
||||
primaryColor: Color.Branding.primary,
|
||||
secondaryColor: Color.Branding.secondary,
|
||||
accentColor: Color.Branding.accent,
|
||||
titleColor: .white,
|
||||
iconSize: 52,
|
||||
titleSize: 38,
|
||||
subtitleSize: 72,
|
||||
iconSpacing: 12,
|
||||
animationDuration: 0.6,
|
||||
showLoadingIndicator: false
|
||||
)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user