├── README.md
└── ShopPointerSwiftUI
├── ShopPointerSwiftUI.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── shreyasvilaschandrabhike.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
└── xcuserdata
│ └── shreyasvilaschandrabhike.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
└── ShopPointerSwiftUI
├── Assets.xcassets
├── AccentColor.colorset
│ └── Contents.json
├── AppIcon.appiconset
│ └── Contents.json
├── Contents.json
└── bg.imageset
│ ├── Contents.json
│ └── bg.jpg
├── ContentView.swift
├── Preview Content
└── Preview Assets.xcassets
│ └── Contents.json
└── ShopPointerSwiftUIApp.swift
/README.md:
--------------------------------------------------------------------------------
1 | # ShopPointerSwiftUI
2 | Shop Pointer made with SwiftUI.
3 |
4 |
5 |
6 |
7 |
8 | # Image used in project is from [Unsplash](https://unsplash.com/)
9 |
10 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 55;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 5C965C5B27D25CC500000179 /* ShopPointerSwiftUIApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C965C5A27D25CC500000179 /* ShopPointerSwiftUIApp.swift */; };
11 | 5C965C5D27D25CC500000179 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C965C5C27D25CC500000179 /* ContentView.swift */; };
12 | 5C965C5F27D25CC600000179 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5C965C5E27D25CC600000179 /* Assets.xcassets */; };
13 | 5C965C6227D25CC600000179 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5C965C6127D25CC600000179 /* Preview Assets.xcassets */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXFileReference section */
17 | 5C965C5727D25CC500000179 /* ShopPointerSwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShopPointerSwiftUI.app; sourceTree = BUILT_PRODUCTS_DIR; };
18 | 5C965C5A27D25CC500000179 /* ShopPointerSwiftUIApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShopPointerSwiftUIApp.swift; sourceTree = ""; };
19 | 5C965C5C27D25CC500000179 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
20 | 5C965C5E27D25CC600000179 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
21 | 5C965C6127D25CC600000179 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
22 | /* End PBXFileReference section */
23 |
24 | /* Begin PBXFrameworksBuildPhase section */
25 | 5C965C5427D25CC500000179 /* Frameworks */ = {
26 | isa = PBXFrameworksBuildPhase;
27 | buildActionMask = 2147483647;
28 | files = (
29 | );
30 | runOnlyForDeploymentPostprocessing = 0;
31 | };
32 | /* End PBXFrameworksBuildPhase section */
33 |
34 | /* Begin PBXGroup section */
35 | 5C965C4E27D25CC500000179 = {
36 | isa = PBXGroup;
37 | children = (
38 | 5C965C5927D25CC500000179 /* ShopPointerSwiftUI */,
39 | 5C965C5827D25CC500000179 /* Products */,
40 | );
41 | sourceTree = "";
42 | };
43 | 5C965C5827D25CC500000179 /* Products */ = {
44 | isa = PBXGroup;
45 | children = (
46 | 5C965C5727D25CC500000179 /* ShopPointerSwiftUI.app */,
47 | );
48 | name = Products;
49 | sourceTree = "";
50 | };
51 | 5C965C5927D25CC500000179 /* ShopPointerSwiftUI */ = {
52 | isa = PBXGroup;
53 | children = (
54 | 5C965C5A27D25CC500000179 /* ShopPointerSwiftUIApp.swift */,
55 | 5C965C5C27D25CC500000179 /* ContentView.swift */,
56 | 5C965C5E27D25CC600000179 /* Assets.xcassets */,
57 | 5C965C6027D25CC600000179 /* Preview Content */,
58 | );
59 | path = ShopPointerSwiftUI;
60 | sourceTree = "";
61 | };
62 | 5C965C6027D25CC600000179 /* Preview Content */ = {
63 | isa = PBXGroup;
64 | children = (
65 | 5C965C6127D25CC600000179 /* Preview Assets.xcassets */,
66 | );
67 | path = "Preview Content";
68 | sourceTree = "";
69 | };
70 | /* End PBXGroup section */
71 |
72 | /* Begin PBXNativeTarget section */
73 | 5C965C5627D25CC500000179 /* ShopPointerSwiftUI */ = {
74 | isa = PBXNativeTarget;
75 | buildConfigurationList = 5C965C6527D25CC600000179 /* Build configuration list for PBXNativeTarget "ShopPointerSwiftUI" */;
76 | buildPhases = (
77 | 5C965C5327D25CC500000179 /* Sources */,
78 | 5C965C5427D25CC500000179 /* Frameworks */,
79 | 5C965C5527D25CC500000179 /* Resources */,
80 | );
81 | buildRules = (
82 | );
83 | dependencies = (
84 | );
85 | name = ShopPointerSwiftUI;
86 | productName = ShopPointerSwiftUI;
87 | productReference = 5C965C5727D25CC500000179 /* ShopPointerSwiftUI.app */;
88 | productType = "com.apple.product-type.application";
89 | };
90 | /* End PBXNativeTarget section */
91 |
92 | /* Begin PBXProject section */
93 | 5C965C4F27D25CC500000179 /* Project object */ = {
94 | isa = PBXProject;
95 | attributes = {
96 | BuildIndependentTargetsInParallel = 1;
97 | LastSwiftUpdateCheck = 1320;
98 | LastUpgradeCheck = 1320;
99 | TargetAttributes = {
100 | 5C965C5627D25CC500000179 = {
101 | CreatedOnToolsVersion = 13.2.1;
102 | };
103 | };
104 | };
105 | buildConfigurationList = 5C965C5227D25CC500000179 /* Build configuration list for PBXProject "ShopPointerSwiftUI" */;
106 | compatibilityVersion = "Xcode 13.0";
107 | developmentRegion = en;
108 | hasScannedForEncodings = 0;
109 | knownRegions = (
110 | en,
111 | Base,
112 | );
113 | mainGroup = 5C965C4E27D25CC500000179;
114 | productRefGroup = 5C965C5827D25CC500000179 /* Products */;
115 | projectDirPath = "";
116 | projectRoot = "";
117 | targets = (
118 | 5C965C5627D25CC500000179 /* ShopPointerSwiftUI */,
119 | );
120 | };
121 | /* End PBXProject section */
122 |
123 | /* Begin PBXResourcesBuildPhase section */
124 | 5C965C5527D25CC500000179 /* Resources */ = {
125 | isa = PBXResourcesBuildPhase;
126 | buildActionMask = 2147483647;
127 | files = (
128 | 5C965C6227D25CC600000179 /* Preview Assets.xcassets in Resources */,
129 | 5C965C5F27D25CC600000179 /* Assets.xcassets in Resources */,
130 | );
131 | runOnlyForDeploymentPostprocessing = 0;
132 | };
133 | /* End PBXResourcesBuildPhase section */
134 |
135 | /* Begin PBXSourcesBuildPhase section */
136 | 5C965C5327D25CC500000179 /* Sources */ = {
137 | isa = PBXSourcesBuildPhase;
138 | buildActionMask = 2147483647;
139 | files = (
140 | 5C965C5D27D25CC500000179 /* ContentView.swift in Sources */,
141 | 5C965C5B27D25CC500000179 /* ShopPointerSwiftUIApp.swift in Sources */,
142 | );
143 | runOnlyForDeploymentPostprocessing = 0;
144 | };
145 | /* End PBXSourcesBuildPhase section */
146 |
147 | /* Begin XCBuildConfiguration section */
148 | 5C965C6327D25CC600000179 /* Debug */ = {
149 | isa = XCBuildConfiguration;
150 | buildSettings = {
151 | ALWAYS_SEARCH_USER_PATHS = NO;
152 | CLANG_ANALYZER_NONNULL = YES;
153 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
154 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
155 | CLANG_CXX_LIBRARY = "libc++";
156 | CLANG_ENABLE_MODULES = YES;
157 | CLANG_ENABLE_OBJC_ARC = YES;
158 | CLANG_ENABLE_OBJC_WEAK = YES;
159 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
160 | CLANG_WARN_BOOL_CONVERSION = YES;
161 | CLANG_WARN_COMMA = YES;
162 | CLANG_WARN_CONSTANT_CONVERSION = YES;
163 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
164 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
165 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
166 | CLANG_WARN_EMPTY_BODY = YES;
167 | CLANG_WARN_ENUM_CONVERSION = YES;
168 | CLANG_WARN_INFINITE_RECURSION = YES;
169 | CLANG_WARN_INT_CONVERSION = YES;
170 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
171 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
172 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
173 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
174 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
175 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
176 | CLANG_WARN_STRICT_PROTOTYPES = YES;
177 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
178 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
179 | CLANG_WARN_UNREACHABLE_CODE = YES;
180 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
181 | COPY_PHASE_STRIP = NO;
182 | DEBUG_INFORMATION_FORMAT = dwarf;
183 | ENABLE_STRICT_OBJC_MSGSEND = YES;
184 | ENABLE_TESTABILITY = YES;
185 | GCC_C_LANGUAGE_STANDARD = gnu11;
186 | GCC_DYNAMIC_NO_PIC = NO;
187 | GCC_NO_COMMON_BLOCKS = YES;
188 | GCC_OPTIMIZATION_LEVEL = 0;
189 | GCC_PREPROCESSOR_DEFINITIONS = (
190 | "DEBUG=1",
191 | "$(inherited)",
192 | );
193 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
194 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
195 | GCC_WARN_UNDECLARED_SELECTOR = YES;
196 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
197 | GCC_WARN_UNUSED_FUNCTION = YES;
198 | GCC_WARN_UNUSED_VARIABLE = YES;
199 | IPHONEOS_DEPLOYMENT_TARGET = 15.2;
200 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
201 | MTL_FAST_MATH = YES;
202 | ONLY_ACTIVE_ARCH = YES;
203 | SDKROOT = iphoneos;
204 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
205 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
206 | };
207 | name = Debug;
208 | };
209 | 5C965C6427D25CC600000179 /* Release */ = {
210 | isa = XCBuildConfiguration;
211 | buildSettings = {
212 | ALWAYS_SEARCH_USER_PATHS = NO;
213 | CLANG_ANALYZER_NONNULL = YES;
214 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
215 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
216 | CLANG_CXX_LIBRARY = "libc++";
217 | CLANG_ENABLE_MODULES = YES;
218 | CLANG_ENABLE_OBJC_ARC = YES;
219 | CLANG_ENABLE_OBJC_WEAK = YES;
220 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
221 | CLANG_WARN_BOOL_CONVERSION = YES;
222 | CLANG_WARN_COMMA = YES;
223 | CLANG_WARN_CONSTANT_CONVERSION = YES;
224 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
225 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
226 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
227 | CLANG_WARN_EMPTY_BODY = YES;
228 | CLANG_WARN_ENUM_CONVERSION = YES;
229 | CLANG_WARN_INFINITE_RECURSION = YES;
230 | CLANG_WARN_INT_CONVERSION = YES;
231 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
232 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
233 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
234 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
235 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
236 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
237 | CLANG_WARN_STRICT_PROTOTYPES = YES;
238 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
239 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
240 | CLANG_WARN_UNREACHABLE_CODE = YES;
241 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
242 | COPY_PHASE_STRIP = NO;
243 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
244 | ENABLE_NS_ASSERTIONS = NO;
245 | ENABLE_STRICT_OBJC_MSGSEND = YES;
246 | GCC_C_LANGUAGE_STANDARD = gnu11;
247 | GCC_NO_COMMON_BLOCKS = YES;
248 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
249 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
250 | GCC_WARN_UNDECLARED_SELECTOR = YES;
251 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
252 | GCC_WARN_UNUSED_FUNCTION = YES;
253 | GCC_WARN_UNUSED_VARIABLE = YES;
254 | IPHONEOS_DEPLOYMENT_TARGET = 15.2;
255 | MTL_ENABLE_DEBUG_INFO = NO;
256 | MTL_FAST_MATH = YES;
257 | SDKROOT = iphoneos;
258 | SWIFT_COMPILATION_MODE = wholemodule;
259 | SWIFT_OPTIMIZATION_LEVEL = "-O";
260 | VALIDATE_PRODUCT = YES;
261 | };
262 | name = Release;
263 | };
264 | 5C965C6627D25CC600000179 /* Debug */ = {
265 | isa = XCBuildConfiguration;
266 | buildSettings = {
267 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
268 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
269 | CODE_SIGN_STYLE = Automatic;
270 | CURRENT_PROJECT_VERSION = 1;
271 | DEVELOPMENT_ASSET_PATHS = "\"ShopPointerSwiftUI/Preview Content\"";
272 | DEVELOPMENT_TEAM = 56ZBSRTSDR;
273 | ENABLE_PREVIEWS = YES;
274 | GENERATE_INFOPLIST_FILE = YES;
275 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
276 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
277 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
278 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
279 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
280 | LD_RUNPATH_SEARCH_PATHS = (
281 | "$(inherited)",
282 | "@executable_path/Frameworks",
283 | );
284 | MARKETING_VERSION = 1.0;
285 | PRODUCT_BUNDLE_IDENTIFIER = com.shreyasvilaschandrabhike.ShopPointerSwiftUI;
286 | PRODUCT_NAME = "$(TARGET_NAME)";
287 | SWIFT_EMIT_LOC_STRINGS = YES;
288 | SWIFT_VERSION = 5.0;
289 | TARGETED_DEVICE_FAMILY = "1,2";
290 | };
291 | name = Debug;
292 | };
293 | 5C965C6727D25CC600000179 /* Release */ = {
294 | isa = XCBuildConfiguration;
295 | buildSettings = {
296 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
297 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
298 | CODE_SIGN_STYLE = Automatic;
299 | CURRENT_PROJECT_VERSION = 1;
300 | DEVELOPMENT_ASSET_PATHS = "\"ShopPointerSwiftUI/Preview Content\"";
301 | DEVELOPMENT_TEAM = 56ZBSRTSDR;
302 | ENABLE_PREVIEWS = YES;
303 | GENERATE_INFOPLIST_FILE = YES;
304 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
305 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
306 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
307 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
308 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
309 | LD_RUNPATH_SEARCH_PATHS = (
310 | "$(inherited)",
311 | "@executable_path/Frameworks",
312 | );
313 | MARKETING_VERSION = 1.0;
314 | PRODUCT_BUNDLE_IDENTIFIER = com.shreyasvilaschandrabhike.ShopPointerSwiftUI;
315 | PRODUCT_NAME = "$(TARGET_NAME)";
316 | SWIFT_EMIT_LOC_STRINGS = YES;
317 | SWIFT_VERSION = 5.0;
318 | TARGETED_DEVICE_FAMILY = "1,2";
319 | };
320 | name = Release;
321 | };
322 | /* End XCBuildConfiguration section */
323 |
324 | /* Begin XCConfigurationList section */
325 | 5C965C5227D25CC500000179 /* Build configuration list for PBXProject "ShopPointerSwiftUI" */ = {
326 | isa = XCConfigurationList;
327 | buildConfigurations = (
328 | 5C965C6327D25CC600000179 /* Debug */,
329 | 5C965C6427D25CC600000179 /* Release */,
330 | );
331 | defaultConfigurationIsVisible = 0;
332 | defaultConfigurationName = Release;
333 | };
334 | 5C965C6527D25CC600000179 /* Build configuration list for PBXNativeTarget "ShopPointerSwiftUI" */ = {
335 | isa = XCConfigurationList;
336 | buildConfigurations = (
337 | 5C965C6627D25CC600000179 /* Debug */,
338 | 5C965C6727D25CC600000179 /* Release */,
339 | );
340 | defaultConfigurationIsVisible = 0;
341 | defaultConfigurationName = Release;
342 | };
343 | /* End XCConfigurationList section */
344 | };
345 | rootObject = 5C965C4F27D25CC500000179 /* Project object */;
346 | }
347 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheAppWizard/ShopPointerSwiftUI/c89706b426e9aa7655c240158449095f6e5b3871/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI.xcodeproj/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | ShopPointerSwiftUI.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/bg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "bg.jpg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/bg.imageset/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheAppWizard/ShopPointerSwiftUI/c89706b426e9aa7655c240158449095f6e5b3871/ShopPointerSwiftUI/ShopPointerSwiftUI/Assets.xcassets/bg.imageset/bg.jpg
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // ShopPointerSwiftUI
4 | //
5 | // Created by Shreyas Vilaschandra Bhike on 04/03/22.
6 |
7 | // MARK: The App Wizard
8 | // Instagram :
9 | // MARK: @theappwizard2408
10 |
11 |
12 | import SwiftUI
13 |
14 | struct ContentView: View {
15 | var body: some View {
16 | ZStack{
17 | FinalView()
18 | }
19 | }
20 | }
21 |
22 | struct ContentView_Previews: PreviewProvider {
23 | static var previews: some View {
24 | ContentView()
25 | }
26 | }
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | struct FinalView: View {
48 | var body: some View {
49 | ZStack{
50 | Color.black.edgesIgnoringSafeArea(.all)
51 |
52 | Image("bg")
53 | .resizable()
54 | .frame(width: 550, height: 850)
55 | .offset(x: 40, y: -220)
56 |
57 | ShopOptions()
58 | Pointer()
59 |
60 |
61 | }
62 | }
63 | }
64 |
65 | struct Pointer: View {
66 | @State private var tapone = false
67 | @State private var taptwo = false
68 |
69 | @State private var taponeAnim = false
70 | @State private var taptwoAnim = false
71 |
72 | var body: some View {
73 | ZStack{
74 |
75 | ZStack{
76 |
77 |
78 | Circle()
79 | .foregroundColor(.blue.opacity(0.3))
80 | .frame(width: 30, height: 30)
81 | .scaleEffect(taponeAnim ? 1 : 3)
82 |
83 | .onAppear() {
84 | withAnimation(Animation.easeInOut(duration: 1).repeatForever(autoreverses: true))
85 | {
86 | taponeAnim.toggle()
87 | }
88 | }
89 |
90 | Circle()
91 | .foregroundColor(.blue.opacity(0.3))
92 | .frame(width: 30, height: 30)
93 |
94 | .overlay {
95 | Circle().stroke(.white, lineWidth: 4)
96 | }
97 | .gesture(
98 | TapGesture()
99 | .onEnded({
100 | self.tapone.toggle()
101 | })
102 |
103 |
104 | )
105 |
106 | if tapone {
107 | ToolTip(text: "Apple Keyboard",price: "700$")
108 | .offset(x: 0, y: -90)
109 | }
110 |
111 |
112 |
113 | }
114 | .offset(x: -90, y: -160)
115 |
116 |
117 | ZStack{
118 |
119 | Circle()
120 | .foregroundColor(.blue.opacity(0.3))
121 | .frame(width: 30, height: 30)
122 | .scaleEffect(taptwoAnim ? 1 : 3)
123 |
124 | .onAppear() {
125 | withAnimation(Animation.easeInOut(duration: 1).repeatForever(autoreverses: true))
126 | {
127 | taptwoAnim.toggle()
128 | }
129 | }
130 |
131 | Circle()
132 | .foregroundColor(.blue.opacity(0.3))
133 | .frame(width: 30, height: 30)
134 | .overlay {
135 | Circle().stroke(.white, lineWidth: 4)
136 | }
137 | .gesture(
138 | TapGesture()
139 | .onEnded({
140 | self.taptwo.toggle()
141 | })
142 |
143 | )
144 |
145 | if taptwo {
146 | ToolTip(text: "Apple Mouse",price: "450$")
147 | .offset(x: 0, y: -90)
148 | }
149 | }
150 | .offset(x: 90, y: 100)
151 | }
152 | }
153 | }
154 |
155 |
156 |
157 | struct Triangle: Shape {
158 | func path(in rect: CGRect) -> Path {
159 | var path = Path()
160 |
161 | path.move(to: CGPoint(x: rect.midX, y: rect.minY))
162 | path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
163 | path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
164 | path.addLine(to: CGPoint(x: rect.midX, y: rect.minY))
165 |
166 | return path
167 | }
168 | }
169 |
170 |
171 | struct ToolTip: View {
172 |
173 | @State var text = ""
174 | @State var price = ""
175 |
176 | var body: some View {
177 | ZStack{
178 | RoundedRectangle(cornerRadius: 15)
179 | .foregroundColor(.white)
180 | .frame(width: 220, height: 80)
181 | .shadow(color: .black, radius: 3, x: 3, y: 3)
182 | // .overlay {
183 | // RoundedRectangle(cornerRadius: 15).stroke(.blue, lineWidth: 2)
184 | // }
185 |
186 | Triangle()
187 | .fill(.white)
188 | .frame(width: 50, height: 50)
189 | .rotationEffect(.degrees(180))
190 | .offset(x: 0, y: 40)
191 |
192 |
193 |
194 | Text(text)
195 | .font(.title3)
196 | .fontWeight(.regular)
197 | .foregroundColor(.black.opacity(0.7))
198 | .offset(x: 0, y: -13)
199 |
200 | Text(price)
201 | .font(.title)
202 | .fontWeight(.bold)
203 | .foregroundColor(.black)
204 | .offset(x: 0, y: 15)
205 |
206 | }
207 |
208 | }
209 | }
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 | struct ShopOptions: View {
219 |
220 |
221 | @State private var heartTap = false
222 |
223 | let para = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tincidunt et metus mattis auctor."
224 |
225 | var body: some View {
226 | ZStack{
227 |
228 |
229 |
230 |
231 | RoundedRectangle(cornerRadius: 25)
232 | .frame(width: 430, height: 350)
233 | .offset(x: 0, y: 320)
234 | .foregroundColor(.black)
235 |
236 | Text("BUY NOW")
237 | .font(.title3)
238 | .fontWeight(.bold)
239 | .foregroundColor(.white)
240 | .offset(x: 98, y: 400)
241 |
242 | Image(systemName: "chevron.right")
243 | .resizable()
244 | .frame(width: 18, height: 30)
245 | .foregroundColor(.white)
246 | .offset(x: 170, y: 400)
247 |
248 |
249 | VStack{
250 |
251 | HStack{
252 |
253 |
254 | Text("Keyboard and Mouse")
255 | .font(.title)
256 | .foregroundColor(Color.white)
257 | .offset(x: 0 , y: 320)
258 |
259 |
260 |
261 | Spacer().frame(width: 100)
262 |
263 | ZStack{
264 | Image(systemName: "heart")
265 | .resizable()
266 | .frame(width: 30, height: 28)
267 | .foregroundColor(.white)
268 | .gesture(
269 | TapGesture()
270 | .onEnded({
271 | self.heartTap.toggle()
272 | })
273 |
274 | )
275 |
276 |
277 | if heartTap {
278 | Image(systemName: "heart.fill")
279 | .resizable()
280 | .frame(width: 30, height: 28)
281 | .foregroundColor(.red)
282 | }
283 |
284 | }
285 | .offset(x: 0, y: 320)
286 |
287 |
288 |
289 | }
290 |
291 |
292 | Text(para)
293 | .font(.title2)
294 | .fontWeight(.light)
295 | .foregroundColor(.white.opacity(0.8))
296 | .padding()
297 | .frame(width: 420, height: 200)
298 | .offset(x: 0, y: 280)
299 |
300 |
301 |
302 |
303 | }.padding(20)
304 |
305 |
306 | }
307 | }
308 | }
309 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ShopPointerSwiftUI/ShopPointerSwiftUI/ShopPointerSwiftUIApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ShopPointerSwiftUIApp.swift
3 | // ShopPointerSwiftUI
4 | //
5 | // Created by Shreyas Vilaschandra Bhike on 04/03/22.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct ShopPointerSwiftUIApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------