Commit 47864264e7
Unsigned
Layout: unified · split
DayByDay.xcodeproj/project.pbxproj +4 −4
| @@ -338,7 +338,7 @@ | |||
| 338 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 338 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 339 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | 339 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| 340 | CODE_SIGN_STYLE = Automatic; | 340 | CODE_SIGN_STYLE = Automatic; |
| 341 | CURRENT_PROJECT_VERSION = 5; | 341 | CURRENT_PROJECT_VERSION = 6; |
| 342 | DEVELOPMENT_TEAM = ZCNAX3VL9D; | 342 | DEVELOPMENT_TEAM = ZCNAX3VL9D; |
| 343 | ENABLE_PREVIEWS = YES; | 343 | ENABLE_PREVIEWS = YES; |
| 344 | GENERATE_INFOPLIST_FILE = YES; | 344 | GENERATE_INFOPLIST_FILE = YES; |
| @@ -353,7 +353,7 @@ | |||
| 353 | "$(inherited)", | 353 | "$(inherited)", |
| 354 | "@executable_path/Frameworks", | 354 | "@executable_path/Frameworks", |
| 355 | ); | 355 | ); |
| 356 | MARKETING_VERSION = 1.3.1; | 356 | MARKETING_VERSION = 1.3.2; |
| 357 | PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; | 357 | PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; |
| 358 | PRODUCT_NAME = "$(TARGET_NAME)"; | 358 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 359 | STRING_CATALOG_GENERATE_SYMBOLS = YES; | 359 | STRING_CATALOG_GENERATE_SYMBOLS = YES; |
| @@ -372,7 +372,7 @@ | |||
| 372 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 372 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 373 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | 373 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; |
| 374 | CODE_SIGN_STYLE = Automatic; | 374 | CODE_SIGN_STYLE = Automatic; |
| 375 | CURRENT_PROJECT_VERSION = 5; | 375 | CURRENT_PROJECT_VERSION = 6; |
| 376 | DEVELOPMENT_TEAM = ZCNAX3VL9D; | 376 | DEVELOPMENT_TEAM = ZCNAX3VL9D; |
| 377 | ENABLE_PREVIEWS = YES; | 377 | ENABLE_PREVIEWS = YES; |
| 378 | GENERATE_INFOPLIST_FILE = YES; | 378 | GENERATE_INFOPLIST_FILE = YES; |
| @@ -387,7 +387,7 @@ | |||
| 387 | "$(inherited)", | 387 | "$(inherited)", |
| 388 | "@executable_path/Frameworks", | 388 | "@executable_path/Frameworks", |
| 389 | ); | 389 | ); |
| 390 | MARKETING_VERSION = 1.3.1; | 390 | MARKETING_VERSION = 1.3.2; |
| 391 | PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; | 391 | PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DayByDay; |
| 392 | PRODUCT_NAME = "$(TARGET_NAME)"; | 392 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 393 | STRING_CATALOG_GENERATE_SYMBOLS = YES; | 393 | STRING_CATALOG_GENERATE_SYMBOLS = YES; |
DayByDay/DayCard.swift +7 −1
| @@ -12,6 +12,12 @@ struct DayCard: View { | |||
| 12 | var isHighlighted = false | 12 | var isHighlighted = false |
| 13 | @State private var isTapped = false | 13 | @State private var isTapped = false |
| 14 | 14 | ||
| 15 | private var cardScale: CGFloat { | ||
| 16 | if isTapped { return 1.12 } | ||
| 17 | if isHighlighted { return 1.04 } | ||
| 18 | return 1.0 | ||
| 19 | } | ||
| 20 | |||
| 15 | var body: some View { | 21 | var body: some View { |
| 16 | ZStack { | 22 | ZStack { |
| 17 | RoundedRectangle(cornerRadius: 32, style: .continuous) | 23 | RoundedRectangle(cornerRadius: 32, style: .continuous) |
| @@ -36,7 +42,7 @@ struct DayCard: View { | |||
| 36 | } | 42 | } |
| 37 | } | 43 | } |
| 38 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) | 44 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) |
| 39 | .scaleEffect(isTapped ? 1.12 : (isHighlighted ? 1.04 : 1.0)) | 45 | .scaleEffect(cardScale) |
| 40 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) | 46 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) |
| 41 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) | 47 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) |
| 42 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) | 48 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) |
DayByDay/MonthCard.swift +7 −1
| @@ -12,6 +12,12 @@ struct MonthCard: View { | |||
| 12 | var isHighlighted = false | 12 | var isHighlighted = false |
| 13 | @State private var isTapped = false | 13 | @State private var isTapped = false |
| 14 | 14 | ||
| 15 | private var cardScale: CGFloat { | ||
| 16 | if isTapped { return 1.12 } | ||
| 17 | if isHighlighted { return 1.04 } | ||
| 18 | return 1.0 | ||
| 19 | } | ||
| 20 | |||
| 15 | var body: some View { | 21 | var body: some View { |
| 16 | ZStack { | 22 | ZStack { |
| 17 | RoundedRectangle(cornerRadius: 32, style: .continuous) | 23 | RoundedRectangle(cornerRadius: 32, style: .continuous) |
| @@ -36,7 +42,7 @@ struct MonthCard: View { | |||
| 36 | } | 42 | } |
| 37 | } | 43 | } |
| 38 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) | 44 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) |
| 39 | .scaleEffect(isTapped ? 1.12 : (isHighlighted ? 1.04 : 1.0)) | 45 | .scaleEffect(cardScale) |
| 40 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) | 46 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) |
| 41 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) | 47 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) |
| 42 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) | 48 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) |
DayByDay/SeasonCard.swift +7 −1
| @@ -12,6 +12,12 @@ struct SeasonCard: View { | |||
| 12 | var isHighlighted = false | 12 | var isHighlighted = false |
| 13 | @State private var isTapped = false | 13 | @State private var isTapped = false |
| 14 | 14 | ||
| 15 | private var cardScale: CGFloat { | ||
| 16 | if isTapped { return 1.12 } | ||
| 17 | if isHighlighted { return 1.04 } | ||
| 18 | return 1.0 | ||
| 19 | } | ||
| 20 | |||
| 15 | var body: some View { | 21 | var body: some View { |
| 16 | ZStack { | 22 | ZStack { |
| 17 | RoundedRectangle(cornerRadius: 32, style: .continuous) | 23 | RoundedRectangle(cornerRadius: 32, style: .continuous) |
| @@ -36,7 +42,7 @@ struct SeasonCard: View { | |||
| 36 | } | 42 | } |
| 37 | } | 43 | } |
| 38 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) | 44 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) |
| 39 | .scaleEffect(isTapped ? 1.12 : (isHighlighted ? 1.04 : 1.0)) | 45 | .scaleEffect(cardScale) |
| 40 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) | 46 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) |
| 41 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) | 47 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) |
| 42 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) | 48 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) |
NumberCard.swift +8 −2
| @@ -12,6 +12,12 @@ struct NumberCard: View { | |||
| 12 | var isHighlighted = false | 12 | var isHighlighted = false |
| 13 | @State private var isTapped = false | 13 | @State private var isTapped = false |
| 14 | 14 | ||
| 15 | private var cardScale: CGFloat { | ||
| 16 | if isTapped { return 1.12 } | ||
| 17 | if isHighlighted { return 1.04 } | ||
| 18 | return 1.0 | ||
| 19 | } | ||
| 20 | |||
| 15 | var body: some View { | 21 | var body: some View { |
| 16 | ZStack { | 22 | ZStack { |
| 17 | RoundedRectangle(cornerRadius: 32, style: .continuous) | 23 | RoundedRectangle(cornerRadius: 32, style: .continuous) |
| @@ -39,7 +45,7 @@ struct NumberCard: View { | |||
| 39 | } | 45 | } |
| 40 | } | 46 | } |
| 41 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) | 47 | .shadow(color: isHighlighted ? .white.opacity(0.8) : .clear, radius: 12) |
| 42 | .scaleEffect(isTapped ? 1.12 : (isHighlighted ? 1.04 : 1.0)) | 48 | .scaleEffect(cardScale) |
| 43 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) | 49 | .contentShape(RoundedRectangle(cornerRadius: 32, style: .continuous)) |
| 44 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) | 50 | .rotation3DEffect(.degrees(isTapped ? 6 : 0), axis: (x: 1, y: 0, z: 0)) |
| 45 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) | 51 | .animation(.spring(response: 0.35, dampingFraction: 0.5), value: isTapped) |
| @@ -60,7 +66,7 @@ struct NumberCard: View { | |||
| 60 | enum LearnNumber: Int, CaseIterable, Identifiable { | 66 | enum LearnNumber: Int, CaseIterable, Identifiable { |
| 61 | case one = 1, two, three, four, five, six, seven, eight, nine, ten | 67 | case one = 1, two, three, four, five, six, seven, eight, nine, ten |
| 62 | 68 | ||
| 63 | var id: Int { rawValue } | 69 | var id: LearnNumber { self } |
| 64 | 70 | ||
| 65 | /// Highlight the number matching today's day-of-month if it falls in 1–10. | 71 | /// Highlight the number matching today's day-of-month if it falls in 1–10. |
| 66 | static var current: LearnNumber? { | 72 | static var current: LearnNumber? { |