Skip to content

Commit db0f0af

Browse files
author
Vincent
committed
Add code of Chapter 07 - Advanced UI
1 parent d42c8da commit db0f0af

File tree

36 files changed

+1822
-0
lines changed

36 files changed

+1822
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,348 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 56;
7+
objects = {
8+
9+
/* Begin PBXBuildFile section */
10+
BFB4A5162A0D65BA00C7B228 /* AnimationsAndTransitionsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB4A5152A0D65BA00C7B228 /* AnimationsAndTransitionsApp.swift */; };
11+
BFB4A5182A0D65BA00C7B228 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB4A5172A0D65BA00C7B228 /* ContentView.swift */; };
12+
BFB4A51A2A0D65BB00C7B228 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFB4A5192A0D65BB00C7B228 /* Assets.xcassets */; };
13+
BFB4A51D2A0D65BB00C7B228 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFB4A51C2A0D65BB00C7B228 /* Preview Assets.xcassets */; };
14+
BFB4A5242A0D726000C7B228 /* FlyTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB4A5232A0D726000C7B228 /* FlyTransition.swift */; };
15+
/* End PBXBuildFile section */
16+
17+
/* Begin PBXFileReference section */
18+
BFB4A5122A0D65BA00C7B228 /* AnimationsAndTransitions.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnimationsAndTransitions.app; sourceTree = BUILT_PRODUCTS_DIR; };
19+
BFB4A5152A0D65BA00C7B228 /* AnimationsAndTransitionsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationsAndTransitionsApp.swift; sourceTree = "<group>"; };
20+
BFB4A5172A0D65BA00C7B228 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
21+
BFB4A5192A0D65BB00C7B228 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
22+
BFB4A51C2A0D65BB00C7B228 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
23+
BFB4A5232A0D726000C7B228 /* FlyTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlyTransition.swift; sourceTree = "<group>"; };
24+
/* End PBXFileReference section */
25+
26+
/* Begin PBXFrameworksBuildPhase section */
27+
BFB4A50F2A0D65BA00C7B228 /* Frameworks */ = {
28+
isa = PBXFrameworksBuildPhase;
29+
buildActionMask = 2147483647;
30+
files = (
31+
);
32+
runOnlyForDeploymentPostprocessing = 0;
33+
};
34+
/* End PBXFrameworksBuildPhase section */
35+
36+
/* Begin PBXGroup section */
37+
BFB4A5092A0D65BA00C7B228 = {
38+
isa = PBXGroup;
39+
children = (
40+
BFB4A5142A0D65BA00C7B228 /* AnimationsAndTransitions */,
41+
BFB4A5132A0D65BA00C7B228 /* Products */,
42+
);
43+
sourceTree = "<group>";
44+
};
45+
BFB4A5132A0D65BA00C7B228 /* Products */ = {
46+
isa = PBXGroup;
47+
children = (
48+
BFB4A5122A0D65BA00C7B228 /* AnimationsAndTransitions.app */,
49+
);
50+
name = Products;
51+
sourceTree = "<group>";
52+
};
53+
BFB4A5142A0D65BA00C7B228 /* AnimationsAndTransitions */ = {
54+
isa = PBXGroup;
55+
children = (
56+
BFB4A5152A0D65BA00C7B228 /* AnimationsAndTransitionsApp.swift */,
57+
BFB4A5172A0D65BA00C7B228 /* ContentView.swift */,
58+
BFB4A5232A0D726000C7B228 /* FlyTransition.swift */,
59+
BFB4A5192A0D65BB00C7B228 /* Assets.xcassets */,
60+
BFB4A51B2A0D65BB00C7B228 /* Preview Content */,
61+
);
62+
path = AnimationsAndTransitions;
63+
sourceTree = "<group>";
64+
};
65+
BFB4A51B2A0D65BB00C7B228 /* Preview Content */ = {
66+
isa = PBXGroup;
67+
children = (
68+
BFB4A51C2A0D65BB00C7B228 /* Preview Assets.xcassets */,
69+
);
70+
path = "Preview Content";
71+
sourceTree = "<group>";
72+
};
73+
/* End PBXGroup section */
74+
75+
/* Begin PBXNativeTarget section */
76+
BFB4A5112A0D65BA00C7B228 /* AnimationsAndTransitions */ = {
77+
isa = PBXNativeTarget;
78+
buildConfigurationList = BFB4A5202A0D65BB00C7B228 /* Build configuration list for PBXNativeTarget "AnimationsAndTransitions" */;
79+
buildPhases = (
80+
BFB4A50E2A0D65BA00C7B228 /* Sources */,
81+
BFB4A50F2A0D65BA00C7B228 /* Frameworks */,
82+
BFB4A5102A0D65BA00C7B228 /* Resources */,
83+
);
84+
buildRules = (
85+
);
86+
dependencies = (
87+
);
88+
name = AnimationsAndTransitions;
89+
productName = AnimationsAndTransitions;
90+
productReference = BFB4A5122A0D65BA00C7B228 /* AnimationsAndTransitions.app */;
91+
productType = "com.apple.product-type.application";
92+
};
93+
/* End PBXNativeTarget section */
94+
95+
/* Begin PBXProject section */
96+
BFB4A50A2A0D65BA00C7B228 /* Project object */ = {
97+
isa = PBXProject;
98+
attributes = {
99+
BuildIndependentTargetsInParallel = 1;
100+
LastSwiftUpdateCheck = 1420;
101+
LastUpgradeCheck = 1420;
102+
TargetAttributes = {
103+
BFB4A5112A0D65BA00C7B228 = {
104+
CreatedOnToolsVersion = 14.2;
105+
};
106+
};
107+
};
108+
buildConfigurationList = BFB4A50D2A0D65BA00C7B228 /* Build configuration list for PBXProject "AnimationsAndTransitions" */;
109+
compatibilityVersion = "Xcode 14.0";
110+
developmentRegion = en;
111+
hasScannedForEncodings = 0;
112+
knownRegions = (
113+
en,
114+
Base,
115+
);
116+
mainGroup = BFB4A5092A0D65BA00C7B228;
117+
productRefGroup = BFB4A5132A0D65BA00C7B228 /* Products */;
118+
projectDirPath = "";
119+
projectRoot = "";
120+
targets = (
121+
BFB4A5112A0D65BA00C7B228 /* AnimationsAndTransitions */,
122+
);
123+
};
124+
/* End PBXProject section */
125+
126+
/* Begin PBXResourcesBuildPhase section */
127+
BFB4A5102A0D65BA00C7B228 /* Resources */ = {
128+
isa = PBXResourcesBuildPhase;
129+
buildActionMask = 2147483647;
130+
files = (
131+
BFB4A51D2A0D65BB00C7B228 /* Preview Assets.xcassets in Resources */,
132+
BFB4A51A2A0D65BB00C7B228 /* Assets.xcassets in Resources */,
133+
);
134+
runOnlyForDeploymentPostprocessing = 0;
135+
};
136+
/* End PBXResourcesBuildPhase section */
137+
138+
/* Begin PBXSourcesBuildPhase section */
139+
BFB4A50E2A0D65BA00C7B228 /* Sources */ = {
140+
isa = PBXSourcesBuildPhase;
141+
buildActionMask = 2147483647;
142+
files = (
143+
BFB4A5182A0D65BA00C7B228 /* ContentView.swift in Sources */,
144+
BFB4A5242A0D726000C7B228 /* FlyTransition.swift in Sources */,
145+
BFB4A5162A0D65BA00C7B228 /* AnimationsAndTransitionsApp.swift in Sources */,
146+
);
147+
runOnlyForDeploymentPostprocessing = 0;
148+
};
149+
/* End PBXSourcesBuildPhase section */
150+
151+
/* Begin XCBuildConfiguration section */
152+
BFB4A51E2A0D65BB00C7B228 /* Debug */ = {
153+
isa = XCBuildConfiguration;
154+
buildSettings = {
155+
ALWAYS_SEARCH_USER_PATHS = NO;
156+
CLANG_ANALYZER_NONNULL = YES;
157+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
158+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
159+
CLANG_ENABLE_MODULES = YES;
160+
CLANG_ENABLE_OBJC_ARC = YES;
161+
CLANG_ENABLE_OBJC_WEAK = YES;
162+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
163+
CLANG_WARN_BOOL_CONVERSION = YES;
164+
CLANG_WARN_COMMA = YES;
165+
CLANG_WARN_CONSTANT_CONVERSION = YES;
166+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
167+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
168+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
169+
CLANG_WARN_EMPTY_BODY = YES;
170+
CLANG_WARN_ENUM_CONVERSION = YES;
171+
CLANG_WARN_INFINITE_RECURSION = YES;
172+
CLANG_WARN_INT_CONVERSION = YES;
173+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
174+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
175+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
176+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
177+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
178+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
179+
CLANG_WARN_STRICT_PROTOTYPES = YES;
180+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
181+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
182+
CLANG_WARN_UNREACHABLE_CODE = YES;
183+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
184+
COPY_PHASE_STRIP = NO;
185+
DEBUG_INFORMATION_FORMAT = dwarf;
186+
ENABLE_STRICT_OBJC_MSGSEND = YES;
187+
ENABLE_TESTABILITY = YES;
188+
GCC_C_LANGUAGE_STANDARD = gnu11;
189+
GCC_DYNAMIC_NO_PIC = NO;
190+
GCC_NO_COMMON_BLOCKS = YES;
191+
GCC_OPTIMIZATION_LEVEL = 0;
192+
GCC_PREPROCESSOR_DEFINITIONS = (
193+
"DEBUG=1",
194+
"$(inherited)",
195+
);
196+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
197+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
198+
GCC_WARN_UNDECLARED_SELECTOR = YES;
199+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
200+
GCC_WARN_UNUSED_FUNCTION = YES;
201+
GCC_WARN_UNUSED_VARIABLE = YES;
202+
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
203+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
204+
MTL_FAST_MATH = YES;
205+
ONLY_ACTIVE_ARCH = YES;
206+
SDKROOT = iphoneos;
207+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
208+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
209+
};
210+
name = Debug;
211+
};
212+
BFB4A51F2A0D65BB00C7B228 /* Release */ = {
213+
isa = XCBuildConfiguration;
214+
buildSettings = {
215+
ALWAYS_SEARCH_USER_PATHS = NO;
216+
CLANG_ANALYZER_NONNULL = YES;
217+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
218+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
219+
CLANG_ENABLE_MODULES = YES;
220+
CLANG_ENABLE_OBJC_ARC = YES;
221+
CLANG_ENABLE_OBJC_WEAK = YES;
222+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
223+
CLANG_WARN_BOOL_CONVERSION = YES;
224+
CLANG_WARN_COMMA = YES;
225+
CLANG_WARN_CONSTANT_CONVERSION = YES;
226+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
227+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
228+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
229+
CLANG_WARN_EMPTY_BODY = YES;
230+
CLANG_WARN_ENUM_CONVERSION = YES;
231+
CLANG_WARN_INFINITE_RECURSION = YES;
232+
CLANG_WARN_INT_CONVERSION = YES;
233+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
234+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
235+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
236+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
237+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
238+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
239+
CLANG_WARN_STRICT_PROTOTYPES = YES;
240+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
241+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
242+
CLANG_WARN_UNREACHABLE_CODE = YES;
243+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
244+
COPY_PHASE_STRIP = NO;
245+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
246+
ENABLE_NS_ASSERTIONS = NO;
247+
ENABLE_STRICT_OBJC_MSGSEND = YES;
248+
GCC_C_LANGUAGE_STANDARD = gnu11;
249+
GCC_NO_COMMON_BLOCKS = YES;
250+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
251+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
252+
GCC_WARN_UNDECLARED_SELECTOR = YES;
253+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
254+
GCC_WARN_UNUSED_FUNCTION = YES;
255+
GCC_WARN_UNUSED_VARIABLE = YES;
256+
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
257+
MTL_ENABLE_DEBUG_INFO = NO;
258+
MTL_FAST_MATH = YES;
259+
SDKROOT = iphoneos;
260+
SWIFT_COMPILATION_MODE = wholemodule;
261+
SWIFT_OPTIMIZATION_LEVEL = "-O";
262+
VALIDATE_PRODUCT = YES;
263+
};
264+
name = Release;
265+
};
266+
BFB4A5212A0D65BB00C7B228 /* Debug */ = {
267+
isa = XCBuildConfiguration;
268+
buildSettings = {
269+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
270+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
271+
CODE_SIGN_STYLE = Automatic;
272+
CURRENT_PROJECT_VERSION = 1;
273+
DEVELOPMENT_ASSET_PATHS = "\"AnimationsAndTransitions/Preview Content\"";
274+
DEVELOPMENT_TEAM = 2937XWQ9VF;
275+
ENABLE_PREVIEWS = YES;
276+
GENERATE_INFOPLIST_FILE = YES;
277+
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
278+
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
279+
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
280+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
281+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
282+
LD_RUNPATH_SEARCH_PATHS = (
283+
"$(inherited)",
284+
"@executable_path/Frameworks",
285+
);
286+
MARKETING_VERSION = 1.0;
287+
PRODUCT_BUNDLE_IDENTIFIER = com.vincentpradeilles.AnimationsAndTransitions;
288+
PRODUCT_NAME = "$(TARGET_NAME)";
289+
SWIFT_EMIT_LOC_STRINGS = YES;
290+
SWIFT_VERSION = 5.0;
291+
TARGETED_DEVICE_FAMILY = "1,2";
292+
};
293+
name = Debug;
294+
};
295+
BFB4A5222A0D65BB00C7B228 /* Release */ = {
296+
isa = XCBuildConfiguration;
297+
buildSettings = {
298+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
299+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
300+
CODE_SIGN_STYLE = Automatic;
301+
CURRENT_PROJECT_VERSION = 1;
302+
DEVELOPMENT_ASSET_PATHS = "\"AnimationsAndTransitions/Preview Content\"";
303+
DEVELOPMENT_TEAM = 2937XWQ9VF;
304+
ENABLE_PREVIEWS = YES;
305+
GENERATE_INFOPLIST_FILE = YES;
306+
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
307+
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
308+
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
309+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
310+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
311+
LD_RUNPATH_SEARCH_PATHS = (
312+
"$(inherited)",
313+
"@executable_path/Frameworks",
314+
);
315+
MARKETING_VERSION = 1.0;
316+
PRODUCT_BUNDLE_IDENTIFIER = com.vincentpradeilles.AnimationsAndTransitions;
317+
PRODUCT_NAME = "$(TARGET_NAME)";
318+
SWIFT_EMIT_LOC_STRINGS = YES;
319+
SWIFT_VERSION = 5.0;
320+
TARGETED_DEVICE_FAMILY = "1,2";
321+
};
322+
name = Release;
323+
};
324+
/* End XCBuildConfiguration section */
325+
326+
/* Begin XCConfigurationList section */
327+
BFB4A50D2A0D65BA00C7B228 /* Build configuration list for PBXProject "AnimationsAndTransitions" */ = {
328+
isa = XCConfigurationList;
329+
buildConfigurations = (
330+
BFB4A51E2A0D65BB00C7B228 /* Debug */,
331+
BFB4A51F2A0D65BB00C7B228 /* Release */,
332+
);
333+
defaultConfigurationIsVisible = 0;
334+
defaultConfigurationName = Release;
335+
};
336+
BFB4A5202A0D65BB00C7B228 /* Build configuration list for PBXNativeTarget "AnimationsAndTransitions" */ = {
337+
isa = XCConfigurationList;
338+
buildConfigurations = (
339+
BFB4A5212A0D65BB00C7B228 /* Debug */,
340+
BFB4A5222A0D65BB00C7B228 /* Release */,
341+
);
342+
defaultConfigurationIsVisible = 0;
343+
defaultConfigurationName = Release;
344+
};
345+
/* End XCConfigurationList section */
346+
};
347+
rootObject = BFB4A50A2A0D65BA00C7B228 /* Project object */;
348+
}

07 - Advanced UI/AnimationsAndTransitions/AnimationsAndTransitions.xcodeproj/project.xcworkspace/contents.xcworkspacedata

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// AnimationsAndTransitionsApp.swift
3+
// AnimationsAndTransitions
4+
//
5+
// Created by Vincent on 11/05/2023.
6+
//
7+
8+
import SwiftUI
9+
10+
@main
11+
struct AnimationsAndTransitionsApp: App {
12+
var body: some Scene {
13+
WindowGroup {
14+
ContentView()
15+
}
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"colors" : [
3+
{
4+
"idiom" : "universal"
5+
}
6+
],
7+
"info" : {
8+
"author" : "xcode",
9+
"version" : 1
10+
}
11+
}

0 commit comments

Comments
 (0)