Showing
100 changed files
with
4669 additions
and
0 deletions
Too many changes to show.
To preserve performance only 100 of 100+ files are displayed.
Fonts + Extension/Fonts + Extension.swift
0 → 100644
1 | +// | ||
2 | +// Fonts + Extension.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 02.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +enum SkModernistFontType: String { | ||
11 | + case bold = "Sk-Modernist-Bold" | ||
12 | + case mono = "Sk-Modernist-Mono" | ||
13 | + case regular = "Sk-Modernist-Regular" | ||
14 | +} | ||
15 | + | ||
16 | +extension UIFont { | ||
17 | + static func roboto(type: SkModernistFontType, ofSize: CGFloat) -> UIFont { | ||
18 | + if let font = UIFont(name: type.rawValue, size: ofSize) { | ||
19 | + return font | ||
20 | + } else { | ||
21 | + fatalError("Font '\(type.rawValue)' does not exist.❌") | ||
22 | + } | ||
23 | + } | ||
24 | +} |
InterQR-Internship.xcodeproj/project.pbxproj
0 → 100644
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 55; | ||
7 | + objects = { | ||
8 | + | ||
9 | +/* Begin PBXBuildFile section */ | ||
10 | + 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */; }; | ||
11 | + 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17058D53284A4F670078DD82 /* CodeVerificationView.swift */; }; | ||
12 | + 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */; }; | ||
13 | + 17287C692848C69600AA7113 /* Sk-Modernist-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */; }; | ||
14 | + 17287C6A2848C69600AA7113 /* Sk-Modernist-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */; }; | ||
15 | + 17287C6B2848C69600AA7113 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 17287C662848C69600AA7113 /* license.txt */; }; | ||
16 | + 17287C6C2848C69600AA7113 /* fontsme.com.url in Resources */ = {isa = PBXBuildFile; fileRef = 17287C672848C69600AA7113 /* fontsme.com.url */; }; | ||
17 | + 17287C6D2848C69600AA7113 /* Sk-Modernist-Mono.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */; }; | ||
18 | + 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E21C28465162006C7C29 /* PhoneService.swift */; }; | ||
19 | + 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E21E28465595006C7C29 /* PhoneNumberView.swift */; }; | ||
20 | + 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */; }; | ||
21 | + 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */; }; | ||
22 | + 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */; }; | ||
23 | + 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */; }; | ||
24 | + 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */; }; | ||
25 | + 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */; }; | ||
26 | + 17CF9EEA2844ED90000D8077 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 17CF9EE92844ED90000D8077 /* Assets.xcassets */; }; | ||
27 | + 17CF9EED2844ED90000D8077 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */; }; | ||
28 | + 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EF62844EF8B000D8077 /* VerificationView.swift */; }; | ||
29 | + CADC9D02EAEA6638FF235EF7 /* Pods_InterQR_Internship.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */; }; | ||
30 | +/* End PBXBuildFile section */ | ||
31 | + | ||
32 | +/* Begin PBXFileReference section */ | ||
33 | + 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeVerificationViewController.swift; sourceTree = "<group>"; }; | ||
34 | + 17058D53284A4F670078DD82 /* CodeVerificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeVerificationView.swift; sourceTree = "<group>"; }; | ||
35 | + 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Fonts + Extension.swift"; sourceTree = "<group>"; }; | ||
36 | + 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Bold.otf"; sourceTree = "<group>"; }; | ||
37 | + 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Regular.otf"; sourceTree = "<group>"; }; | ||
38 | + 17287C662848C69600AA7113 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = license.txt; path = "../../../../../../Downloads/Sk-Modernist/license.txt"; sourceTree = "<group>"; }; | ||
39 | + 17287C672848C69600AA7113 /* fontsme.com.url */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = fontsme.com.url; path = "../../../../../../Downloads/Sk-Modernist/fontsme.com.url"; sourceTree = "<group>"; }; | ||
40 | + 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Mono.otf"; sourceTree = "<group>"; }; | ||
41 | + 1729E21C28465162006C7C29 /* PhoneService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneService.swift; sourceTree = "<group>"; }; | ||
42 | + 1729E21E28465595006C7C29 /* PhoneNumberView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberView.swift; sourceTree = "<group>"; }; | ||
43 | + 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhonePickerModel.swift; sourceTree = "<group>"; }; | ||
44 | + 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldWithPadding.swift; sourceTree = "<group>"; }; | ||
45 | + 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickerViewCell.swift; sourceTree = "<group>"; }; | ||
46 | + 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "InterQR-Internship.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
47 | + 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||
48 | + 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; | ||
49 | + 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerificationViewController.swift; sourceTree = "<group>"; }; | ||
50 | + 17CF9EE92844ED90000D8077 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||
51 | + 17CF9EEC2844ED90000D8077 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||
52 | + 17CF9EEE2844ED90000D8077 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
53 | + 17CF9EF62844EF8B000D8077 /* VerificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerificationView.swift; sourceTree = "<group>"; }; | ||
54 | + 5BDBB5A6BD07C19C7C41277E /* Pods-InterQR-Internship.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InterQR-Internship.release.xcconfig"; path = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.release.xcconfig"; sourceTree = "<group>"; }; | ||
55 | + 5DBC5918C180544DDA6F77E2 /* Pods-InterQR-Internship.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InterQR-Internship.debug.xcconfig"; path = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.debug.xcconfig"; sourceTree = "<group>"; }; | ||
56 | + C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_InterQR_Internship.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
57 | +/* End PBXFileReference section */ | ||
58 | + | ||
59 | +/* Begin PBXFrameworksBuildPhase section */ | ||
60 | + 17CF9EDA2844ED8F000D8077 /* Frameworks */ = { | ||
61 | + isa = PBXFrameworksBuildPhase; | ||
62 | + buildActionMask = 2147483647; | ||
63 | + files = ( | ||
64 | + CADC9D02EAEA6638FF235EF7 /* Pods_InterQR_Internship.framework in Frameworks */, | ||
65 | + ); | ||
66 | + runOnlyForDeploymentPostprocessing = 0; | ||
67 | + }; | ||
68 | +/* End PBXFrameworksBuildPhase section */ | ||
69 | + | ||
70 | +/* Begin PBXGroup section */ | ||
71 | + 17287C5E2848AC8800AA7113 /* Fonts + Extension */ = { | ||
72 | + isa = PBXGroup; | ||
73 | + children = ( | ||
74 | + 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */, | ||
75 | + ); | ||
76 | + path = "Fonts + Extension"; | ||
77 | + sourceTree = "<group>"; | ||
78 | + }; | ||
79 | + 17CF9ED42844ED8F000D8077 = { | ||
80 | + isa = PBXGroup; | ||
81 | + children = ( | ||
82 | + 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */, | ||
83 | + 17287C5E2848AC8800AA7113 /* Fonts + Extension */, | ||
84 | + 17FD60D82848A2CE00957A3A /* Resources */, | ||
85 | + 17CF9EDE2844ED8F000D8077 /* Products */, | ||
86 | + 86273571ED5441E00D80DE37 /* Pods */, | ||
87 | + 35BE87303DBEEF43C5C2D917 /* Frameworks */, | ||
88 | + ); | ||
89 | + sourceTree = "<group>"; | ||
90 | + }; | ||
91 | + 17CF9EDE2844ED8F000D8077 /* Products */ = { | ||
92 | + isa = PBXGroup; | ||
93 | + children = ( | ||
94 | + 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */, | ||
95 | + ); | ||
96 | + name = Products; | ||
97 | + sourceTree = "<group>"; | ||
98 | + }; | ||
99 | + 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */ = { | ||
100 | + isa = PBXGroup; | ||
101 | + children = ( | ||
102 | + 17CF9EF42844EF55000D8077 /* Views */, | ||
103 | + 17CF9EF52844EF66000D8077 /* Controllers */, | ||
104 | + 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */, | ||
105 | + 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */, | ||
106 | + 17CF9EE92844ED90000D8077 /* Assets.xcassets */, | ||
107 | + 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */, | ||
108 | + 17CF9EEE2844ED90000D8077 /* Info.plist */, | ||
109 | + 1729E21C28465162006C7C29 /* PhoneService.swift */, | ||
110 | + 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */, | ||
111 | + ); | ||
112 | + path = "InterQR-Internship"; | ||
113 | + sourceTree = "<group>"; | ||
114 | + }; | ||
115 | + 17CF9EF42844EF55000D8077 /* Views */ = { | ||
116 | + isa = PBXGroup; | ||
117 | + children = ( | ||
118 | + 17CF9EF62844EF8B000D8077 /* VerificationView.swift */, | ||
119 | + 17058D53284A4F670078DD82 /* CodeVerificationView.swift */, | ||
120 | + 1729E21E28465595006C7C29 /* PhoneNumberView.swift */, | ||
121 | + 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */, | ||
122 | + 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */, | ||
123 | + ); | ||
124 | + path = Views; | ||
125 | + sourceTree = "<group>"; | ||
126 | + }; | ||
127 | + 17CF9EF52844EF66000D8077 /* Controllers */ = { | ||
128 | + isa = PBXGroup; | ||
129 | + children = ( | ||
130 | + 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */, | ||
131 | + 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */, | ||
132 | + ); | ||
133 | + path = Controllers; | ||
134 | + sourceTree = "<group>"; | ||
135 | + }; | ||
136 | + 17FD60D82848A2CE00957A3A /* Resources */ = { | ||
137 | + isa = PBXGroup; | ||
138 | + children = ( | ||
139 | + 17FD60D92848A56900957A3A /* Fonts */, | ||
140 | + ); | ||
141 | + path = Resources; | ||
142 | + sourceTree = "<group>"; | ||
143 | + }; | ||
144 | + 17FD60D92848A56900957A3A /* Fonts */ = { | ||
145 | + isa = PBXGroup; | ||
146 | + children = ( | ||
147 | + 17287C672848C69600AA7113 /* fontsme.com.url */, | ||
148 | + 17287C662848C69600AA7113 /* license.txt */, | ||
149 | + 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */, | ||
150 | + 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */, | ||
151 | + 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */, | ||
152 | + ); | ||
153 | + path = Fonts; | ||
154 | + sourceTree = "<group>"; | ||
155 | + }; | ||
156 | + 35BE87303DBEEF43C5C2D917 /* Frameworks */ = { | ||
157 | + isa = PBXGroup; | ||
158 | + children = ( | ||
159 | + C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */, | ||
160 | + ); | ||
161 | + name = Frameworks; | ||
162 | + sourceTree = "<group>"; | ||
163 | + }; | ||
164 | + 86273571ED5441E00D80DE37 /* Pods */ = { | ||
165 | + isa = PBXGroup; | ||
166 | + children = ( | ||
167 | + 5DBC5918C180544DDA6F77E2 /* Pods-InterQR-Internship.debug.xcconfig */, | ||
168 | + 5BDBB5A6BD07C19C7C41277E /* Pods-InterQR-Internship.release.xcconfig */, | ||
169 | + ); | ||
170 | + path = Pods; | ||
171 | + sourceTree = "<group>"; | ||
172 | + }; | ||
173 | +/* End PBXGroup section */ | ||
174 | + | ||
175 | +/* Begin PBXNativeTarget section */ | ||
176 | + 17CF9EDC2844ED8F000D8077 /* InterQR-Internship */ = { | ||
177 | + isa = PBXNativeTarget; | ||
178 | + buildConfigurationList = 17CF9EF12844ED90000D8077 /* Build configuration list for PBXNativeTarget "InterQR-Internship" */; | ||
179 | + buildPhases = ( | ||
180 | + 02D597CE20BC23D36D22D265 /* [CP] Check Pods Manifest.lock */, | ||
181 | + 17CF9ED92844ED8F000D8077 /* Sources */, | ||
182 | + 17CF9EDA2844ED8F000D8077 /* Frameworks */, | ||
183 | + 17CF9EDB2844ED8F000D8077 /* Resources */, | ||
184 | + 156CBF425600953154887DB7 /* [CP] Embed Pods Frameworks */, | ||
185 | + ); | ||
186 | + buildRules = ( | ||
187 | + ); | ||
188 | + dependencies = ( | ||
189 | + ); | ||
190 | + name = "InterQR-Internship"; | ||
191 | + productName = "InterQR-Internship"; | ||
192 | + productReference = 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */; | ||
193 | + productType = "com.apple.product-type.application"; | ||
194 | + }; | ||
195 | +/* End PBXNativeTarget section */ | ||
196 | + | ||
197 | +/* Begin PBXProject section */ | ||
198 | + 17CF9ED52844ED8F000D8077 /* Project object */ = { | ||
199 | + isa = PBXProject; | ||
200 | + attributes = { | ||
201 | + BuildIndependentTargetsInParallel = 1; | ||
202 | + LastSwiftUpdateCheck = 1300; | ||
203 | + LastUpgradeCheck = 1300; | ||
204 | + TargetAttributes = { | ||
205 | + 17CF9EDC2844ED8F000D8077 = { | ||
206 | + CreatedOnToolsVersion = 13.0; | ||
207 | + }; | ||
208 | + }; | ||
209 | + }; | ||
210 | + buildConfigurationList = 17CF9ED82844ED8F000D8077 /* Build configuration list for PBXProject "InterQR-Internship" */; | ||
211 | + compatibilityVersion = "Xcode 13.0"; | ||
212 | + developmentRegion = en; | ||
213 | + hasScannedForEncodings = 0; | ||
214 | + knownRegions = ( | ||
215 | + en, | ||
216 | + Base, | ||
217 | + ); | ||
218 | + mainGroup = 17CF9ED42844ED8F000D8077; | ||
219 | + productRefGroup = 17CF9EDE2844ED8F000D8077 /* Products */; | ||
220 | + projectDirPath = ""; | ||
221 | + projectRoot = ""; | ||
222 | + targets = ( | ||
223 | + 17CF9EDC2844ED8F000D8077 /* InterQR-Internship */, | ||
224 | + ); | ||
225 | + }; | ||
226 | +/* End PBXProject section */ | ||
227 | + | ||
228 | +/* Begin PBXResourcesBuildPhase section */ | ||
229 | + 17CF9EDB2844ED8F000D8077 /* Resources */ = { | ||
230 | + isa = PBXResourcesBuildPhase; | ||
231 | + buildActionMask = 2147483647; | ||
232 | + files = ( | ||
233 | + 17CF9EED2844ED90000D8077 /* LaunchScreen.storyboard in Resources */, | ||
234 | + 17287C6D2848C69600AA7113 /* Sk-Modernist-Mono.otf in Resources */, | ||
235 | + 17287C6B2848C69600AA7113 /* license.txt in Resources */, | ||
236 | + 17287C692848C69600AA7113 /* Sk-Modernist-Bold.otf in Resources */, | ||
237 | + 17287C6A2848C69600AA7113 /* Sk-Modernist-Regular.otf in Resources */, | ||
238 | + 17CF9EEA2844ED90000D8077 /* Assets.xcassets in Resources */, | ||
239 | + 17287C6C2848C69600AA7113 /* fontsme.com.url in Resources */, | ||
240 | + ); | ||
241 | + runOnlyForDeploymentPostprocessing = 0; | ||
242 | + }; | ||
243 | +/* End PBXResourcesBuildPhase section */ | ||
244 | + | ||
245 | +/* Begin PBXShellScriptBuildPhase section */ | ||
246 | + 02D597CE20BC23D36D22D265 /* [CP] Check Pods Manifest.lock */ = { | ||
247 | + isa = PBXShellScriptBuildPhase; | ||
248 | + buildActionMask = 2147483647; | ||
249 | + files = ( | ||
250 | + ); | ||
251 | + inputFileListPaths = ( | ||
252 | + ); | ||
253 | + inputPaths = ( | ||
254 | + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||
255 | + "${PODS_ROOT}/Manifest.lock", | ||
256 | + ); | ||
257 | + name = "[CP] Check Pods Manifest.lock"; | ||
258 | + outputFileListPaths = ( | ||
259 | + ); | ||
260 | + outputPaths = ( | ||
261 | + "$(DERIVED_FILE_DIR)/Pods-InterQR-Internship-checkManifestLockResult.txt", | ||
262 | + ); | ||
263 | + runOnlyForDeploymentPostprocessing = 0; | ||
264 | + shellPath = /bin/sh; | ||
265 | + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||
266 | + showEnvVarsInLog = 0; | ||
267 | + }; | ||
268 | + 156CBF425600953154887DB7 /* [CP] Embed Pods Frameworks */ = { | ||
269 | + isa = PBXShellScriptBuildPhase; | ||
270 | + buildActionMask = 2147483647; | ||
271 | + files = ( | ||
272 | + ); | ||
273 | + inputFileListPaths = ( | ||
274 | + "${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||
275 | + ); | ||
276 | + name = "[CP] Embed Pods Frameworks"; | ||
277 | + outputFileListPaths = ( | ||
278 | + "${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||
279 | + ); | ||
280 | + runOnlyForDeploymentPostprocessing = 0; | ||
281 | + shellPath = /bin/sh; | ||
282 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks.sh\"\n"; | ||
283 | + showEnvVarsInLog = 0; | ||
284 | + }; | ||
285 | +/* End PBXShellScriptBuildPhase section */ | ||
286 | + | ||
287 | +/* Begin PBXSourcesBuildPhase section */ | ||
288 | + 17CF9ED92844ED8F000D8077 /* Sources */ = { | ||
289 | + isa = PBXSourcesBuildPhase; | ||
290 | + buildActionMask = 2147483647; | ||
291 | + files = ( | ||
292 | + 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */, | ||
293 | + 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */, | ||
294 | + 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */, | ||
295 | + 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */, | ||
296 | + 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */, | ||
297 | + 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */, | ||
298 | + 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */, | ||
299 | + 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */, | ||
300 | + 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */, | ||
301 | + 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */, | ||
302 | + 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */, | ||
303 | + 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */, | ||
304 | + ); | ||
305 | + runOnlyForDeploymentPostprocessing = 0; | ||
306 | + }; | ||
307 | +/* End PBXSourcesBuildPhase section */ | ||
308 | + | ||
309 | +/* Begin PBXVariantGroup section */ | ||
310 | + 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */ = { | ||
311 | + isa = PBXVariantGroup; | ||
312 | + children = ( | ||
313 | + 17CF9EEC2844ED90000D8077 /* Base */, | ||
314 | + ); | ||
315 | + name = LaunchScreen.storyboard; | ||
316 | + sourceTree = "<group>"; | ||
317 | + }; | ||
318 | +/* End PBXVariantGroup section */ | ||
319 | + | ||
320 | +/* Begin XCBuildConfiguration section */ | ||
321 | + 17CF9EEF2844ED90000D8077 /* Debug */ = { | ||
322 | + isa = XCBuildConfiguration; | ||
323 | + buildSettings = { | ||
324 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
325 | + CLANG_ANALYZER_NONNULL = YES; | ||
326 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
327 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; | ||
328 | + CLANG_CXX_LIBRARY = "libc++"; | ||
329 | + CLANG_ENABLE_MODULES = YES; | ||
330 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
331 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
332 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
333 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
334 | + CLANG_WARN_COMMA = YES; | ||
335 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
336 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
337 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
338 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
339 | + CLANG_WARN_EMPTY_BODY = YES; | ||
340 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
341 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
342 | + CLANG_WARN_INT_CONVERSION = YES; | ||
343 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
344 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
345 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
346 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
347 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
348 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
349 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
350 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
351 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
352 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
353 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
354 | + COPY_PHASE_STRIP = NO; | ||
355 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
356 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
357 | + ENABLE_TESTABILITY = YES; | ||
358 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
359 | + GCC_DYNAMIC_NO_PIC = NO; | ||
360 | + GCC_NO_COMMON_BLOCKS = YES; | ||
361 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
362 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
363 | + "DEBUG=1", | ||
364 | + "$(inherited)", | ||
365 | + ); | ||
366 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
367 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
368 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
369 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
370 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
371 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
372 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
373 | + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
374 | + MTL_FAST_MATH = YES; | ||
375 | + ONLY_ACTIVE_ARCH = YES; | ||
376 | + SDKROOT = iphoneos; | ||
377 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
378 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
379 | + }; | ||
380 | + name = Debug; | ||
381 | + }; | ||
382 | + 17CF9EF02844ED90000D8077 /* Release */ = { | ||
383 | + isa = XCBuildConfiguration; | ||
384 | + buildSettings = { | ||
385 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
386 | + CLANG_ANALYZER_NONNULL = YES; | ||
387 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
388 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; | ||
389 | + CLANG_CXX_LIBRARY = "libc++"; | ||
390 | + CLANG_ENABLE_MODULES = YES; | ||
391 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
392 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
393 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
394 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
395 | + CLANG_WARN_COMMA = YES; | ||
396 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
397 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
398 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
399 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
400 | + CLANG_WARN_EMPTY_BODY = YES; | ||
401 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
402 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
403 | + CLANG_WARN_INT_CONVERSION = YES; | ||
404 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
405 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
406 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
407 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
408 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
409 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
410 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
411 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
412 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
413 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
414 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
415 | + COPY_PHASE_STRIP = NO; | ||
416 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
417 | + ENABLE_NS_ASSERTIONS = NO; | ||
418 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
419 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
420 | + GCC_NO_COMMON_BLOCKS = YES; | ||
421 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
422 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
423 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
424 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
425 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
426 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
427 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
428 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
429 | + MTL_FAST_MATH = YES; | ||
430 | + SDKROOT = iphoneos; | ||
431 | + SWIFT_COMPILATION_MODE = wholemodule; | ||
432 | + SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||
433 | + VALIDATE_PRODUCT = YES; | ||
434 | + }; | ||
435 | + name = Release; | ||
436 | + }; | ||
437 | + 17CF9EF22844ED90000D8077 /* Debug */ = { | ||
438 | + isa = XCBuildConfiguration; | ||
439 | + baseConfigurationReference = 5DBC5918C180544DDA6F77E2 /* Pods-InterQR-Internship.debug.xcconfig */; | ||
440 | + buildSettings = { | ||
441 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
442 | + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||
443 | + CODE_SIGN_STYLE = Automatic; | ||
444 | + CURRENT_PROJECT_VERSION = 1; | ||
445 | + GENERATE_INFOPLIST_FILE = YES; | ||
446 | + INFOPLIST_FILE = "InterQR-Internship/Info.plist"; | ||
447 | + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
448 | + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; | ||
449 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
450 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
451 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
452 | + "$(inherited)", | ||
453 | + "@executable_path/Frameworks", | ||
454 | + ); | ||
455 | + MARKETING_VERSION = 1.0; | ||
456 | + PRODUCT_BUNDLE_IDENTIFIER = "com.TDY13.InterQR-Internship"; | ||
457 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
458 | + SWIFT_EMIT_LOC_STRINGS = YES; | ||
459 | + SWIFT_VERSION = 5.0; | ||
460 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
461 | + }; | ||
462 | + name = Debug; | ||
463 | + }; | ||
464 | + 17CF9EF32844ED90000D8077 /* Release */ = { | ||
465 | + isa = XCBuildConfiguration; | ||
466 | + baseConfigurationReference = 5BDBB5A6BD07C19C7C41277E /* Pods-InterQR-Internship.release.xcconfig */; | ||
467 | + buildSettings = { | ||
468 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
469 | + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||
470 | + CODE_SIGN_STYLE = Automatic; | ||
471 | + CURRENT_PROJECT_VERSION = 1; | ||
472 | + GENERATE_INFOPLIST_FILE = YES; | ||
473 | + INFOPLIST_FILE = "InterQR-Internship/Info.plist"; | ||
474 | + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
475 | + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; | ||
476 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
477 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
478 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
479 | + "$(inherited)", | ||
480 | + "@executable_path/Frameworks", | ||
481 | + ); | ||
482 | + MARKETING_VERSION = 1.0; | ||
483 | + PRODUCT_BUNDLE_IDENTIFIER = "com.TDY13.InterQR-Internship"; | ||
484 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
485 | + SWIFT_EMIT_LOC_STRINGS = YES; | ||
486 | + SWIFT_VERSION = 5.0; | ||
487 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
488 | + }; | ||
489 | + name = Release; | ||
490 | + }; | ||
491 | +/* End XCBuildConfiguration section */ | ||
492 | + | ||
493 | +/* Begin XCConfigurationList section */ | ||
494 | + 17CF9ED82844ED8F000D8077 /* Build configuration list for PBXProject "InterQR-Internship" */ = { | ||
495 | + isa = XCConfigurationList; | ||
496 | + buildConfigurations = ( | ||
497 | + 17CF9EEF2844ED90000D8077 /* Debug */, | ||
498 | + 17CF9EF02844ED90000D8077 /* Release */, | ||
499 | + ); | ||
500 | + defaultConfigurationIsVisible = 0; | ||
501 | + defaultConfigurationName = Release; | ||
502 | + }; | ||
503 | + 17CF9EF12844ED90000D8077 /* Build configuration list for PBXNativeTarget "InterQR-Internship" */ = { | ||
504 | + isa = XCConfigurationList; | ||
505 | + buildConfigurations = ( | ||
506 | + 17CF9EF22844ED90000D8077 /* Debug */, | ||
507 | + 17CF9EF32844ED90000D8077 /* Release */, | ||
508 | + ); | ||
509 | + defaultConfigurationIsVisible = 0; | ||
510 | + defaultConfigurationName = Release; | ||
511 | + }; | ||
512 | +/* End XCConfigurationList section */ | ||
513 | + }; | ||
514 | + rootObject = 17CF9ED52844ED8F000D8077 /* Project object */; | ||
515 | +} |
InterQR-Internship.xcodeproj/xcuserdata/tdy_13.xcuserdatad/xcschemes/xcschememanagement.plist
0 → 100644
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>SchemeUserState</key> | ||
6 | + <dict> | ||
7 | + <key>InterQR-Internship.xcscheme_^#shared#^_</key> | ||
8 | + <dict> | ||
9 | + <key>orderHint</key> | ||
10 | + <integer>2</integer> | ||
11 | + </dict> | ||
12 | + </dict> | ||
13 | +</dict> | ||
14 | +</plist> |
InterQR-Internship/AppDelegate.swift
0 → 100644
1 | +// | ||
2 | +// AppDelegate.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 30.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +@main | ||
11 | +class AppDelegate: UIResponder, UIApplicationDelegate { | ||
12 | + | ||
13 | + | ||
14 | + | ||
15 | + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { | ||
16 | + // Override point for customization after application launch. | ||
17 | + return true | ||
18 | + } | ||
19 | + | ||
20 | + // MARK: UISceneSession Lifecycle | ||
21 | + | ||
22 | + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { | ||
23 | + // Called when a new scene session is being created. | ||
24 | + // Use this method to select a configuration to create the new scene with. | ||
25 | + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) | ||
26 | + } | ||
27 | + | ||
28 | + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { | ||
29 | + // Called when the user discards a scene session. | ||
30 | + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. | ||
31 | + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. | ||
32 | + } | ||
33 | + | ||
34 | + | ||
35 | +} | ||
36 | + |
14.9 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "AUS.png", | ||
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 | +} |
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 | +} |
414 Bytes
580 Bytes
239 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "BackPointer.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Arrow - Left 2@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Arrow - Left 2@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "FlagPointer.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Stroke 1@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Stroke 1@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
251 Bytes
287 Bytes
343 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "GB.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "icons8-великобритания-48.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "icons8-великобритания-96.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
871 Bytes
1.98 KB
4.07 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "InterQR.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Group 33497-2.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Group 33497-3.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
3.84 KB
6.25 KB
1.83 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Lock.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Lock@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Lock@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
21.5 KB
71.8 KB
151 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "OffIndicator.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Ellipse 1@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Ellipse 1@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
1.23 KB
1.75 KB
602 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "OnIndicator.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Group 1@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Group 1@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
1.01 KB
1.43 KB
567 Bytes
756 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Pointer.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Arrow - Right Circle@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Arrow - Right Circle@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
417 Bytes
2.97 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "8D57D412-3800-4D7C-922A-FF392EC0594E_4_5005_c.jpeg", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Rectangle@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Rectangle@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
82.5 KB
182 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "RectangleWithShadow.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Rectangle@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Rectangle@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
34.6 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Shield.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Mask Group@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Mask Group@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
72.8 KB
150 KB
22.8 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Tick.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Stroke 3@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Stroke 3@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
309 Bytes
404 Bytes
237 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "USA.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Icons@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Icons@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
2.14 KB
3.18 KB
1.02 KB
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||
3 | + <dependencies> | ||
4 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> | ||
5 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
6 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
7 | + </dependencies> | ||
8 | + <scenes> | ||
9 | + <!--View Controller--> | ||
10 | + <scene sceneID="EHf-IW-A2E"> | ||
11 | + <objects> | ||
12 | + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||
13 | + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||
14 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
15 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
16 | + <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
17 | + <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> | ||
18 | + </view> | ||
19 | + </viewController> | ||
20 | + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
21 | + </objects> | ||
22 | + <point key="canvasLocation" x="53" y="375"/> | ||
23 | + </scene> | ||
24 | + </scenes> | ||
25 | +</document> |
1 | +// | ||
2 | +// CodeVerificationViewController.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 03.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class CodeVerificationViewController: UIViewController { | ||
11 | + | ||
12 | + private let codeView = CodeVerificationView() | ||
13 | + | ||
14 | + override func loadView() { | ||
15 | + view = codeView | ||
16 | + } | ||
17 | + | ||
18 | + override func viewDidLoad() { | ||
19 | + initViewController() | ||
20 | + } | ||
21 | + | ||
22 | + private func initViewController() { | ||
23 | + codeView.firstTextField.delegate = self | ||
24 | + codeView.backButton.addTarget(self, action: #selector(didDismissVC), for: .touchUpInside) | ||
25 | + codeView.verifyButton.addTarget(self, action: #selector(didVerifyCode), for: .touchUpInside) | ||
26 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) | ||
27 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil) | ||
28 | + } | ||
29 | + | ||
30 | +// deinit { | ||
31 | +// NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) | ||
32 | +// NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) | ||
33 | +// } | ||
34 | +} | ||
35 | + | ||
36 | +extension CodeVerificationViewController { | ||
37 | + | ||
38 | + @objc func didDismissVC() { | ||
39 | + dismiss(animated: true, completion: nil) | ||
40 | + } | ||
41 | + | ||
42 | + @objc func didVerifyCode() { | ||
43 | + codeView.firstTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1) | ||
44 | + codeView.secondTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1) | ||
45 | + codeView.thirdTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1) | ||
46 | + codeView.fourthTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1) | ||
47 | + | ||
48 | + codeView.firstTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
49 | + codeView.secondTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
50 | + codeView.thirdTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
51 | + codeView.fourthTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
52 | + | ||
53 | + codeView.errorAlertLabel.isHidden = false | ||
54 | + } | ||
55 | + | ||
56 | + @objc func keyboardWillShow(notification: NSNotification) { | ||
57 | +// if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { | ||
58 | +// let keyboardHeight = keyboardFrame.cgRectValue.height | ||
59 | +// // let bottomSpace = | ||
60 | +// if self.view.frame.origin.y == 0 { | ||
61 | +// self.view.frame.origin.y -= keyboardFrame.height | ||
62 | +// } | ||
63 | + if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { | ||
64 | + if self.view.frame.origin.y == 0 { | ||
65 | +// self.view.frame.origin.y -= keyboardSize.height - 150 | ||
66 | + codeView.containerView.frame.origin.y -= keyboardSize.height - 150 | ||
67 | + codeView.shieldImage.frame.origin.x += view.frame.origin.x + 100 | ||
68 | + } | ||
69 | + } | ||
70 | + } | ||
71 | + | ||
72 | + @objc func keyboardWillHide() { | ||
73 | + if self.view.frame.origin.y != 0 { | ||
74 | + self.view.frame.origin.y = 0 | ||
75 | + } | ||
76 | + } | ||
77 | + | ||
78 | +} | ||
79 | + | ||
80 | +extension CodeVerificationViewController: UITextFieldDelegate { | ||
81 | + | ||
82 | + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { | ||
83 | + | ||
84 | + true | ||
85 | + } | ||
86 | +} |
1 | +// | ||
2 | +// ViewController.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 30.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class VerificationViewController: UIViewController { | ||
11 | + | ||
12 | + var isKeyboardAppear = false | ||
13 | + private let mainView = VerificationView() | ||
14 | + | ||
15 | + lazy var phonePickerModels: [PhonePickerModel] = { | ||
16 | + var models: [PhonePickerModel] = [] | ||
17 | + | ||
18 | + for (code, value) in PhoneService.phones | ||
19 | + { | ||
20 | + models.append(.init(code: code, countryCode: value.1, title: value.0, icon: value.2)) | ||
21 | + } | ||
22 | + return models | ||
23 | + }() | ||
24 | + | ||
25 | + override func loadView() { | ||
26 | + view = mainView | ||
27 | + } | ||
28 | + override func viewDidLoad() { | ||
29 | + super.viewDidLoad() | ||
30 | + initViewController() | ||
31 | + } | ||
32 | + | ||
33 | + | ||
34 | + private func initViewController() { | ||
35 | + mainView.phonePickerView.phoneNumberPicker.delegate = self | ||
36 | + mainView.phonePickerView.phoneNumberPicker.dataSource = self | ||
37 | + mainView.showPickerButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside) | ||
38 | + mainView.phonePickerView.selectButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside) | ||
39 | + mainView.phonePickerView.titleButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchDragInside) | ||
40 | + mainView.continueButton.addTarget(self, action: #selector(didShowCodeVerificationVC), for: .touchUpInside) | ||
41 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) | ||
42 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil) | ||
43 | + } | ||
44 | + | ||
45 | +} | ||
46 | + | ||
47 | +//MARK: targets | ||
48 | +extension VerificationViewController { | ||
49 | + // @objc private func didRadioButtonTapped(_ sender: UIButton) { | ||
50 | + // switch sender { | ||
51 | + // case mainView.phoneNumberButton : | ||
52 | + // mainView.emailButton.isSelected = false | ||
53 | + // mainView.phoneNumberButton.isSelected = true | ||
54 | + //// mainView.phonymberTextField.isHidden = false | ||
55 | + //// mainView.emailTextField.isHidden = true | ||
56 | + // case mainView.emailButton: | ||
57 | + // mainView.emailButton.isSelected = true | ||
58 | + // mainView.phoneNumberButton.isSelected = false | ||
59 | + // default: | ||
60 | + // return | ||
61 | + // } | ||
62 | + // } | ||
63 | + | ||
64 | + @objc private func didshowPickerButtonTapped(_ sender: UIButton) { | ||
65 | + mainView.isShow ? mainView.showPickerView() : mainView.hidePicerView() | ||
66 | + mainView.isShow.toggle() | ||
67 | + } | ||
68 | + | ||
69 | + @objc private func didShowCodeVerificationVC() { | ||
70 | + let vc = CodeVerificationViewController() | ||
71 | + vc.modalPresentationStyle = .fullScreen | ||
72 | + present(vc, animated: true) | ||
73 | + } | ||
74 | + | ||
75 | + @objc func keyboardWillShow(notification: NSNotification) { | ||
76 | + // if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { | ||
77 | + // let keyboardHeight = keyboardFrame.cgRectValue.height | ||
78 | + // // let bottomSpace = | ||
79 | + // if self.view.frame.origin.y == 0 { | ||
80 | + // self.view.frame.origin.y -= keyboardFrame.height | ||
81 | + // } | ||
82 | + // if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { | ||
83 | + // if self.view.frame.origin.y == 0 { | ||
84 | + // self.view.frame.origin.y -= keyboardSize.height - 150 | ||
85 | + // mainView.phoneTextField.frame.origin.y -= 60 | ||
86 | + // mainView.enterChosenAuthenticatorLabel.frame.origin.y -= 60 | ||
87 | + // codeView.shieldImage.frame.origin.x += view.frame.origin.x + 100 | ||
88 | + if !isKeyboardAppear { | ||
89 | + | ||
90 | + if mainView.phoneTextField.frame.origin.y == mainView.phoneTextField.frame.origin.y && mainView.enterChosenAuthenticatorLabel.frame.origin.y == mainView.enterChosenAuthenticatorLabel.frame.origin.y{ | ||
91 | + mainView.phoneTextField.frame.origin.y -= 100 | ||
92 | + mainView.emailTextField.frame.origin.y -= 100 | ||
93 | + mainView.enterChosenAuthenticatorLabel.frame.origin.y -= 100 | ||
94 | + mainView.chooseLabel.frame.origin.y -= 80 | ||
95 | + mainView.emailButton.frame.origin.y -= 80 | ||
96 | + mainView.phoneNumberButton.frame.origin.y -= 80 | ||
97 | + mainView.dividingLineView.frame.origin.y -= 80 | ||
98 | + } | ||
99 | + | ||
100 | + isKeyboardAppear = true | ||
101 | + } | ||
102 | + // } | ||
103 | + // } | ||
104 | + } | ||
105 | + | ||
106 | + @objc func keyboardWillHide(notification: NSNotification) { | ||
107 | + | ||
108 | + if isKeyboardAppear { | ||
109 | + | ||
110 | + if mainView.phoneTextField.frame.origin.y != 0 && mainView.enterChosenAuthenticatorLabel.frame.origin.y != 0{ | ||
111 | + mainView.phoneTextField.frame.origin.y += 100 | ||
112 | + mainView.emailTextField.frame.origin.y += 100 | ||
113 | + mainView.enterChosenAuthenticatorLabel.frame.origin.y += 100 | ||
114 | + mainView.chooseLabel.frame.origin.y += 80 | ||
115 | + mainView.emailButton.frame.origin.y += 80 | ||
116 | + mainView.phoneNumberButton.frame.origin.y += 80 | ||
117 | + mainView.dividingLineView.frame.origin.y += 80 | ||
118 | + } | ||
119 | + | ||
120 | + | ||
121 | + isKeyboardAppear = false | ||
122 | + } | ||
123 | + // mainView.phoneTextField.frame.origin.y += 60 | ||
124 | + // mainView.enterChosenAuthenticatorLabel.frame.origin.y += 60 | ||
125 | + | ||
126 | + } | ||
127 | +} | ||
128 | + | ||
129 | +//MARK: table view delegate and datasource | ||
130 | +extension VerificationViewController { | ||
131 | + | ||
132 | +} | ||
133 | + | ||
134 | +extension VerificationViewController: UIPickerViewDataSource, UIPickerViewDelegate { | ||
135 | + | ||
136 | + func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } | ||
137 | + | ||
138 | + func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { | ||
139 | + return phonePickerModels.count | ||
140 | + | ||
141 | + } | ||
142 | + | ||
143 | + func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { | ||
144 | + 60 | ||
145 | + } | ||
146 | + | ||
147 | + // func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { | ||
148 | + // return 130.0 | ||
149 | + // } | ||
150 | + | ||
151 | + func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { | ||
152 | + let model = phonePickerModels[row] | ||
153 | + return PickerView.create(icon: model.icon, title: model.title, code: model.countryCode) | ||
154 | + } | ||
155 | + | ||
156 | + func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { | ||
157 | + pickerView.subviews[1].backgroundColor = .clear | ||
158 | + let model = phonePickerModels[row] | ||
159 | + mainView.phoneTextField.text = "\(model.countryCode)" | ||
160 | + mainView.flagPickerView.image = model.icon | ||
161 | + } | ||
162 | +} | ||
163 | + |
InterQR-Internship/Info.plist
0 → 100644
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>UIAppFonts</key> | ||
6 | + <array> | ||
7 | + <string>Sk-Modernist-Bold.otf</string> | ||
8 | + <string>Sk-Modernist-Mono.otf</string> | ||
9 | + <string>Sk-Modernist-Regular.otf</string> | ||
10 | + </array> | ||
11 | + <key>UIApplicationSceneManifest</key> | ||
12 | + <dict> | ||
13 | + <key>UIApplicationSupportsMultipleScenes</key> | ||
14 | + <false/> | ||
15 | + <key>UISceneConfigurations</key> | ||
16 | + <dict> | ||
17 | + <key>UIWindowSceneSessionRoleApplication</key> | ||
18 | + <array> | ||
19 | + <dict> | ||
20 | + <key>UISceneConfigurationName</key> | ||
21 | + <string>Default Configuration</string> | ||
22 | + <key>UISceneDelegateClassName</key> | ||
23 | + <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> | ||
24 | + </dict> | ||
25 | + </array> | ||
26 | + </dict> | ||
27 | + </dict> | ||
28 | +</dict> | ||
29 | +</plist> |
InterQR-Internship/PhonePickerModel.swift
0 → 100644
1 | +// | ||
2 | +// PhonePickerModel.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 31.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import Foundation | ||
9 | +import UIKit | ||
10 | + | ||
11 | +struct PhonePickerModel { | ||
12 | + | ||
13 | + let code: String | ||
14 | + let countryCode: String | ||
15 | + let title: String | ||
16 | + let icon: UIImage | ||
17 | +} |
InterQR-Internship/PhoneService.swift
0 → 100644
1 | +// | ||
2 | +// PhoneService.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 31.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import Foundation | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class PhoneService { | ||
12 | + static var phones: [String: (String, String, UIImage)] = { | ||
13 | + var codes = [String: (String, String, UIImage)] () | ||
14 | + codes["USA"] = ("United States", "+1", UIImage(named: "USA") ?? UIImage()) | ||
15 | + codes["GB"] = ("Great Britain", "+123", UIImage(named: "GB") ?? UIImage()) | ||
16 | + codes["AUS"] = ("Australia", "+12", UIImage(named: "AUS") ?? UIImage()) | ||
17 | + return codes | ||
18 | + }() | ||
19 | +} |
InterQR-Internship/SceneDelegate.swift
0 → 100644
1 | +// | ||
2 | +// SceneDelegate.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 30.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | +import SnapKit | ||
10 | + | ||
11 | +class SceneDelegate: UIResponder, UIWindowSceneDelegate { | ||
12 | + | ||
13 | + var window: UIWindow? | ||
14 | + | ||
15 | + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { | ||
16 | + | ||
17 | + guard let windowScene = (scene as? UIWindowScene) else { return } | ||
18 | + window = UIWindow(windowScene: windowScene) | ||
19 | + let viewController = VerificationViewController() | ||
20 | + let navigation = UINavigationController(rootViewController: viewController) | ||
21 | + window?.rootViewController = navigation | ||
22 | + window?.makeKeyAndVisible() | ||
23 | + } | ||
24 | +} | ||
25 | + |
1 | +// | ||
2 | +// CodeVerificationView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 03.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class CodeVerificationView: UIView { | ||
11 | + | ||
12 | + var containerView: UIView = { | ||
13 | + var obj = UIView() | ||
14 | + return obj | ||
15 | + }() | ||
16 | + var backButton: UIButton = { | ||
17 | + var obj = UIButton() | ||
18 | + obj.setImage(UIImage(named: "BackPointer"), for: .normal) | ||
19 | + obj.backgroundColor = .white | ||
20 | + obj.layer.borderColor = UIColor(red: 224/255, green: 231/255, blue: 232/255, alpha: 1).cgColor | ||
21 | + obj.layer.cornerRadius = 13 | ||
22 | + obj.layer.borderWidth = 1 | ||
23 | + return obj | ||
24 | + }() | ||
25 | + var logoImage: UIImageView = { | ||
26 | + var obj = UIImageView() | ||
27 | + obj.image = UIImage(named: "InterQR") | ||
28 | + return obj | ||
29 | + }() | ||
30 | + var shieldImage: UIImageView = { | ||
31 | + var obj = UIImageView() | ||
32 | + obj.image = UIImage(named: "Lock") | ||
33 | + return obj | ||
34 | + }() | ||
35 | + var descriptionLabel: UILabel = { | ||
36 | + var obj = UILabel() | ||
37 | + obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 35) | ||
38 | + obj.text = "Enter your\nverification code" | ||
39 | + obj.numberOfLines = 2 | ||
40 | + return obj | ||
41 | + }() | ||
42 | + var firstTextField: UITextField = { | ||
43 | + var obj = UITextField() | ||
44 | + obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
45 | + obj.layer.cornerRadius = 15 | ||
46 | + obj.keyboardType = .numberPad | ||
47 | + obj.textAlignment = .center | ||
48 | + obj.textContentType = .oneTimeCode | ||
49 | + obj.becomeFirstResponder() | ||
50 | + return obj | ||
51 | + }() | ||
52 | + var secondTextField: UITextField = { | ||
53 | + var obj = UITextField() | ||
54 | + obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
55 | + obj.layer.cornerRadius = 15 | ||
56 | + obj.keyboardType = .numberPad | ||
57 | + obj.textAlignment = .center | ||
58 | + obj.textContentType = .oneTimeCode | ||
59 | + obj.isEnabled = false | ||
60 | + return obj | ||
61 | + }() | ||
62 | + var thirdTextField: UITextField = { | ||
63 | + var obj = UITextField() | ||
64 | + obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
65 | + obj.layer.cornerRadius = 15 | ||
66 | + obj.keyboardType = .numberPad | ||
67 | + obj.textAlignment = .center | ||
68 | + obj.textContentType = .oneTimeCode | ||
69 | + obj.isEnabled = false | ||
70 | + return obj | ||
71 | + }() | ||
72 | + var fourthTextField: UITextField = { | ||
73 | + var obj = UITextField() | ||
74 | + obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
75 | + obj.layer.cornerRadius = 15 | ||
76 | + obj.keyboardType = .numberPad | ||
77 | + obj.textAlignment = .center | ||
78 | + obj.textContentType = .oneTimeCode | ||
79 | + obj.isEnabled = false | ||
80 | + return obj | ||
81 | + }() | ||
82 | + var errorAlertLabel: UILabel = { | ||
83 | + var obj = UILabel() | ||
84 | + obj.text = "Please, enter valid verification code" | ||
85 | + obj.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 14) | ||
86 | + obj.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
87 | + obj.isHidden = true | ||
88 | + return obj | ||
89 | + }() | ||
90 | + var verifyButton: UIButton = { | ||
91 | + var obj = UIButton() | ||
92 | + obj.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) | ||
93 | + return obj | ||
94 | + }() | ||
95 | + var verifyLabel: UILabel = { | ||
96 | + var obj = UILabel() | ||
97 | + obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
98 | + obj.textColor = .white | ||
99 | + obj.text = "Verify" | ||
100 | + return obj | ||
101 | + }() | ||
102 | + var tickImage: UIImageView = { | ||
103 | + var obj = UIImageView() | ||
104 | + obj.image = UIImage(named: "Tick") | ||
105 | + return obj | ||
106 | + }() | ||
107 | + override init(frame: CGRect) { | ||
108 | + super.init(frame: frame) | ||
109 | + layout() | ||
110 | + } | ||
111 | + | ||
112 | + required init?(coder: NSCoder) { | ||
113 | + fatalError("init(coder:) has not been implemented") | ||
114 | + } | ||
115 | + | ||
116 | + func layout() { | ||
117 | + backgroundColor = .white | ||
118 | + addSubview(backButton) | ||
119 | + addSubview(logoImage) | ||
120 | + addSubview(shieldImage) | ||
121 | + addSubview(containerView) | ||
122 | + containerView.addSubview(descriptionLabel) | ||
123 | + containerView.addSubview(firstTextField) | ||
124 | + containerView.addSubview(secondTextField) | ||
125 | + containerView.addSubview(thirdTextField) | ||
126 | + containerView.addSubview(fourthTextField) | ||
127 | + containerView.addSubview(errorAlertLabel) | ||
128 | + containerView.addSubview(verifyButton) | ||
129 | + verifyButton.addSubview(verifyLabel) | ||
130 | + verifyButton.addSubview(tickImage) | ||
131 | + | ||
132 | + backButton.snp.makeConstraints { | ||
133 | + $0.top.equalTo(snp.top).offset(66) | ||
134 | + $0.leading.equalTo(snp.leading).offset(22) | ||
135 | + $0.height.width.equalTo(45) | ||
136 | + } | ||
137 | + logoImage.snp.makeConstraints { | ||
138 | + $0.leading.equalTo(backButton.snp.trailing).offset(20) | ||
139 | + $0.centerY.equalTo(backButton) | ||
140 | + } | ||
141 | + shieldImage.snp.makeConstraints { | ||
142 | + $0.top.equalTo(backButton.snp.bottom).offset(25) | ||
143 | + $0.centerX.equalTo(snp.centerX) | ||
144 | + } | ||
145 | + containerView.snp.makeConstraints { | ||
146 | + $0.top.equalTo(shieldImage.snp.bottom).offset(41) | ||
147 | + $0.leading.trailing.equalToSuperview() | ||
148 | + $0.height.equalTo(300) | ||
149 | + } | ||
150 | + descriptionLabel.snp.makeConstraints { | ||
151 | + $0.leading.equalTo(containerView.snp.leading).offset(20) | ||
152 | + $0.top.equalTo(containerView.snp.top) | ||
153 | + } | ||
154 | + firstTextField.snp.makeConstraints { | ||
155 | + $0.leading.equalTo(containerView.snp.leading).offset(25) | ||
156 | + $0.top.equalTo(descriptionLabel.snp.bottom).offset(28) | ||
157 | + $0.height.equalTo(55) | ||
158 | + } | ||
159 | + secondTextField.snp.makeConstraints { | ||
160 | + $0.leading.equalTo(firstTextField.snp.trailing).offset(12) | ||
161 | + $0.centerY.equalTo(firstTextField) | ||
162 | + $0.width.equalTo(firstTextField.snp.width) | ||
163 | + $0.height.equalTo(55) | ||
164 | + } | ||
165 | + thirdTextField.snp.makeConstraints { | ||
166 | + $0.leading.equalTo(secondTextField.snp.trailing).offset(12) | ||
167 | + $0.centerY.equalTo(firstTextField) | ||
168 | + $0.width.equalTo(firstTextField.snp.width) | ||
169 | + $0.height.equalTo(55) | ||
170 | + } | ||
171 | + fourthTextField.snp.makeConstraints { | ||
172 | + $0.leading.equalTo(thirdTextField.snp.trailing).offset(12) | ||
173 | + $0.centerY.equalTo(firstTextField) | ||
174 | + $0.trailing.equalTo(containerView.snp.trailing).offset(-25) | ||
175 | + $0.width.equalTo(firstTextField.snp.width) | ||
176 | + $0.height.equalTo(55) | ||
177 | + } | ||
178 | + errorAlertLabel.snp.makeConstraints { | ||
179 | + $0.top.equalTo(firstTextField.snp.bottom).offset(8) | ||
180 | + $0.leading.equalTo(firstTextField.snp.leading) | ||
181 | + } | ||
182 | + verifyButton.snp.makeConstraints { | ||
183 | + $0.top.equalTo(firstTextField.snp.bottom).offset(67) | ||
184 | + $0.left.right.equalToSuperview() | ||
185 | + } | ||
186 | + verifyLabel.snp.makeConstraints { | ||
187 | + $0.left.equalToSuperview().offset(49) | ||
188 | + $0.top.equalToSuperview().offset(22) | ||
189 | + } | ||
190 | + tickImage.snp.makeConstraints { | ||
191 | + $0.right.equalToSuperview().offset(-47) | ||
192 | + $0.centerY.equalTo(verifyLabel) | ||
193 | + } | ||
194 | + } | ||
195 | +} |
1 | +// | ||
2 | +// PhoneNumberView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 31.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | +import CoreTelephony | ||
10 | + | ||
11 | +class PhoneNumberView: UIView { | ||
12 | + | ||
13 | + var containerPickerView: UIView = { | ||
14 | + var view = UIView() | ||
15 | + view.backgroundColor = .systemRed | ||
16 | + return view | ||
17 | + }() | ||
18 | + | ||
19 | + var titleButton: UIButton = { | ||
20 | + var obj = UIButton() | ||
21 | + obj.setTitle("Select your country", for: .normal) | ||
22 | + obj.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal) | ||
23 | + obj.titleLabel?.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 18) | ||
24 | + obj.titleLabel?.textAlignment = .center | ||
25 | + return obj | ||
26 | + }() | ||
27 | + | ||
28 | + var dividingLineView: UIView = { | ||
29 | + var view = UIView() | ||
30 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
31 | + return view | ||
32 | + }() | ||
33 | + | ||
34 | + var phoneNumberPicker: UIPickerView = { | ||
35 | + var picker = UIPickerView() | ||
36 | + return picker | ||
37 | + }() | ||
38 | + | ||
39 | + var selectButton: UIButton = { | ||
40 | + var button = UIButton() | ||
41 | + | ||
42 | + button.backgroundColor = UIColor(red: 2/255, green: 115/255, blue: 185/255, alpha: 1) | ||
43 | + button.clipsToBounds = true | ||
44 | + | ||
45 | + return button | ||
46 | + }() | ||
47 | + | ||
48 | + var selectLabel: UILabel = { | ||
49 | + var label = UILabel() | ||
50 | + label.text = "Select" | ||
51 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
52 | + label.textColor = .white | ||
53 | + return label | ||
54 | + }() | ||
55 | + | ||
56 | + override init(frame: CGRect) { | ||
57 | + super.init(frame: frame) | ||
58 | + layout() | ||
59 | + setup() | ||
60 | + backgroundColor = .white | ||
61 | + } | ||
62 | + | ||
63 | + required init?(coder: NSCoder) { | ||
64 | + fatalError("init(coder:) has not been implemented") | ||
65 | + } | ||
66 | + | ||
67 | + func layout() { | ||
68 | + self.backgroundColor = .white | ||
69 | + addSubview(titleButton) | ||
70 | + addSubview(dividingLineView) | ||
71 | + addSubview(phoneNumberPicker) | ||
72 | + addSubview(selectButton) | ||
73 | + | ||
74 | + selectButton.addSubview(selectLabel) | ||
75 | + | ||
76 | + titleButton.snp.makeConstraints { make in | ||
77 | + make.top.equalToSuperview().offset(20) | ||
78 | + make.leading.trailing.equalToSuperview() | ||
79 | + } | ||
80 | + | ||
81 | + dividingLineView.snp.makeConstraints { | ||
82 | + $0.left.right.equalToSuperview() | ||
83 | + $0.height.equalTo(1) | ||
84 | + $0.top.equalTo(titleButton.snp.bottom).offset(22) | ||
85 | + } | ||
86 | + phoneNumberPicker.snp.makeConstraints { | ||
87 | + $0.left.right.equalToSuperview().inset(5) | ||
88 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(20) | ||
89 | + } | ||
90 | + selectButton.snp.makeConstraints { | ||
91 | + $0.right.equalToSuperview() | ||
92 | + $0.left.equalToSuperview() | ||
93 | + $0.bottom.equalToSuperview() | ||
94 | + $0.height.equalTo(70) | ||
95 | + $0.top.equalTo(phoneNumberPicker.snp.bottom).offset(20) | ||
96 | + } | ||
97 | + selectLabel.snp.makeConstraints { | ||
98 | + $0.centerX.equalTo(selectButton.snp.centerX) | ||
99 | + $0.top.equalTo(selectButton.snp.top).offset(20) | ||
100 | + } | ||
101 | + } | ||
102 | +} | ||
103 | + | ||
104 | +extension PhoneNumberView { | ||
105 | + | ||
106 | + func setup() { | ||
107 | + | ||
108 | + let countryCode: String | ||
109 | + if let carrier = CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.first?.value, | ||
110 | + let code = carrier.isoCountryCode?.uppercased() { | ||
111 | + countryCode = code | ||
112 | + } else { | ||
113 | + countryCode = "USA" | ||
114 | + } | ||
115 | + | ||
116 | + phoneNumberPicker.selectRow(0, inComponent: 0, animated: true) | ||
117 | + | ||
118 | + phoneNumberPicker.subviews[1].backgroundColor = .clear | ||
119 | + | ||
120 | + } | ||
121 | +} | ||
122 | + |
1 | +// | ||
2 | +// PickerView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 01.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +final class PickerView: UIView { | ||
11 | + | ||
12 | + private let iconView: UIImageView = { | ||
13 | + var obj = UIImageView() | ||
14 | + obj.contentMode = .scaleAspectFill | ||
15 | + obj.layer.cornerRadius = 10 | ||
16 | + return obj | ||
17 | + }() | ||
18 | + private let label: UILabel = { | ||
19 | + var obj = UILabel() | ||
20 | + obj.textColor = UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1) | ||
21 | + obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 15) | ||
22 | + return obj | ||
23 | + }() | ||
24 | + private let countryCode: UILabel = { | ||
25 | + var obj = UILabel() | ||
26 | + obj.textColor = UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1) | ||
27 | + obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 15) | ||
28 | + return obj | ||
29 | + }() | ||
30 | + override init(frame: CGRect) { | ||
31 | + super.init(frame: frame) | ||
32 | + layout() | ||
33 | + } | ||
34 | + | ||
35 | + required init?(coder: NSCoder) { | ||
36 | + super.init(coder: coder) | ||
37 | + layout() | ||
38 | + } | ||
39 | + | ||
40 | + private func layout() { | ||
41 | + addSubview(iconView) | ||
42 | + addSubview(label) | ||
43 | + addSubview(countryCode) | ||
44 | + | ||
45 | + iconView.snp.makeConstraints { make in | ||
46 | + make.leading.equalToSuperview().offset(25) | ||
47 | + make.centerY.equalTo(snp.centerY) | ||
48 | +// make.top.bottom.equalToSuperview() | ||
49 | + make.height.width.equalTo(20) | ||
50 | + } | ||
51 | + | ||
52 | + label.snp.makeConstraints { make in | ||
53 | + make.leading.equalTo(iconView.snp.trailing).offset(20) | ||
54 | + make.top.bottom.equalToSuperview() | ||
55 | + } | ||
56 | + | ||
57 | + countryCode.snp.makeConstraints { make in | ||
58 | + make.trailing.equalToSuperview().offset(-25) | ||
59 | + make.top.bottom.equalToSuperview() | ||
60 | + } | ||
61 | + } | ||
62 | + | ||
63 | + static func create(icon: UIImage, title: String, code: String) -> PickerView { | ||
64 | + let numberView = PickerView() | ||
65 | + numberView.iconView.image = icon | ||
66 | + numberView.label.text = title | ||
67 | + numberView.countryCode.text = code | ||
68 | + return numberView | ||
69 | + } | ||
70 | +} |
1 | +// | ||
2 | +// TextFieldWithPadding.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 01.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class TextFieldWithPadding: UITextField { | ||
11 | + | ||
12 | + var textPaddingForEmail = UIEdgeInsets( | ||
13 | + top: 0, | ||
14 | + left: 22, | ||
15 | + bottom: 0, | ||
16 | + right: 22 | ||
17 | + ) | ||
18 | + var textPaddingForPhone = UIEdgeInsets( | ||
19 | + top: 0, | ||
20 | + left: 78, | ||
21 | + bottom: 0, | ||
22 | + right: 22 | ||
23 | + ) | ||
24 | + | ||
25 | + override func textRect(forBounds bounds: CGRect) -> CGRect { | ||
26 | + let rect = super.textRect(forBounds: bounds) | ||
27 | + return rect.inset(by: textPaddingForPhone) | ||
28 | + } | ||
29 | + | ||
30 | + override func editingRect(forBounds bounds: CGRect) -> CGRect { | ||
31 | + let rect = super.editingRect(forBounds: bounds) | ||
32 | + return rect.inset(by: textPaddingForPhone) | ||
33 | + } | ||
34 | +} |
1 | +// | ||
2 | +// VerificationView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 30.05.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import Foundation | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class VerificationView: UIView { | ||
12 | + | ||
13 | + var isShow: Bool = false | ||
14 | + | ||
15 | + var logoImage: UIImageView = { | ||
16 | + var view = UIImageView() | ||
17 | + view.image = UIImage(named: "InterQR") | ||
18 | + return view | ||
19 | + }() | ||
20 | + var greetingsLabel: UILabel = { | ||
21 | + var label = UILabel() | ||
22 | + label.text = "Hello" | ||
23 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 35) | ||
24 | + return label | ||
25 | + }() | ||
26 | + var verifyLabel: UILabel = { | ||
27 | + var label = UILabel() | ||
28 | + label.text = "Lets verify your \naccount" | ||
29 | + label.numberOfLines = 2 | ||
30 | + label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 28) | ||
31 | + return label | ||
32 | + }() | ||
33 | + var shieldImage: UIImageView = { | ||
34 | + var view = UIImageView() | ||
35 | + view.image = UIImage(named: "Shield") | ||
36 | + return view | ||
37 | + }() | ||
38 | + var chooseLabel: UILabel = { | ||
39 | + var label = UILabel() | ||
40 | + label.text = "Choose what to start with" | ||
41 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
42 | + label.font = .systemFont(ofSize: 16, weight: .bold) | ||
43 | + return label | ||
44 | + }() | ||
45 | + var emailButton: UIButton = { | ||
46 | + var button = UIButton() | ||
47 | + button.setTitle("Email", for: .normal) | ||
48 | + button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal) | ||
49 | + button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled) | ||
50 | + button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 14) | ||
51 | + button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 0) | ||
52 | + button.setImage(UIImage(named: "OnIndicator"), for: .normal) | ||
53 | + button.setImage(UIImage(named: "OffIndicator"), for: .selected) | ||
54 | + button.contentMode = .left | ||
55 | + return button | ||
56 | + }() | ||
57 | +// var emailIndicatorImage: UIImageView = { | ||
58 | +// var image = UIImageView() | ||
59 | +// image.image = UIImage(named: "OnIndicator") | ||
60 | +// return image | ||
61 | +// }() | ||
62 | + var phoneNumberButton: UIButton = { | ||
63 | + var button = UIButton() | ||
64 | + button.setTitle("Phone Number", for: .normal) | ||
65 | + button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal) | ||
66 | + button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled) | ||
67 | + button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 14) | ||
68 | + button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 10) | ||
69 | + button.setImage(UIImage(named: "OnIndicator"), for: .selected) | ||
70 | + button.setImage(UIImage(named: "OffIndicator"), for: .normal) | ||
71 | + return button | ||
72 | + }() | ||
73 | +// var phoneNumberIndicatorImage: UIImageView = { | ||
74 | +// var image = UIImageView() | ||
75 | +// image.image = UIImage(named: "OffIndicator") | ||
76 | +// return image | ||
77 | +// }() | ||
78 | +// var pickEmailLabel: UILabel = { | ||
79 | +// var label = UILabel() | ||
80 | +// label.text = "Email" | ||
81 | +// label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
82 | +// return label | ||
83 | +// }() | ||
84 | +// var pickPhoneLabel: UILabel = { | ||
85 | +// var label = UILabel() | ||
86 | +// label.text = "Phone Number" | ||
87 | +// label.textColor = UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1) | ||
88 | +// label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
89 | +// return label | ||
90 | +// }() | ||
91 | + var dividingLineView: UIView = { | ||
92 | + var view = UIView() | ||
93 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
94 | + return view | ||
95 | + }() | ||
96 | + var enterChosenAuthenticatorLabel: UILabel = { | ||
97 | + var label = UILabel() | ||
98 | + label.text = "Enter your email address" | ||
99 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
100 | + return label | ||
101 | + }() | ||
102 | + var emailTextField: UITextField = { | ||
103 | + var textField = UITextField() | ||
104 | + textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
105 | + textField.textAlignment = .left | ||
106 | + textField.layer.cornerRadius = 15 | ||
107 | + textField.keyboardType = .emailAddress | ||
108 | + textField.placeholder = "Example: john.doe@gmail.com" | ||
109 | + textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
110 | + textField.layer.masksToBounds = true | ||
111 | + textField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 22, height: textField.frame.height)) | ||
112 | + textField.leftViewMode = .always | ||
113 | + return textField | ||
114 | + }() | ||
115 | + var phoneTextField: TextFieldWithPadding = { | ||
116 | + var textField = TextFieldWithPadding() | ||
117 | + textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
118 | + textField.textAlignment = .left | ||
119 | + textField.layer.cornerRadius = 15 | ||
120 | + textField.keyboardType = .numberPad | ||
121 | + textField.text = "+1" | ||
122 | + textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
123 | + textField.layer.masksToBounds = true | ||
124 | + textField.isHidden = true | ||
125 | + return textField | ||
126 | + }() | ||
127 | + var verificationDescriptionLabel: UILabel = { | ||
128 | + var label = UILabel() | ||
129 | + label.numberOfLines = 0 | ||
130 | + label.text = "Verification code will be sent to your e-mail" | ||
131 | + label.font = UIFont(name: "Sk-Modernist", size: 14) | ||
132 | + label.font = .systemFont(ofSize: 14, weight: .regular) | ||
133 | + return label | ||
134 | + }() | ||
135 | + var continueButton: UIButton = { | ||
136 | + var button = UIButton() | ||
137 | + button.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) | ||
138 | + button.clipsToBounds = true | ||
139 | + button.contentMode = .scaleAspectFit | ||
140 | + button.layer.cornerRadius = 15 | ||
141 | + return button | ||
142 | + }() | ||
143 | + var continueLabel: UILabel = { | ||
144 | + var label = UILabel() | ||
145 | + label.text = "Continue" | ||
146 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
147 | + label.textColor = .white | ||
148 | + return label | ||
149 | + }() | ||
150 | + var pointerImage: UIImageView = { | ||
151 | + var image = UIImageView() | ||
152 | + image.image = UIImage(named: "Pointer") | ||
153 | + return image | ||
154 | + }() | ||
155 | + var phonePickerView: PhoneNumberView = { | ||
156 | + var view = PhoneNumberView() | ||
157 | + view.isUserInteractionEnabled = true | ||
158 | + return view | ||
159 | + }() | ||
160 | + var showPickerButton: UIButton = { | ||
161 | + var button = UIButton() | ||
162 | + button.isHidden = true | ||
163 | + return button | ||
164 | + }() | ||
165 | + var flagPickerView: UIImageView = { | ||
166 | + var image = UIImageView() | ||
167 | + image.image = UIImage(named: "USA") | ||
168 | + image.layer.cornerRadius = 11 | ||
169 | + image.contentMode = .scaleAspectFit | ||
170 | + return image | ||
171 | + }() | ||
172 | + var flagPointerView: UIImageView = { | ||
173 | + var image = UIImageView() | ||
174 | + image.image = UIImage(named: "FlagPointer") | ||
175 | + return image | ||
176 | + }() | ||
177 | + | ||
178 | + override init(frame: CGRect) { | ||
179 | + super.init(frame: frame) | ||
180 | + backgroundColor = .white | ||
181 | + layout() | ||
182 | + phoneNumberButton.addTarget(self, action: #selector(choosePhoneCode), for: .touchUpInside) | ||
183 | + emailButton.addTarget(self, action: #selector(chooseEmail), for: .touchUpInside) | ||
184 | + } | ||
185 | + | ||
186 | + required init?(coder: NSCoder) { | ||
187 | + fatalError("init(coder:) has not been implemented") | ||
188 | + } | ||
189 | + | ||
190 | + func layout() { | ||
191 | + | ||
192 | + addSubview(logoImage) | ||
193 | + addSubview(greetingsLabel) | ||
194 | + addSubview(verifyLabel) | ||
195 | + addSubview(shieldImage) | ||
196 | + | ||
197 | + addSubview(chooseLabel) | ||
198 | + addSubview(emailButton) | ||
199 | + addSubview(phoneNumberButton) | ||
200 | +// phoneNumberButton.addSubview(pickPhoneLabel) | ||
201 | +// phoneNumberButton.addSubview(phoneNumberIndicatorImage) | ||
202 | + addSubview(dividingLineView) | ||
203 | + | ||
204 | + addSubview(enterChosenAuthenticatorLabel) | ||
205 | + addSubview(emailTextField) | ||
206 | + addSubview(phoneTextField) | ||
207 | + addSubview(verificationDescriptionLabel) | ||
208 | + phoneTextField.addSubview(showPickerButton) | ||
209 | + | ||
210 | + showPickerButton.addSubview(flagPickerView) | ||
211 | + showPickerButton.addSubview(flagPointerView) | ||
212 | + | ||
213 | + addSubview(continueButton) | ||
214 | + continueButton.addSubview(continueLabel) | ||
215 | + continueButton.addSubview(pointerImage) | ||
216 | + | ||
217 | + addSubview(phonePickerView) | ||
218 | + | ||
219 | + logoImage.snp.makeConstraints { | ||
220 | + $0.top.equalTo(snp.top).offset(80) | ||
221 | + $0.left.equalTo(snp.left).offset(27) | ||
222 | + } | ||
223 | + greetingsLabel.snp.makeConstraints { | ||
224 | + $0.top.equalTo(logoImage.snp.bottom).offset(42) | ||
225 | + $0.left.equalTo(snp.left).offset(24) | ||
226 | + } | ||
227 | + shieldImage.snp.makeConstraints { | ||
228 | + $0.right.equalToSuperview() | ||
229 | + $0.top.equalTo(logoImage.snp.bottom).offset(27) | ||
230 | + } | ||
231 | + verifyLabel.snp.makeConstraints { | ||
232 | + $0.left.equalTo(27) | ||
233 | + $0.top.equalTo(greetingsLabel.snp.bottom).offset(10) | ||
234 | + } | ||
235 | + chooseLabel.snp.makeConstraints { | ||
236 | + $0.top.equalTo(shieldImage.snp.bottom).offset(52) | ||
237 | + $0.left.equalTo(snp.left).offset(27) | ||
238 | + } | ||
239 | + emailButton.snp.makeConstraints { | ||
240 | + $0.left.equalTo(snp.left).offset(27) | ||
241 | + $0.top.equalTo(chooseLabel.snp.bottom).offset(29) | ||
242 | + $0.height.equalTo(20) | ||
243 | + } | ||
244 | + phoneNumberButton.snp.makeConstraints { | ||
245 | + $0.top.equalTo(emailButton.snp.top) | ||
246 | + $0.height.equalTo(20) | ||
247 | + $0.left.equalTo(snp.left).offset(144) | ||
248 | + } | ||
249 | + dividingLineView.snp.makeConstraints { | ||
250 | + $0.left.right.equalToSuperview() | ||
251 | + $0.top.equalTo(emailButton.snp.bottom).offset(41) | ||
252 | + $0.height.equalTo(1) | ||
253 | + } | ||
254 | + enterChosenAuthenticatorLabel.snp.makeConstraints { | ||
255 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(39) | ||
256 | + $0.left.equalTo(logoImage.snp.left) | ||
257 | + } | ||
258 | + emailTextField.snp.makeConstraints { | ||
259 | + $0.left.equalTo(logoImage.snp.left) | ||
260 | + $0.right.equalTo(snp.right).offset(-27) | ||
261 | + $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23) | ||
262 | + $0.height.equalTo(57) | ||
263 | + } | ||
264 | + phoneTextField.snp.makeConstraints { | ||
265 | + $0.left.equalTo(logoImage.snp.left) | ||
266 | + $0.right.equalTo(snp.right).offset(-27) | ||
267 | + $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23) | ||
268 | + $0.height.equalTo(57) | ||
269 | + } | ||
270 | + verificationDescriptionLabel.snp.makeConstraints { | ||
271 | + $0.top.equalTo(emailTextField.snp.bottom).offset(8) | ||
272 | + $0.left.equalTo(snp.left).offset(46) | ||
273 | + $0.right.equalTo(snp.right).offset(-22) | ||
274 | + } | ||
275 | + continueButton.snp.makeConstraints { | ||
276 | + $0.left.equalTo(snp.left) | ||
277 | + $0.right.equalTo(snp.right) | ||
278 | + $0.top.equalTo(emailTextField.snp.bottom).offset(90) | ||
279 | + $0.height.equalTo(125) | ||
280 | + } | ||
281 | + continueLabel.snp.makeConstraints { | ||
282 | + $0.left.equalTo(snp.left).offset(48) | ||
283 | + $0.top.equalTo(continueButton.snp.top).offset(33) | ||
284 | + } | ||
285 | + pointerImage.snp.makeConstraints { | ||
286 | + $0.top.equalTo(continueButton.snp.top).offset(31) | ||
287 | + $0.right.equalTo(snp.right).offset(-51.5) | ||
288 | + } | ||
289 | + phonePickerView.snp.makeConstraints { make in | ||
290 | + make.leading.trailing.equalToSuperview() | ||
291 | + make.height.equalTo(390) | ||
292 | + make.top.equalTo(self.snp.bottom) | ||
293 | + } | ||
294 | + showPickerButton.snp.makeConstraints { | ||
295 | + $0.height.equalTo(22) | ||
296 | + $0.width.equalTo(50) | ||
297 | + $0.left.equalTo(emailTextField.snp.left).offset(22) | ||
298 | + $0.top.equalTo(emailTextField.snp.top).offset(18) | ||
299 | + } | ||
300 | + flagPickerView.snp.makeConstraints { | ||
301 | + $0.left.equalToSuperview() | ||
302 | + $0.top.equalToSuperview() | ||
303 | + $0.height.width.equalTo(20) | ||
304 | + $0.centerY.equalTo(showPickerButton.snp.centerY) | ||
305 | + } | ||
306 | + flagPointerView.snp.makeConstraints { | ||
307 | + $0.left.equalTo(flagPickerView.snp.right).offset(10) | ||
308 | + $0.centerYWithinMargins.equalTo(flagPickerView.snp.centerYWithinMargins) | ||
309 | + } | ||
310 | + } | ||
311 | + | ||
312 | + @objc func choosePhoneCode() { | ||
313 | + emailTextField.isHidden = true | ||
314 | + phoneTextField.isHidden = false | ||
315 | + phoneNumberButton.isSelected = true | ||
316 | + emailButton.isSelected = true | ||
317 | +// phoneNumberButton.setImage(UIImage(named: "OnIndicator"), for: .normal) | ||
318 | +// emailButton.setImage(UIImage(named: "OffIndicator"), for: .normal) | ||
319 | + phoneNumberButton.image(for: .normal) | ||
320 | + verificationDescriptionLabel.text = "Verification code will be sent to\nyour phone number" | ||
321 | + enterChosenAuthenticatorLabel.text = "Enter your phone number" | ||
322 | + emailTextField.text = "+1" | ||
323 | + showPickerButton.isHidden = false | ||
324 | + emailTextField.keyboardType = .numberPad | ||
325 | + } | ||
326 | + | ||
327 | + @objc func chooseEmail() { | ||
328 | + emailTextField.isHidden = false | ||
329 | + phoneTextField.isHidden = true | ||
330 | + phoneNumberButton.isSelected = false | ||
331 | + emailButton.isSelected = false | ||
332 | + verificationDescriptionLabel.text = "Verification code will be sent to your e-mail" | ||
333 | + enterChosenAuthenticatorLabel.text = "Enter your email address" | ||
334 | + emailTextField.text = "" | ||
335 | + emailTextField.placeholder = "Example: john.doe@gmail.com" | ||
336 | + showPickerButton.isHidden = true | ||
337 | + } | ||
338 | + | ||
339 | + func showPickerView() { | ||
340 | + UIView.animate(withDuration: 0.3) { | ||
341 | + self.phonePickerView.snp.updateConstraints { make in | ||
342 | + make.top.equalTo(self.snp.bottom).offset(-390) | ||
343 | + | ||
344 | + } | ||
345 | + self.layoutIfNeeded() | ||
346 | + } | ||
347 | + | ||
348 | + } | ||
349 | + | ||
350 | + func hidePicerView() { | ||
351 | + UIView.animate(withDuration: 0.3) { | ||
352 | + self.phonePickerView.snp.updateConstraints { make in | ||
353 | + make.top.equalTo(self.snp.bottom).offset(0) | ||
354 | + } | ||
355 | + self.layoutIfNeeded() | ||
356 | + } | ||
357 | + } | ||
358 | +} |
Podfile
0 → 100644
Podfile.lock
0 → 100644
Pods/Manifest.lock
0 → 100644
Pods/Pods.xcodeproj/project.pbxproj
0 → 100644
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 55; | ||
7 | + objects = { | ||
8 | + | ||
9 | +/* Begin PBXBuildFile section */ | ||
10 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */; }; | ||
11 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */; }; | ||
12 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */; }; | ||
13 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */; }; | ||
14 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */; }; | ||
15 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */; }; | ||
16 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */; }; | ||
17 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */; }; | ||
18 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */; }; | ||
19 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */; }; | ||
20 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */; }; | ||
21 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */; }; | ||
22 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */; }; | ||
23 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */; }; | ||
24 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */; }; | ||
25 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */; }; | ||
26 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */; }; | ||
27 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */; }; | ||
28 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */; }; | ||
29 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */; }; | ||
30 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */; }; | ||
31 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */; }; | ||
32 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | ||
33 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */; }; | ||
34 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | ||
35 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */; }; | ||
36 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */; }; | ||
37 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */; }; | ||
38 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */; }; | ||
39 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */; }; | ||
40 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */; }; | ||
41 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | ||
42 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */; }; | ||
43 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */; }; | ||
44 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | ||
45 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */; }; | ||
46 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */; }; | ||
47 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */; }; | ||
48 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */; }; | ||
49 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */; }; | ||
50 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */; }; | ||
51 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */; }; | ||
52 | +/* End PBXBuildFile section */ | ||
53 | + | ||
54 | +/* Begin PBXContainerItemProxy section */ | ||
55 | + 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */ = { | ||
56 | + isa = PBXContainerItemProxy; | ||
57 | + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; | ||
58 | + proxyType = 1; | ||
59 | + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; | ||
60 | + remoteInfo = SnapKit; | ||
61 | + }; | ||
62 | +/* End PBXContainerItemProxy section */ | ||
63 | + | ||
64 | +/* Begin PBXFileReference section */ | ||
65 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = "<group>"; }; | ||
66 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = "<group>"; }; | ||
67 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = "<group>"; }; | ||
68 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = "<group>"; }; | ||
69 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = "<group>"; }; | ||
70 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-InterQR-Internship-umbrella.h"; sourceTree = "<group>"; }; | ||
71 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = "<group>"; }; | ||
72 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = "<group>"; }; | ||
73 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = "<group>"; }; | ||
74 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = "<group>"; }; | ||
75 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = "<group>"; }; | ||
76 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = "<group>"; }; | ||
77 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = "<group>"; }; | ||
78 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = "<group>"; }; | ||
79 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-InterQR-Internship-frameworks.sh"; sourceTree = "<group>"; }; | ||
80 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = "<group>"; }; | ||
81 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = "<group>"; }; | ||
82 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = "<group>"; }; | ||
83 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-acknowledgements.plist"; sourceTree = "<group>"; }; | ||
84 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = "<group>"; }; | ||
85 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = "<group>"; }; | ||
86 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = "<group>"; }; | ||
87 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = "<group>"; }; | ||
88 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; | ||
89 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = "<group>"; }; | ||
90 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = "<group>"; }; | ||
91 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = "<group>"; }; | ||
92 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = "<group>"; }; | ||
93 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-InterQR-Internship-acknowledgements.markdown"; sourceTree = "<group>"; }; | ||
94 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-Info.plist"; sourceTree = "<group>"; }; | ||
95 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Source/ConstraintDirectionalInsets.swift; sourceTree = "<group>"; }; | ||
96 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = "<group>"; }; | ||
97 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = "<group>"; }; | ||
98 | + 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
99 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.release.xcconfig"; sourceTree = "<group>"; }; | ||
100 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; | ||
101 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = "<group>"; }; | ||
102 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = "<group>"; }; | ||
103 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Source/ConstraintDirectionalInsetTarget.swift; sourceTree = "<group>"; }; | ||
104 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-InterQR-Internship"; path = Pods_InterQR_Internship.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
105 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = "<group>"; }; | ||
106 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = "<group>"; }; | ||
107 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = "<group>"; }; | ||
108 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = "<group>"; }; | ||
109 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-InterQR-Internship-dummy.m"; sourceTree = "<group>"; }; | ||
110 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = "<group>"; }; | ||
111 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = "<group>"; }; | ||
112 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = "<group>"; }; | ||
113 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = "<group>"; }; | ||
114 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = "<group>"; }; | ||
115 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = "<group>"; }; | ||
116 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.debug.xcconfig"; sourceTree = "<group>"; }; | ||
117 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = "<group>"; }; | ||
118 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = "<group>"; }; | ||
119 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-InterQR-Internship.modulemap"; sourceTree = "<group>"; }; | ||
120 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = "<group>"; }; | ||
121 | +/* End PBXFileReference section */ | ||
122 | + | ||
123 | +/* Begin PBXFrameworksBuildPhase section */ | ||
124 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */ = { | ||
125 | + isa = PBXFrameworksBuildPhase; | ||
126 | + buildActionMask = 2147483647; | ||
127 | + files = ( | ||
128 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */, | ||
129 | + ); | ||
130 | + runOnlyForDeploymentPostprocessing = 0; | ||
131 | + }; | ||
132 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */ = { | ||
133 | + isa = PBXFrameworksBuildPhase; | ||
134 | + buildActionMask = 2147483647; | ||
135 | + files = ( | ||
136 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */, | ||
137 | + ); | ||
138 | + runOnlyForDeploymentPostprocessing = 0; | ||
139 | + }; | ||
140 | +/* End PBXFrameworksBuildPhase section */ | ||
141 | + | ||
142 | +/* Begin PBXGroup section */ | ||
143 | + 578452D2E740E91742655AC8F1636D1F /* iOS */ = { | ||
144 | + isa = PBXGroup; | ||
145 | + children = ( | ||
146 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, | ||
147 | + ); | ||
148 | + name = iOS; | ||
149 | + sourceTree = "<group>"; | ||
150 | + }; | ||
151 | + 6CD2077814608664B890545761124450 /* Targets Support Files */ = { | ||
152 | + isa = PBXGroup; | ||
153 | + children = ( | ||
154 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */, | ||
155 | + ); | ||
156 | + name = "Targets Support Files"; | ||
157 | + sourceTree = "<group>"; | ||
158 | + }; | ||
159 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */ = { | ||
160 | + isa = PBXGroup; | ||
161 | + children = ( | ||
162 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */, | ||
163 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */, | ||
164 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */, | ||
165 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */, | ||
166 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */, | ||
167 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */, | ||
168 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */, | ||
169 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */, | ||
170 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */, | ||
171 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */, | ||
172 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */, | ||
173 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */, | ||
174 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */, | ||
175 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */, | ||
176 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */, | ||
177 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */, | ||
178 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */, | ||
179 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */, | ||
180 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */, | ||
181 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */, | ||
182 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */, | ||
183 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */, | ||
184 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */, | ||
185 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */, | ||
186 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */, | ||
187 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */, | ||
188 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */, | ||
189 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */, | ||
190 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */, | ||
191 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */, | ||
192 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */, | ||
193 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */, | ||
194 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */, | ||
195 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */, | ||
196 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */, | ||
197 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */, | ||
198 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */, | ||
199 | + ); | ||
200 | + name = SnapKit; | ||
201 | + path = SnapKit; | ||
202 | + sourceTree = "<group>"; | ||
203 | + }; | ||
204 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */ = { | ||
205 | + isa = PBXGroup; | ||
206 | + children = ( | ||
207 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */, | ||
208 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */, | ||
209 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */, | ||
210 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */, | ||
211 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */, | ||
212 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */, | ||
213 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */, | ||
214 | + ); | ||
215 | + name = "Support Files"; | ||
216 | + path = "../Target Support Files/SnapKit"; | ||
217 | + sourceTree = "<group>"; | ||
218 | + }; | ||
219 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */ = { | ||
220 | + isa = PBXGroup; | ||
221 | + children = ( | ||
222 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */, | ||
223 | + 979486118B3E90C08386079D57962701 /* SnapKit */, | ||
224 | + ); | ||
225 | + name = Products; | ||
226 | + sourceTree = "<group>"; | ||
227 | + }; | ||
228 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */ = { | ||
229 | + isa = PBXGroup; | ||
230 | + children = ( | ||
231 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */, | ||
232 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */, | ||
233 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */, | ||
234 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */, | ||
235 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */, | ||
236 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */, | ||
237 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */, | ||
238 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */, | ||
239 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */, | ||
240 | + ); | ||
241 | + name = "Pods-InterQR-Internship"; | ||
242 | + path = "Target Support Files/Pods-InterQR-Internship"; | ||
243 | + sourceTree = "<group>"; | ||
244 | + }; | ||
245 | + BA22F08D059965C9A09F78196176CEDB /* Pods */ = { | ||
246 | + isa = PBXGroup; | ||
247 | + children = ( | ||
248 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */, | ||
249 | + ); | ||
250 | + name = Pods; | ||
251 | + sourceTree = "<group>"; | ||
252 | + }; | ||
253 | + CF1408CF629C7361332E53B88F7BD30C = { | ||
254 | + isa = PBXGroup; | ||
255 | + children = ( | ||
256 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, | ||
257 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, | ||
258 | + BA22F08D059965C9A09F78196176CEDB /* Pods */, | ||
259 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */, | ||
260 | + 6CD2077814608664B890545761124450 /* Targets Support Files */, | ||
261 | + ); | ||
262 | + sourceTree = "<group>"; | ||
263 | + }; | ||
264 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { | ||
265 | + isa = PBXGroup; | ||
266 | + children = ( | ||
267 | + 578452D2E740E91742655AC8F1636D1F /* iOS */, | ||
268 | + ); | ||
269 | + name = Frameworks; | ||
270 | + sourceTree = "<group>"; | ||
271 | + }; | ||
272 | +/* End PBXGroup section */ | ||
273 | + | ||
274 | +/* Begin PBXHeadersBuildPhase section */ | ||
275 | + 3B921547E999920F44EBD58F955423CC /* Headers */ = { | ||
276 | + isa = PBXHeadersBuildPhase; | ||
277 | + buildActionMask = 2147483647; | ||
278 | + files = ( | ||
279 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */, | ||
280 | + ); | ||
281 | + runOnlyForDeploymentPostprocessing = 0; | ||
282 | + }; | ||
283 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */ = { | ||
284 | + isa = PBXHeadersBuildPhase; | ||
285 | + buildActionMask = 2147483647; | ||
286 | + files = ( | ||
287 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */, | ||
288 | + ); | ||
289 | + runOnlyForDeploymentPostprocessing = 0; | ||
290 | + }; | ||
291 | +/* End PBXHeadersBuildPhase section */ | ||
292 | + | ||
293 | +/* Begin PBXNativeTarget section */ | ||
294 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { | ||
295 | + isa = PBXNativeTarget; | ||
296 | + buildConfigurationList = 4949A940CD53B7E293859B71C91C88F3 /* Build configuration list for PBXNativeTarget "SnapKit" */; | ||
297 | + buildPhases = ( | ||
298 | + 3B921547E999920F44EBD58F955423CC /* Headers */, | ||
299 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */, | ||
300 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */, | ||
301 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */, | ||
302 | + ); | ||
303 | + buildRules = ( | ||
304 | + ); | ||
305 | + dependencies = ( | ||
306 | + ); | ||
307 | + name = SnapKit; | ||
308 | + productName = SnapKit; | ||
309 | + productReference = 979486118B3E90C08386079D57962701 /* SnapKit */; | ||
310 | + productType = "com.apple.product-type.framework"; | ||
311 | + }; | ||
312 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */ = { | ||
313 | + isa = PBXNativeTarget; | ||
314 | + buildConfigurationList = D8D8A2B883726AC5D3A57DEBA6C81808 /* Build configuration list for PBXNativeTarget "Pods-InterQR-Internship" */; | ||
315 | + buildPhases = ( | ||
316 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */, | ||
317 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */, | ||
318 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */, | ||
319 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */, | ||
320 | + ); | ||
321 | + buildRules = ( | ||
322 | + ); | ||
323 | + dependencies = ( | ||
324 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */, | ||
325 | + ); | ||
326 | + name = "Pods-InterQR-Internship"; | ||
327 | + productName = Pods_InterQR_Internship; | ||
328 | + productReference = BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */; | ||
329 | + productType = "com.apple.product-type.framework"; | ||
330 | + }; | ||
331 | +/* End PBXNativeTarget section */ | ||
332 | + | ||
333 | +/* Begin PBXProject section */ | ||
334 | + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { | ||
335 | + isa = PBXProject; | ||
336 | + attributes = { | ||
337 | + LastSwiftUpdateCheck = 1240; | ||
338 | + LastUpgradeCheck = 1240; | ||
339 | + }; | ||
340 | + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; | ||
341 | + compatibilityVersion = "Xcode 13.0"; | ||
342 | + developmentRegion = en; | ||
343 | + hasScannedForEncodings = 0; | ||
344 | + knownRegions = ( | ||
345 | + Base, | ||
346 | + en, | ||
347 | + ); | ||
348 | + mainGroup = CF1408CF629C7361332E53B88F7BD30C; | ||
349 | + productRefGroup = A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */; | ||
350 | + projectDirPath = ""; | ||
351 | + projectRoot = ""; | ||
352 | + targets = ( | ||
353 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */, | ||
354 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */, | ||
355 | + ); | ||
356 | + }; | ||
357 | +/* End PBXProject section */ | ||
358 | + | ||
359 | +/* Begin PBXResourcesBuildPhase section */ | ||
360 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */ = { | ||
361 | + isa = PBXResourcesBuildPhase; | ||
362 | + buildActionMask = 2147483647; | ||
363 | + files = ( | ||
364 | + ); | ||
365 | + runOnlyForDeploymentPostprocessing = 0; | ||
366 | + }; | ||
367 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */ = { | ||
368 | + isa = PBXResourcesBuildPhase; | ||
369 | + buildActionMask = 2147483647; | ||
370 | + files = ( | ||
371 | + ); | ||
372 | + runOnlyForDeploymentPostprocessing = 0; | ||
373 | + }; | ||
374 | +/* End PBXResourcesBuildPhase section */ | ||
375 | + | ||
376 | +/* Begin PBXSourcesBuildPhase section */ | ||
377 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */ = { | ||
378 | + isa = PBXSourcesBuildPhase; | ||
379 | + buildActionMask = 2147483647; | ||
380 | + files = ( | ||
381 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */, | ||
382 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */, | ||
383 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */, | ||
384 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */, | ||
385 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */, | ||
386 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */, | ||
387 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */, | ||
388 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */, | ||
389 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */, | ||
390 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */, | ||
391 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */, | ||
392 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */, | ||
393 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */, | ||
394 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */, | ||
395 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */, | ||
396 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */, | ||
397 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */, | ||
398 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */, | ||
399 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */, | ||
400 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */, | ||
401 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */, | ||
402 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */, | ||
403 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */, | ||
404 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */, | ||
405 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */, | ||
406 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */, | ||
407 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */, | ||
408 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */, | ||
409 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */, | ||
410 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */, | ||
411 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */, | ||
412 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */, | ||
413 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */, | ||
414 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */, | ||
415 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */, | ||
416 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */, | ||
417 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */, | ||
418 | + ); | ||
419 | + runOnlyForDeploymentPostprocessing = 0; | ||
420 | + }; | ||
421 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */ = { | ||
422 | + isa = PBXSourcesBuildPhase; | ||
423 | + buildActionMask = 2147483647; | ||
424 | + files = ( | ||
425 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */, | ||
426 | + ); | ||
427 | + runOnlyForDeploymentPostprocessing = 0; | ||
428 | + }; | ||
429 | +/* End PBXSourcesBuildPhase section */ | ||
430 | + | ||
431 | +/* Begin PBXTargetDependency section */ | ||
432 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */ = { | ||
433 | + isa = PBXTargetDependency; | ||
434 | + name = SnapKit; | ||
435 | + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; | ||
436 | + targetProxy = 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */; | ||
437 | + }; | ||
438 | +/* End PBXTargetDependency section */ | ||
439 | + | ||
440 | +/* Begin XCBuildConfiguration section */ | ||
441 | + 10EA70BAF8B7F98899DF1BDB60F485E7 /* Release */ = { | ||
442 | + isa = XCBuildConfiguration; | ||
443 | + baseConfigurationReference = 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */; | ||
444 | + buildSettings = { | ||
445 | + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; | ||
446 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
447 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
448 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
449 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
450 | + CURRENT_PROJECT_VERSION = 1; | ||
451 | + DEFINES_MODULE = YES; | ||
452 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
453 | + DYLIB_CURRENT_VERSION = 1; | ||
454 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
455 | + INFOPLIST_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-Info.plist"; | ||
456 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
457 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
458 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
459 | + "$(inherited)", | ||
460 | + "@executable_path/Frameworks", | ||
461 | + "@loader_path/Frameworks", | ||
462 | + ); | ||
463 | + MACH_O_TYPE = staticlib; | ||
464 | + MODULEMAP_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.modulemap"; | ||
465 | + OTHER_LDFLAGS = ""; | ||
466 | + OTHER_LIBTOOLFLAGS = ""; | ||
467 | + PODS_ROOT = "$(SRCROOT)"; | ||
468 | + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; | ||
469 | + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; | ||
470 | + SDKROOT = iphoneos; | ||
471 | + SKIP_INSTALL = YES; | ||
472 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
473 | + VALIDATE_PRODUCT = YES; | ||
474 | + VERSIONING_SYSTEM = "apple-generic"; | ||
475 | + VERSION_INFO_PREFIX = ""; | ||
476 | + }; | ||
477 | + name = Release; | ||
478 | + }; | ||
479 | + 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */ = { | ||
480 | + isa = XCBuildConfiguration; | ||
481 | + buildSettings = { | ||
482 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
483 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
484 | + CLANG_ANALYZER_NONNULL = YES; | ||
485 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
486 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
487 | + CLANG_CXX_LIBRARY = "libc++"; | ||
488 | + CLANG_ENABLE_MODULES = YES; | ||
489 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
490 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
491 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
492 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
493 | + CLANG_WARN_COMMA = YES; | ||
494 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
495 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
496 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
497 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
498 | + CLANG_WARN_EMPTY_BODY = YES; | ||
499 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
500 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
501 | + CLANG_WARN_INT_CONVERSION = YES; | ||
502 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
503 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
504 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
505 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
506 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
507 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
508 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
509 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
510 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
511 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
512 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
513 | + COPY_PHASE_STRIP = NO; | ||
514 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
515 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
516 | + ENABLE_TESTABILITY = YES; | ||
517 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
518 | + GCC_DYNAMIC_NO_PIC = NO; | ||
519 | + GCC_NO_COMMON_BLOCKS = YES; | ||
520 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
521 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
522 | + "POD_CONFIGURATION_DEBUG=1", | ||
523 | + "DEBUG=1", | ||
524 | + "$(inherited)", | ||
525 | + ); | ||
526 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
527 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
528 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
529 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
530 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
531 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
532 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
533 | + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
534 | + MTL_FAST_MATH = YES; | ||
535 | + ONLY_ACTIVE_ARCH = YES; | ||
536 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
537 | + STRIP_INSTALLED_PRODUCT = NO; | ||
538 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
539 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
540 | + SWIFT_VERSION = 5.0; | ||
541 | + SYMROOT = "${SRCROOT}/../build"; | ||
542 | + }; | ||
543 | + name = Debug; | ||
544 | + }; | ||
545 | + 9553C89E183877A5CB2F3C6801BEC129 /* Release */ = { | ||
546 | + isa = XCBuildConfiguration; | ||
547 | + buildSettings = { | ||
548 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
549 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
550 | + CLANG_ANALYZER_NONNULL = YES; | ||
551 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
552 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
553 | + CLANG_CXX_LIBRARY = "libc++"; | ||
554 | + CLANG_ENABLE_MODULES = YES; | ||
555 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
556 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
557 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
558 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
559 | + CLANG_WARN_COMMA = YES; | ||
560 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
561 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
562 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
563 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
564 | + CLANG_WARN_EMPTY_BODY = YES; | ||
565 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
566 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
567 | + CLANG_WARN_INT_CONVERSION = YES; | ||
568 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
569 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
570 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
571 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
572 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
573 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
574 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
575 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
576 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
577 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
578 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
579 | + COPY_PHASE_STRIP = NO; | ||
580 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
581 | + ENABLE_NS_ASSERTIONS = NO; | ||
582 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
583 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
584 | + GCC_NO_COMMON_BLOCKS = YES; | ||
585 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
586 | + "POD_CONFIGURATION_RELEASE=1", | ||
587 | + "$(inherited)", | ||
588 | + ); | ||
589 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
590 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
591 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
592 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
593 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
594 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
595 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
596 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
597 | + MTL_FAST_MATH = YES; | ||
598 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
599 | + STRIP_INSTALLED_PRODUCT = NO; | ||
600 | + SWIFT_COMPILATION_MODE = wholemodule; | ||
601 | + SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||
602 | + SWIFT_VERSION = 5.0; | ||
603 | + SYMROOT = "${SRCROOT}/../build"; | ||
604 | + }; | ||
605 | + name = Release; | ||
606 | + }; | ||
607 | + CB8A79F7382B0A1227C38D59E7968EEA /* Debug */ = { | ||
608 | + isa = XCBuildConfiguration; | ||
609 | + baseConfigurationReference = 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */; | ||
610 | + buildSettings = { | ||
611 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
612 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
613 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
614 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
615 | + CURRENT_PROJECT_VERSION = 1; | ||
616 | + DEFINES_MODULE = YES; | ||
617 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
618 | + DYLIB_CURRENT_VERSION = 1; | ||
619 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
620 | + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; | ||
621 | + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; | ||
622 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
623 | + IPHONEOS_DEPLOYMENT_TARGET = 10.0; | ||
624 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
625 | + "$(inherited)", | ||
626 | + "@executable_path/Frameworks", | ||
627 | + "@loader_path/Frameworks", | ||
628 | + ); | ||
629 | + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; | ||
630 | + PRODUCT_MODULE_NAME = SnapKit; | ||
631 | + PRODUCT_NAME = SnapKit; | ||
632 | + SDKROOT = iphoneos; | ||
633 | + SKIP_INSTALL = YES; | ||
634 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; | ||
635 | + SWIFT_VERSION = 5.0; | ||
636 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
637 | + VERSIONING_SYSTEM = "apple-generic"; | ||
638 | + VERSION_INFO_PREFIX = ""; | ||
639 | + }; | ||
640 | + name = Debug; | ||
641 | + }; | ||
642 | + DFFD31690F9CC8449FD1F803388E1D46 /* Release */ = { | ||
643 | + isa = XCBuildConfiguration; | ||
644 | + baseConfigurationReference = A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */; | ||
645 | + buildSettings = { | ||
646 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
647 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
648 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
649 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
650 | + CURRENT_PROJECT_VERSION = 1; | ||
651 | + DEFINES_MODULE = YES; | ||
652 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
653 | + DYLIB_CURRENT_VERSION = 1; | ||
654 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
655 | + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; | ||
656 | + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; | ||
657 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
658 | + IPHONEOS_DEPLOYMENT_TARGET = 10.0; | ||
659 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
660 | + "$(inherited)", | ||
661 | + "@executable_path/Frameworks", | ||
662 | + "@loader_path/Frameworks", | ||
663 | + ); | ||
664 | + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; | ||
665 | + PRODUCT_MODULE_NAME = SnapKit; | ||
666 | + PRODUCT_NAME = SnapKit; | ||
667 | + SDKROOT = iphoneos; | ||
668 | + SKIP_INSTALL = YES; | ||
669 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; | ||
670 | + SWIFT_VERSION = 5.0; | ||
671 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
672 | + VALIDATE_PRODUCT = YES; | ||
673 | + VERSIONING_SYSTEM = "apple-generic"; | ||
674 | + VERSION_INFO_PREFIX = ""; | ||
675 | + }; | ||
676 | + name = Release; | ||
677 | + }; | ||
678 | + F95437D0138618F8A31BD365CCDF23F7 /* Debug */ = { | ||
679 | + isa = XCBuildConfiguration; | ||
680 | + baseConfigurationReference = EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */; | ||
681 | + buildSettings = { | ||
682 | + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; | ||
683 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
684 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
685 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
686 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
687 | + CURRENT_PROJECT_VERSION = 1; | ||
688 | + DEFINES_MODULE = YES; | ||
689 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
690 | + DYLIB_CURRENT_VERSION = 1; | ||
691 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
692 | + INFOPLIST_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-Info.plist"; | ||
693 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
694 | + IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||
695 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
696 | + "$(inherited)", | ||
697 | + "@executable_path/Frameworks", | ||
698 | + "@loader_path/Frameworks", | ||
699 | + ); | ||
700 | + MACH_O_TYPE = staticlib; | ||
701 | + MODULEMAP_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.modulemap"; | ||
702 | + OTHER_LDFLAGS = ""; | ||
703 | + OTHER_LIBTOOLFLAGS = ""; | ||
704 | + PODS_ROOT = "$(SRCROOT)"; | ||
705 | + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; | ||
706 | + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; | ||
707 | + SDKROOT = iphoneos; | ||
708 | + SKIP_INSTALL = YES; | ||
709 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
710 | + VERSIONING_SYSTEM = "apple-generic"; | ||
711 | + VERSION_INFO_PREFIX = ""; | ||
712 | + }; | ||
713 | + name = Debug; | ||
714 | + }; | ||
715 | +/* End XCBuildConfiguration section */ | ||
716 | + | ||
717 | +/* Begin XCConfigurationList section */ | ||
718 | + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { | ||
719 | + isa = XCConfigurationList; | ||
720 | + buildConfigurations = ( | ||
721 | + 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */, | ||
722 | + 9553C89E183877A5CB2F3C6801BEC129 /* Release */, | ||
723 | + ); | ||
724 | + defaultConfigurationIsVisible = 0; | ||
725 | + defaultConfigurationName = Release; | ||
726 | + }; | ||
727 | + 4949A940CD53B7E293859B71C91C88F3 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { | ||
728 | + isa = XCConfigurationList; | ||
729 | + buildConfigurations = ( | ||
730 | + CB8A79F7382B0A1227C38D59E7968EEA /* Debug */, | ||
731 | + DFFD31690F9CC8449FD1F803388E1D46 /* Release */, | ||
732 | + ); | ||
733 | + defaultConfigurationIsVisible = 0; | ||
734 | + defaultConfigurationName = Release; | ||
735 | + }; | ||
736 | + D8D8A2B883726AC5D3A57DEBA6C81808 /* Build configuration list for PBXNativeTarget "Pods-InterQR-Internship" */ = { | ||
737 | + isa = XCConfigurationList; | ||
738 | + buildConfigurations = ( | ||
739 | + F95437D0138618F8A31BD365CCDF23F7 /* Debug */, | ||
740 | + 10EA70BAF8B7F98899DF1BDB60F485E7 /* Release */, | ||
741 | + ); | ||
742 | + defaultConfigurationIsVisible = 0; | ||
743 | + defaultConfigurationName = Release; | ||
744 | + }; | ||
745 | +/* End XCConfigurationList section */ | ||
746 | + }; | ||
747 | + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; | ||
748 | +} |
Pods/Pods.xcodeproj/xcuserdata/tdy_13.xcuserdatad/xcschemes/Pods-InterQR-Internship.xcscheme
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Scheme | ||
3 | + LastUpgradeVersion = "1240" | ||
4 | + version = "1.3"> | ||
5 | + <BuildAction | ||
6 | + parallelizeBuildables = "YES" | ||
7 | + buildImplicitDependencies = "YES"> | ||
8 | + <BuildActionEntries> | ||
9 | + <BuildActionEntry | ||
10 | + buildForTesting = "YES" | ||
11 | + buildForRunning = "YES" | ||
12 | + buildForProfiling = "YES" | ||
13 | + buildForArchiving = "YES" | ||
14 | + buildForAnalyzing = "YES"> | ||
15 | + <BuildableReference | ||
16 | + BuildableIdentifier = "primary" | ||
17 | + BlueprintIdentifier = "9BAF824ED8B046DCC6AEAC3D645548EE" | ||
18 | + BuildableName = "Pods_InterQR_Internship.framework" | ||
19 | + BlueprintName = "Pods-InterQR-Internship" | ||
20 | + ReferencedContainer = "container:Pods.xcodeproj"> | ||
21 | + </BuildableReference> | ||
22 | + </BuildActionEntry> | ||
23 | + </BuildActionEntries> | ||
24 | + </BuildAction> | ||
25 | + <TestAction | ||
26 | + buildConfiguration = "Debug" | ||
27 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
28 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
29 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
30 | + <Testables> | ||
31 | + </Testables> | ||
32 | + </TestAction> | ||
33 | + <LaunchAction | ||
34 | + buildConfiguration = "Debug" | ||
35 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
36 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
37 | + launchStyle = "0" | ||
38 | + useCustomWorkingDirectory = "NO" | ||
39 | + ignoresPersistentStateOnLaunch = "NO" | ||
40 | + debugDocumentVersioning = "YES" | ||
41 | + debugServiceExtension = "internal" | ||
42 | + allowLocationSimulation = "YES"> | ||
43 | + </LaunchAction> | ||
44 | + <ProfileAction | ||
45 | + buildConfiguration = "Release" | ||
46 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
47 | + savedToolIdentifier = "" | ||
48 | + useCustomWorkingDirectory = "NO" | ||
49 | + debugDocumentVersioning = "YES"> | ||
50 | + </ProfileAction> | ||
51 | + <AnalyzeAction | ||
52 | + buildConfiguration = "Debug"> | ||
53 | + </AnalyzeAction> | ||
54 | + <ArchiveAction | ||
55 | + buildConfiguration = "Release" | ||
56 | + revealArchiveInOrganizer = "YES"> | ||
57 | + </ArchiveAction> | ||
58 | +</Scheme> |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Scheme | ||
3 | + LastUpgradeVersion = "1240" | ||
4 | + version = "1.3"> | ||
5 | + <BuildAction | ||
6 | + parallelizeBuildables = "YES" | ||
7 | + buildImplicitDependencies = "YES"> | ||
8 | + <BuildActionEntries> | ||
9 | + <BuildActionEntry | ||
10 | + buildForTesting = "YES" | ||
11 | + buildForRunning = "YES" | ||
12 | + buildForProfiling = "YES" | ||
13 | + buildForArchiving = "YES" | ||
14 | + buildForAnalyzing = "YES"> | ||
15 | + <BuildableReference | ||
16 | + BuildableIdentifier = "primary" | ||
17 | + BlueprintIdentifier = "19622742EBA51E823D6DAE3F8CDBFAD4" | ||
18 | + BuildableName = "SnapKit.framework" | ||
19 | + BlueprintName = "SnapKit" | ||
20 | + ReferencedContainer = "container:Pods.xcodeproj"> | ||
21 | + </BuildableReference> | ||
22 | + </BuildActionEntry> | ||
23 | + </BuildActionEntries> | ||
24 | + </BuildAction> | ||
25 | + <TestAction | ||
26 | + buildConfiguration = "Debug" | ||
27 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
28 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
29 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
30 | + <Testables> | ||
31 | + </Testables> | ||
32 | + </TestAction> | ||
33 | + <LaunchAction | ||
34 | + buildConfiguration = "Debug" | ||
35 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
36 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
37 | + launchStyle = "0" | ||
38 | + useCustomWorkingDirectory = "NO" | ||
39 | + ignoresPersistentStateOnLaunch = "NO" | ||
40 | + debugDocumentVersioning = "YES" | ||
41 | + debugServiceExtension = "internal" | ||
42 | + allowLocationSimulation = "YES"> | ||
43 | + </LaunchAction> | ||
44 | + <ProfileAction | ||
45 | + buildConfiguration = "Release" | ||
46 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
47 | + savedToolIdentifier = "" | ||
48 | + useCustomWorkingDirectory = "NO" | ||
49 | + debugDocumentVersioning = "YES"> | ||
50 | + </ProfileAction> | ||
51 | + <AnalyzeAction | ||
52 | + buildConfiguration = "Debug"> | ||
53 | + </AnalyzeAction> | ||
54 | + <ArchiveAction | ||
55 | + buildConfiguration = "Release" | ||
56 | + revealArchiveInOrganizer = "YES"> | ||
57 | + </ArchiveAction> | ||
58 | +</Scheme> |
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>SchemeUserState</key> | ||
6 | + <dict> | ||
7 | + <key>Pods-InterQR-Internship.xcscheme</key> | ||
8 | + <dict> | ||
9 | + <key>isShown</key> | ||
10 | + <false/> | ||
11 | + <key>orderHint</key> | ||
12 | + <integer>0</integer> | ||
13 | + </dict> | ||
14 | + <key>SnapKit.xcscheme</key> | ||
15 | + <dict> | ||
16 | + <key>isShown</key> | ||
17 | + <false/> | ||
18 | + <key>orderHint</key> | ||
19 | + <integer>1</integer> | ||
20 | + </dict> | ||
21 | + </dict> | ||
22 | + <key>SuppressBuildableAutocreation</key> | ||
23 | + <dict/> | ||
24 | +</dict> | ||
25 | +</plist> |
Pods/SnapKit/LICENSE
0 → 100644
1 | +Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
2 | + | ||
3 | +Permission is hereby granted, free of charge, to any person obtaining a copy | ||
4 | +of this software and associated documentation files (the "Software"), to deal | ||
5 | +in the Software without restriction, including without limitation the rights | ||
6 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
7 | +copies of the Software, and to permit persons to whom the Software is | ||
8 | +furnished to do so, subject to the following conditions: | ||
9 | + | ||
10 | +The above copyright notice and this permission notice shall be included in | ||
11 | +all copies or substantial portions of the Software. | ||
12 | + | ||
13 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
14 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
15 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
16 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
17 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
18 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
19 | +THE SOFTWARE. |
Pods/SnapKit/README.md
0 → 100644
1 | +<img src="http://snapkit.io/images/banner.jpg" alt="" /> | ||
2 | + | ||
3 | +SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. | ||
4 | + | ||
5 | +[![Build Status](https://travis-ci.org/SnapKit/SnapKit.svg)](https://travis-ci.org/SnapKit/SnapKit) | ||
6 | +[![Platform](https://img.shields.io/cocoapods/p/SnapKit.svg?style=flat)](https://github.com/SnapKit/SnapKit) | ||
7 | +[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/SnapKit.svg)](https://cocoapods.org/pods/SnapKit) | ||
8 | +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) | ||
9 | + | ||
10 | +#### ⚠️ **To use with Swift 4.x please ensure you are using >= 4.0.0** ⚠️ | ||
11 | +#### ⚠️ **To use with Swift 5.x please ensure you are using >= 5.0.0** ⚠️ | ||
12 | + | ||
13 | +## Contents | ||
14 | + | ||
15 | +- [Requirements](#requirements) | ||
16 | +- [Migration Guides](#migration-guides) | ||
17 | +- [Communication](#communication) | ||
18 | +- [Installation](#installation) | ||
19 | +- [Usage](#usage) | ||
20 | +- [Credits](#credits) | ||
21 | +- [License](#license) | ||
22 | + | ||
23 | +## Requirements | ||
24 | + | ||
25 | +- iOS 10.0+ / Mac OS X 10.12+ / tvOS 10.0+ | ||
26 | +- Xcode 10.0+ | ||
27 | +- Swift 4.0+ | ||
28 | + | ||
29 | +## Communication | ||
30 | + | ||
31 | +- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). (Tag 'snapkit') | ||
32 | +- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). | ||
33 | +- If you **found a bug**, open an issue. | ||
34 | +- If you **have a feature request**, open an issue. | ||
35 | +- If you **want to contribute**, submit a pull request. | ||
36 | + | ||
37 | + | ||
38 | +## Installation | ||
39 | + | ||
40 | +### CocoaPods | ||
41 | + | ||
42 | +[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: | ||
43 | + | ||
44 | +```bash | ||
45 | +$ gem install cocoapods | ||
46 | +``` | ||
47 | + | ||
48 | +> CocoaPods 1.1.0+ is required to build SnapKit 4.0.0+. | ||
49 | + | ||
50 | +To integrate SnapKit into your Xcode project using CocoaPods, specify it in your `Podfile`: | ||
51 | + | ||
52 | +```ruby | ||
53 | +source 'https://github.com/CocoaPods/Specs.git' | ||
54 | +platform :ios, '10.0' | ||
55 | +use_frameworks! | ||
56 | + | ||
57 | +target '<Your Target Name>' do | ||
58 | + pod 'SnapKit', '~> 5.0.0' | ||
59 | +end | ||
60 | +``` | ||
61 | + | ||
62 | +Then, run the following command: | ||
63 | + | ||
64 | +```bash | ||
65 | +$ pod install | ||
66 | +``` | ||
67 | + | ||
68 | +### Carthage | ||
69 | + | ||
70 | +[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. | ||
71 | + | ||
72 | +You can install Carthage with [Homebrew](http://brew.sh/) using the following command: | ||
73 | + | ||
74 | +```bash | ||
75 | +$ brew update | ||
76 | +$ brew install carthage | ||
77 | +``` | ||
78 | + | ||
79 | +To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`: | ||
80 | + | ||
81 | +```ogdl | ||
82 | +github "SnapKit/SnapKit" ~> 5.0.0 | ||
83 | +``` | ||
84 | + | ||
85 | +Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project. | ||
86 | + | ||
87 | +### Manually | ||
88 | + | ||
89 | +If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually. | ||
90 | + | ||
91 | +--- | ||
92 | + | ||
93 | +## Usage | ||
94 | + | ||
95 | +### Quick Start | ||
96 | + | ||
97 | +```swift | ||
98 | +import SnapKit | ||
99 | + | ||
100 | +class MyViewController: UIViewController { | ||
101 | + | ||
102 | + lazy var box = UIView() | ||
103 | + | ||
104 | + override func viewDidLoad() { | ||
105 | + super.viewDidLoad() | ||
106 | + | ||
107 | + self.view.addSubview(box) | ||
108 | + box.snp.makeConstraints { (make) -> Void in | ||
109 | + make.width.height.equalTo(50) | ||
110 | + make.center.equalTo(self.view) | ||
111 | + } | ||
112 | + } | ||
113 | + | ||
114 | +} | ||
115 | +``` | ||
116 | + | ||
117 | +### Playground | ||
118 | +You can try SnapKit in Playground. | ||
119 | + | ||
120 | +**Note:** | ||
121 | + | ||
122 | +> To try SnapKit in playground, open `SnapKit.xcworkspace` and build SnapKit.framework for any simulator first. | ||
123 | + | ||
124 | +### Resources | ||
125 | + | ||
126 | +- [Documentation](http://snapkit.io/docs/) | ||
127 | +- [F.A.Q.](http://snapkit.io/faq/) | ||
128 | + | ||
129 | +## Credits | ||
130 | + | ||
131 | +- Robert Payne ([@robertjpayne](https://twitter.com/robertjpayne)) | ||
132 | +- Many other contributors | ||
133 | + | ||
134 | +## License | ||
135 | + | ||
136 | +SnapKit is released under the MIT license. See LICENSE for details. |
Pods/SnapKit/Source/Constraint.swift
0 → 100644
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | +public final class Constraint { | ||
31 | + | ||
32 | + internal let sourceLocation: (String, UInt) | ||
33 | + internal let label: String? | ||
34 | + | ||
35 | + private let from: ConstraintItem | ||
36 | + private let to: ConstraintItem | ||
37 | + private let relation: ConstraintRelation | ||
38 | + private let multiplier: ConstraintMultiplierTarget | ||
39 | + private var constant: ConstraintConstantTarget { | ||
40 | + didSet { | ||
41 | + self.updateConstantAndPriorityIfNeeded() | ||
42 | + } | ||
43 | + } | ||
44 | + private var priority: ConstraintPriorityTarget { | ||
45 | + didSet { | ||
46 | + self.updateConstantAndPriorityIfNeeded() | ||
47 | + } | ||
48 | + } | ||
49 | + public var layoutConstraints: [LayoutConstraint] | ||
50 | + | ||
51 | + public var isActive: Bool { | ||
52 | + set { | ||
53 | + if newValue { | ||
54 | + activate() | ||
55 | + } | ||
56 | + else { | ||
57 | + deactivate() | ||
58 | + } | ||
59 | + } | ||
60 | + | ||
61 | + get { | ||
62 | + for layoutConstraint in self.layoutConstraints { | ||
63 | + if layoutConstraint.isActive { | ||
64 | + return true | ||
65 | + } | ||
66 | + } | ||
67 | + return false | ||
68 | + } | ||
69 | + } | ||
70 | + | ||
71 | + // MARK: Initialization | ||
72 | + | ||
73 | + internal init(from: ConstraintItem, | ||
74 | + to: ConstraintItem, | ||
75 | + relation: ConstraintRelation, | ||
76 | + sourceLocation: (String, UInt), | ||
77 | + label: String?, | ||
78 | + multiplier: ConstraintMultiplierTarget, | ||
79 | + constant: ConstraintConstantTarget, | ||
80 | + priority: ConstraintPriorityTarget) { | ||
81 | + self.from = from | ||
82 | + self.to = to | ||
83 | + self.relation = relation | ||
84 | + self.sourceLocation = sourceLocation | ||
85 | + self.label = label | ||
86 | + self.multiplier = multiplier | ||
87 | + self.constant = constant | ||
88 | + self.priority = priority | ||
89 | + self.layoutConstraints = [] | ||
90 | + | ||
91 | + // get attributes | ||
92 | + let layoutFromAttributes = self.from.attributes.layoutAttributes | ||
93 | + let layoutToAttributes = self.to.attributes.layoutAttributes | ||
94 | + | ||
95 | + // get layout from | ||
96 | + let layoutFrom = self.from.layoutConstraintItem! | ||
97 | + | ||
98 | + // get relation | ||
99 | + let layoutRelation = self.relation.layoutRelation | ||
100 | + | ||
101 | + for layoutFromAttribute in layoutFromAttributes { | ||
102 | + // get layout to attribute | ||
103 | + let layoutToAttribute: LayoutAttribute | ||
104 | + #if os(iOS) || os(tvOS) | ||
105 | + if layoutToAttributes.count > 0 { | ||
106 | + if self.from.attributes == .edges && self.to.attributes == .margins { | ||
107 | + switch layoutFromAttribute { | ||
108 | + case .left: | ||
109 | + layoutToAttribute = .leftMargin | ||
110 | + case .right: | ||
111 | + layoutToAttribute = .rightMargin | ||
112 | + case .top: | ||
113 | + layoutToAttribute = .topMargin | ||
114 | + case .bottom: | ||
115 | + layoutToAttribute = .bottomMargin | ||
116 | + default: | ||
117 | + fatalError() | ||
118 | + } | ||
119 | + } else if self.from.attributes == .margins && self.to.attributes == .edges { | ||
120 | + switch layoutFromAttribute { | ||
121 | + case .leftMargin: | ||
122 | + layoutToAttribute = .left | ||
123 | + case .rightMargin: | ||
124 | + layoutToAttribute = .right | ||
125 | + case .topMargin: | ||
126 | + layoutToAttribute = .top | ||
127 | + case .bottomMargin: | ||
128 | + layoutToAttribute = .bottom | ||
129 | + default: | ||
130 | + fatalError() | ||
131 | + } | ||
132 | + } else if self.from.attributes == .directionalEdges && self.to.attributes == .directionalMargins { | ||
133 | + switch layoutFromAttribute { | ||
134 | + case .leading: | ||
135 | + layoutToAttribute = .leadingMargin | ||
136 | + case .trailing: | ||
137 | + layoutToAttribute = .trailingMargin | ||
138 | + case .top: | ||
139 | + layoutToAttribute = .topMargin | ||
140 | + case .bottom: | ||
141 | + layoutToAttribute = .bottomMargin | ||
142 | + default: | ||
143 | + fatalError() | ||
144 | + } | ||
145 | + } else if self.from.attributes == .directionalMargins && self.to.attributes == .directionalEdges { | ||
146 | + switch layoutFromAttribute { | ||
147 | + case .leadingMargin: | ||
148 | + layoutToAttribute = .leading | ||
149 | + case .trailingMargin: | ||
150 | + layoutToAttribute = .trailing | ||
151 | + case .topMargin: | ||
152 | + layoutToAttribute = .top | ||
153 | + case .bottomMargin: | ||
154 | + layoutToAttribute = .bottom | ||
155 | + default: | ||
156 | + fatalError() | ||
157 | + } | ||
158 | + } else if self.from.attributes == self.to.attributes { | ||
159 | + layoutToAttribute = layoutFromAttribute | ||
160 | + } else { | ||
161 | + layoutToAttribute = layoutToAttributes[0] | ||
162 | + } | ||
163 | + } else { | ||
164 | + if self.to.target == nil && (layoutFromAttribute == .centerX || layoutFromAttribute == .centerY) { | ||
165 | + layoutToAttribute = layoutFromAttribute == .centerX ? .left : .top | ||
166 | + } else { | ||
167 | + layoutToAttribute = layoutFromAttribute | ||
168 | + } | ||
169 | + } | ||
170 | + #else | ||
171 | + if self.from.attributes == self.to.attributes { | ||
172 | + layoutToAttribute = layoutFromAttribute | ||
173 | + } else if layoutToAttributes.count > 0 { | ||
174 | + layoutToAttribute = layoutToAttributes[0] | ||
175 | + } else { | ||
176 | + layoutToAttribute = layoutFromAttribute | ||
177 | + } | ||
178 | + #endif | ||
179 | + | ||
180 | + // get layout constant | ||
181 | + let layoutConstant: CGFloat = self.constant.constraintConstantTargetValueFor(layoutAttribute: layoutToAttribute) | ||
182 | + | ||
183 | + // get layout to | ||
184 | + var layoutTo: AnyObject? = self.to.target | ||
185 | + | ||
186 | + // use superview if possible | ||
187 | + if layoutTo == nil && layoutToAttribute != .width && layoutToAttribute != .height { | ||
188 | + layoutTo = layoutFrom.superview | ||
189 | + } | ||
190 | + | ||
191 | + // create layout constraint | ||
192 | + let layoutConstraint = LayoutConstraint( | ||
193 | + item: layoutFrom, | ||
194 | + attribute: layoutFromAttribute, | ||
195 | + relatedBy: layoutRelation, | ||
196 | + toItem: layoutTo, | ||
197 | + attribute: layoutToAttribute, | ||
198 | + multiplier: self.multiplier.constraintMultiplierTargetValue, | ||
199 | + constant: layoutConstant | ||
200 | + ) | ||
201 | + | ||
202 | + // set label | ||
203 | + layoutConstraint.label = self.label | ||
204 | + | ||
205 | + // set priority | ||
206 | + layoutConstraint.priority = LayoutPriority(rawValue: self.priority.constraintPriorityTargetValue) | ||
207 | + | ||
208 | + // set constraint | ||
209 | + layoutConstraint.constraint = self | ||
210 | + | ||
211 | + // append | ||
212 | + self.layoutConstraints.append(layoutConstraint) | ||
213 | + } | ||
214 | + } | ||
215 | + | ||
216 | + // MARK: Public | ||
217 | + | ||
218 | + @available(*, deprecated, message:"Use activate().") | ||
219 | + public func install() { | ||
220 | + self.activate() | ||
221 | + } | ||
222 | + | ||
223 | + @available(*, deprecated, message:"Use deactivate().") | ||
224 | + public func uninstall() { | ||
225 | + self.deactivate() | ||
226 | + } | ||
227 | + | ||
228 | + public func activate() { | ||
229 | + self.activateIfNeeded() | ||
230 | + } | ||
231 | + | ||
232 | + public func deactivate() { | ||
233 | + self.deactivateIfNeeded() | ||
234 | + } | ||
235 | + | ||
236 | + @discardableResult | ||
237 | + public func update(offset: ConstraintOffsetTarget) -> Constraint { | ||
238 | + self.constant = offset.constraintOffsetTargetValue | ||
239 | + return self | ||
240 | + } | ||
241 | + | ||
242 | + @discardableResult | ||
243 | + public func update(inset: ConstraintInsetTarget) -> Constraint { | ||
244 | + self.constant = inset.constraintInsetTargetValue | ||
245 | + return self | ||
246 | + } | ||
247 | + | ||
248 | + #if os(iOS) || os(tvOS) | ||
249 | + @discardableResult | ||
250 | + @available(iOS 11.0, tvOS 11.0, *) | ||
251 | + public func update(inset: ConstraintDirectionalInsetTarget) -> Constraint { | ||
252 | + self.constant = inset.constraintDirectionalInsetTargetValue | ||
253 | + return self | ||
254 | + } | ||
255 | + #endif | ||
256 | + | ||
257 | + @discardableResult | ||
258 | + public func update(priority: ConstraintPriorityTarget) -> Constraint { | ||
259 | + self.priority = priority.constraintPriorityTargetValue | ||
260 | + return self | ||
261 | + } | ||
262 | + | ||
263 | + @discardableResult | ||
264 | + public func update(priority: ConstraintPriority) -> Constraint { | ||
265 | + self.priority = priority.value | ||
266 | + return self | ||
267 | + } | ||
268 | + | ||
269 | + @available(*, deprecated, message:"Use update(offset: ConstraintOffsetTarget) instead.") | ||
270 | + public func updateOffset(amount: ConstraintOffsetTarget) -> Void { self.update(offset: amount) } | ||
271 | + | ||
272 | + @available(*, deprecated, message:"Use update(inset: ConstraintInsetTarget) instead.") | ||
273 | + public func updateInsets(amount: ConstraintInsetTarget) -> Void { self.update(inset: amount) } | ||
274 | + | ||
275 | + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") | ||
276 | + public func updatePriority(amount: ConstraintPriorityTarget) -> Void { self.update(priority: amount) } | ||
277 | + | ||
278 | + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") | ||
279 | + public func updatePriorityRequired() -> Void {} | ||
280 | + | ||
281 | + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") | ||
282 | + public func updatePriorityHigh() -> Void { fatalError("Must be implemented by Concrete subclass.") } | ||
283 | + | ||
284 | + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") | ||
285 | + public func updatePriorityMedium() -> Void { fatalError("Must be implemented by Concrete subclass.") } | ||
286 | + | ||
287 | + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") | ||
288 | + public func updatePriorityLow() -> Void { fatalError("Must be implemented by Concrete subclass.") } | ||
289 | + | ||
290 | + // MARK: Internal | ||
291 | + | ||
292 | + internal func updateConstantAndPriorityIfNeeded() { | ||
293 | + for layoutConstraint in self.layoutConstraints { | ||
294 | + let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute | ||
295 | + layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute) | ||
296 | + | ||
297 | + let requiredPriority = ConstraintPriority.required.value | ||
298 | + if (layoutConstraint.priority.rawValue < requiredPriority), (self.priority.constraintPriorityTargetValue != requiredPriority) { | ||
299 | + layoutConstraint.priority = LayoutPriority(rawValue: self.priority.constraintPriorityTargetValue) | ||
300 | + } | ||
301 | + } | ||
302 | + } | ||
303 | + | ||
304 | + internal func activateIfNeeded(updatingExisting: Bool = false) { | ||
305 | + guard let item = self.from.layoutConstraintItem else { | ||
306 | + print("WARNING: SnapKit failed to get from item from constraint. Activate will be a no-op.") | ||
307 | + return | ||
308 | + } | ||
309 | + let layoutConstraints = self.layoutConstraints | ||
310 | + | ||
311 | + if updatingExisting { | ||
312 | + var existingLayoutConstraints: [LayoutConstraint] = [] | ||
313 | + for constraint in item.constraints { | ||
314 | + existingLayoutConstraints += constraint.layoutConstraints | ||
315 | + } | ||
316 | + | ||
317 | + for layoutConstraint in layoutConstraints { | ||
318 | + let existingLayoutConstraint = existingLayoutConstraints.first { $0 == layoutConstraint } | ||
319 | + guard let updateLayoutConstraint = existingLayoutConstraint else { | ||
320 | + fatalError("Updated constraint could not find existing matching constraint to update: \(layoutConstraint)") | ||
321 | + } | ||
322 | + | ||
323 | + let updateLayoutAttribute = (updateLayoutConstraint.secondAttribute == .notAnAttribute) ? updateLayoutConstraint.firstAttribute : updateLayoutConstraint.secondAttribute | ||
324 | + updateLayoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: updateLayoutAttribute) | ||
325 | + } | ||
326 | + } else { | ||
327 | + NSLayoutConstraint.activate(layoutConstraints) | ||
328 | + item.add(constraints: [self]) | ||
329 | + } | ||
330 | + } | ||
331 | + | ||
332 | + internal func deactivateIfNeeded() { | ||
333 | + guard let item = self.from.layoutConstraintItem else { | ||
334 | + print("WARNING: SnapKit failed to get from item from constraint. Deactivate will be a no-op.") | ||
335 | + return | ||
336 | + } | ||
337 | + let layoutConstraints = self.layoutConstraints | ||
338 | + NSLayoutConstraint.deactivate(layoutConstraints) | ||
339 | + item.remove(constraints: [self]) | ||
340 | + } | ||
341 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +internal struct ConstraintAttributes : OptionSet, ExpressibleByIntegerLiteral { | ||
32 | + | ||
33 | + typealias IntegerLiteralType = UInt | ||
34 | + | ||
35 | + internal init(rawValue: UInt) { | ||
36 | + self.rawValue = rawValue | ||
37 | + } | ||
38 | + internal init(_ rawValue: UInt) { | ||
39 | + self.init(rawValue: rawValue) | ||
40 | + } | ||
41 | + internal init(nilLiteral: ()) { | ||
42 | + self.rawValue = 0 | ||
43 | + } | ||
44 | + internal init(integerLiteral rawValue: IntegerLiteralType) { | ||
45 | + self.init(rawValue: rawValue) | ||
46 | + } | ||
47 | + | ||
48 | + internal private(set) var rawValue: UInt | ||
49 | + internal static var allZeros: ConstraintAttributes { return 0 } | ||
50 | + internal static func convertFromNilLiteral() -> ConstraintAttributes { return 0 } | ||
51 | + internal var boolValue: Bool { return self.rawValue != 0 } | ||
52 | + | ||
53 | + internal func toRaw() -> UInt { return self.rawValue } | ||
54 | + internal static func fromRaw(_ raw: UInt) -> ConstraintAttributes? { return self.init(raw) } | ||
55 | + internal static func fromMask(_ raw: UInt) -> ConstraintAttributes { return self.init(raw) } | ||
56 | + | ||
57 | + // normal | ||
58 | + | ||
59 | + internal static var none: ConstraintAttributes { return 0 } | ||
60 | + internal static var left: ConstraintAttributes { return 1 } | ||
61 | + internal static var top: ConstraintAttributes { return 2 } | ||
62 | + internal static var right: ConstraintAttributes { return 4 } | ||
63 | + internal static var bottom: ConstraintAttributes { return 8 } | ||
64 | + internal static var leading: ConstraintAttributes { return 16 } | ||
65 | + internal static var trailing: ConstraintAttributes { return 32 } | ||
66 | + internal static var width: ConstraintAttributes { return 64 } | ||
67 | + internal static var height: ConstraintAttributes { return 128 } | ||
68 | + internal static var centerX: ConstraintAttributes { return 256 } | ||
69 | + internal static var centerY: ConstraintAttributes { return 512 } | ||
70 | + internal static var lastBaseline: ConstraintAttributes { return 1024 } | ||
71 | + | ||
72 | + @available(iOS 8.0, OSX 10.11, *) | ||
73 | + internal static var firstBaseline: ConstraintAttributes { return 2048 } | ||
74 | + | ||
75 | + @available(iOS 8.0, *) | ||
76 | + internal static var leftMargin: ConstraintAttributes { return 4096 } | ||
77 | + | ||
78 | + @available(iOS 8.0, *) | ||
79 | + internal static var rightMargin: ConstraintAttributes { return 8192 } | ||
80 | + | ||
81 | + @available(iOS 8.0, *) | ||
82 | + internal static var topMargin: ConstraintAttributes { return 16384 } | ||
83 | + | ||
84 | + @available(iOS 8.0, *) | ||
85 | + internal static var bottomMargin: ConstraintAttributes { return 32768 } | ||
86 | + | ||
87 | + @available(iOS 8.0, *) | ||
88 | + internal static var leadingMargin: ConstraintAttributes { return 65536 } | ||
89 | + | ||
90 | + @available(iOS 8.0, *) | ||
91 | + internal static var trailingMargin: ConstraintAttributes { return 131072 } | ||
92 | + | ||
93 | + @available(iOS 8.0, *) | ||
94 | + internal static var centerXWithinMargins: ConstraintAttributes { return 262144 } | ||
95 | + | ||
96 | + @available(iOS 8.0, *) | ||
97 | + internal static var centerYWithinMargins: ConstraintAttributes { return 524288 } | ||
98 | + | ||
99 | + // aggregates | ||
100 | + | ||
101 | + internal static var edges: ConstraintAttributes { return 15 } | ||
102 | + internal static var directionalEdges: ConstraintAttributes { return 58 } | ||
103 | + internal static var size: ConstraintAttributes { return 192 } | ||
104 | + internal static var center: ConstraintAttributes { return 768 } | ||
105 | + | ||
106 | + @available(iOS 8.0, *) | ||
107 | + internal static var margins: ConstraintAttributes { return 61440 } | ||
108 | + | ||
109 | + @available(iOS 8.0, *) | ||
110 | + internal static var directionalMargins: ConstraintAttributes { return 245760 } | ||
111 | + | ||
112 | + @available(iOS 8.0, *) | ||
113 | + internal static var centerWithinMargins: ConstraintAttributes { return 786432 } | ||
114 | + | ||
115 | + internal var layoutAttributes:[LayoutAttribute] { | ||
116 | + var attrs = [LayoutAttribute]() | ||
117 | + if (self.contains(ConstraintAttributes.left)) { | ||
118 | + attrs.append(.left) | ||
119 | + } | ||
120 | + if (self.contains(ConstraintAttributes.top)) { | ||
121 | + attrs.append(.top) | ||
122 | + } | ||
123 | + if (self.contains(ConstraintAttributes.right)) { | ||
124 | + attrs.append(.right) | ||
125 | + } | ||
126 | + if (self.contains(ConstraintAttributes.bottom)) { | ||
127 | + attrs.append(.bottom) | ||
128 | + } | ||
129 | + if (self.contains(ConstraintAttributes.leading)) { | ||
130 | + attrs.append(.leading) | ||
131 | + } | ||
132 | + if (self.contains(ConstraintAttributes.trailing)) { | ||
133 | + attrs.append(.trailing) | ||
134 | + } | ||
135 | + if (self.contains(ConstraintAttributes.width)) { | ||
136 | + attrs.append(.width) | ||
137 | + } | ||
138 | + if (self.contains(ConstraintAttributes.height)) { | ||
139 | + attrs.append(.height) | ||
140 | + } | ||
141 | + if (self.contains(ConstraintAttributes.centerX)) { | ||
142 | + attrs.append(.centerX) | ||
143 | + } | ||
144 | + if (self.contains(ConstraintAttributes.centerY)) { | ||
145 | + attrs.append(.centerY) | ||
146 | + } | ||
147 | + if (self.contains(ConstraintAttributes.lastBaseline)) { | ||
148 | + attrs.append(.lastBaseline) | ||
149 | + } | ||
150 | + | ||
151 | + #if os(iOS) || os(tvOS) | ||
152 | + if (self.contains(ConstraintAttributes.firstBaseline)) { | ||
153 | + attrs.append(.firstBaseline) | ||
154 | + } | ||
155 | + if (self.contains(ConstraintAttributes.leftMargin)) { | ||
156 | + attrs.append(.leftMargin) | ||
157 | + } | ||
158 | + if (self.contains(ConstraintAttributes.rightMargin)) { | ||
159 | + attrs.append(.rightMargin) | ||
160 | + } | ||
161 | + if (self.contains(ConstraintAttributes.topMargin)) { | ||
162 | + attrs.append(.topMargin) | ||
163 | + } | ||
164 | + if (self.contains(ConstraintAttributes.bottomMargin)) { | ||
165 | + attrs.append(.bottomMargin) | ||
166 | + } | ||
167 | + if (self.contains(ConstraintAttributes.leadingMargin)) { | ||
168 | + attrs.append(.leadingMargin) | ||
169 | + } | ||
170 | + if (self.contains(ConstraintAttributes.trailingMargin)) { | ||
171 | + attrs.append(.trailingMargin) | ||
172 | + } | ||
173 | + if (self.contains(ConstraintAttributes.centerXWithinMargins)) { | ||
174 | + attrs.append(.centerXWithinMargins) | ||
175 | + } | ||
176 | + if (self.contains(ConstraintAttributes.centerYWithinMargins)) { | ||
177 | + attrs.append(.centerYWithinMargins) | ||
178 | + } | ||
179 | + #endif | ||
180 | + | ||
181 | + return attrs | ||
182 | + } | ||
183 | +} | ||
184 | + | ||
185 | +internal func + (left: ConstraintAttributes, right: ConstraintAttributes) -> ConstraintAttributes { | ||
186 | + return left.union(right) | ||
187 | +} | ||
188 | + | ||
189 | +internal func +=(left: inout ConstraintAttributes, right: ConstraintAttributes) { | ||
190 | + left.formUnion(right) | ||
191 | +} | ||
192 | + | ||
193 | +internal func -=(left: inout ConstraintAttributes, right: ConstraintAttributes) { | ||
194 | + left.subtract(right) | ||
195 | +} | ||
196 | + | ||
197 | +internal func ==(left: ConstraintAttributes, right: ConstraintAttributes) -> Bool { | ||
198 | + return left.rawValue == right.rawValue | ||
199 | +} |
Pods/SnapKit/Source/ConstraintConfig.swift
0 → 100644
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | + public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection | ||
27 | +#else | ||
28 | + import AppKit | ||
29 | + public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection | ||
30 | +#endif | ||
31 | + | ||
32 | + | ||
33 | +public struct ConstraintConfig { | ||
34 | + | ||
35 | + public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight | ||
36 | + | ||
37 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public protocol ConstraintConstantTarget { | ||
32 | +} | ||
33 | + | ||
34 | +extension CGPoint: ConstraintConstantTarget { | ||
35 | +} | ||
36 | + | ||
37 | +extension CGSize: ConstraintConstantTarget { | ||
38 | +} | ||
39 | + | ||
40 | +extension ConstraintInsets: ConstraintConstantTarget { | ||
41 | +} | ||
42 | + | ||
43 | +#if os(iOS) || os(tvOS) | ||
44 | +@available(iOS 11.0, tvOS 11.0, *) | ||
45 | +extension ConstraintDirectionalInsets: ConstraintConstantTarget { | ||
46 | +} | ||
47 | +#endif | ||
48 | + | ||
49 | +extension ConstraintConstantTarget { | ||
50 | + | ||
51 | + internal func constraintConstantTargetValueFor(layoutAttribute: LayoutAttribute) -> CGFloat { | ||
52 | + if let value = self as? CGFloat { | ||
53 | + return value | ||
54 | + } | ||
55 | + | ||
56 | + if let value = self as? Float { | ||
57 | + return CGFloat(value) | ||
58 | + } | ||
59 | + | ||
60 | + if let value = self as? Double { | ||
61 | + return CGFloat(value) | ||
62 | + } | ||
63 | + | ||
64 | + if let value = self as? Int { | ||
65 | + return CGFloat(value) | ||
66 | + } | ||
67 | + | ||
68 | + if let value = self as? UInt { | ||
69 | + return CGFloat(value) | ||
70 | + } | ||
71 | + | ||
72 | + if let value = self as? CGSize { | ||
73 | + if layoutAttribute == .width { | ||
74 | + return value.width | ||
75 | + } else if layoutAttribute == .height { | ||
76 | + return value.height | ||
77 | + } else { | ||
78 | + return 0.0 | ||
79 | + } | ||
80 | + } | ||
81 | + | ||
82 | + if let value = self as? CGPoint { | ||
83 | + #if os(iOS) || os(tvOS) | ||
84 | + switch layoutAttribute { | ||
85 | + case .left, .right, .leading, .trailing, .centerX, .leftMargin, .rightMargin, .leadingMargin, .trailingMargin, .centerXWithinMargins: | ||
86 | + return value.x | ||
87 | + case .top, .bottom, .centerY, .topMargin, .bottomMargin, .centerYWithinMargins, .lastBaseline, .firstBaseline: | ||
88 | + return value.y | ||
89 | + case .width, .height, .notAnAttribute: | ||
90 | + return 0.0 | ||
91 | + #if swift(>=5.0) | ||
92 | + @unknown default: | ||
93 | + return 0.0 | ||
94 | + #endif | ||
95 | + } | ||
96 | + #else | ||
97 | + switch layoutAttribute { | ||
98 | + case .left, .right, .leading, .trailing, .centerX: | ||
99 | + return value.x | ||
100 | + case .top, .bottom, .centerY, .lastBaseline, .firstBaseline: | ||
101 | + return value.y | ||
102 | + case .width, .height, .notAnAttribute: | ||
103 | + return 0.0 | ||
104 | + #if swift(>=5.0) | ||
105 | + @unknown default: | ||
106 | + return 0.0 | ||
107 | + #endif | ||
108 | + } | ||
109 | + #endif | ||
110 | + } | ||
111 | + | ||
112 | + if let value = self as? ConstraintInsets { | ||
113 | + #if os(iOS) || os(tvOS) | ||
114 | + switch layoutAttribute { | ||
115 | + case .left, .leftMargin: | ||
116 | + return value.left | ||
117 | + case .top, .topMargin, .firstBaseline: | ||
118 | + return value.top | ||
119 | + case .right, .rightMargin: | ||
120 | + return -value.right | ||
121 | + case .bottom, .bottomMargin, .lastBaseline: | ||
122 | + return -value.bottom | ||
123 | + case .leading, .leadingMargin: | ||
124 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right | ||
125 | + case .trailing, .trailingMargin: | ||
126 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left | ||
127 | + case .centerX, .centerXWithinMargins: | ||
128 | + return (value.left - value.right) / 2 | ||
129 | + case .centerY, .centerYWithinMargins: | ||
130 | + return (value.top - value.bottom) / 2 | ||
131 | + case .width: | ||
132 | + return -(value.left + value.right) | ||
133 | + case .height: | ||
134 | + return -(value.top + value.bottom) | ||
135 | + case .notAnAttribute: | ||
136 | + return 0.0 | ||
137 | + #if swift(>=5.0) | ||
138 | + @unknown default: | ||
139 | + return 0.0 | ||
140 | + #endif | ||
141 | + } | ||
142 | + #else | ||
143 | + switch layoutAttribute { | ||
144 | + case .left: | ||
145 | + return value.left | ||
146 | + case .top, .firstBaseline: | ||
147 | + return value.top | ||
148 | + case .right: | ||
149 | + return -value.right | ||
150 | + case .bottom, .lastBaseline: | ||
151 | + return -value.bottom | ||
152 | + case .leading: | ||
153 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right | ||
154 | + case .trailing: | ||
155 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left | ||
156 | + case .centerX: | ||
157 | + return (value.left - value.right) / 2 | ||
158 | + case .centerY: | ||
159 | + return (value.top - value.bottom) / 2 | ||
160 | + case .width: | ||
161 | + return -(value.left + value.right) | ||
162 | + case .height: | ||
163 | + return -(value.top + value.bottom) | ||
164 | + case .notAnAttribute: | ||
165 | + return 0.0 | ||
166 | + #if swift(>=5.0) | ||
167 | + @unknown default: | ||
168 | + return 0.0 | ||
169 | + #endif | ||
170 | + } | ||
171 | + #endif | ||
172 | + } | ||
173 | + | ||
174 | + #if os(iOS) || os(tvOS) | ||
175 | + if #available(iOS 11.0, tvOS 11.0, *), let value = self as? ConstraintDirectionalInsets { | ||
176 | + switch layoutAttribute { | ||
177 | + case .left, .leftMargin: | ||
178 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.leading : value.trailing | ||
179 | + case .top, .topMargin, .firstBaseline: | ||
180 | + return value.top | ||
181 | + case .right, .rightMargin: | ||
182 | + return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.trailing : -value.leading | ||
183 | + case .bottom, .bottomMargin, .lastBaseline: | ||
184 | + return -value.bottom | ||
185 | + case .leading, .leadingMargin: | ||
186 | + return value.leading | ||
187 | + case .trailing, .trailingMargin: | ||
188 | + return -value.trailing | ||
189 | + case .centerX, .centerXWithinMargins: | ||
190 | + return (value.leading - value.trailing) / 2 | ||
191 | + case .centerY, .centerYWithinMargins: | ||
192 | + return (value.top - value.bottom) / 2 | ||
193 | + case .width: | ||
194 | + return -(value.leading + value.trailing) | ||
195 | + case .height: | ||
196 | + return -(value.top + value.bottom) | ||
197 | + case .notAnAttribute: | ||
198 | + return 0.0 | ||
199 | + #if swift(>=5.0) | ||
200 | + @unknown default: | ||
201 | + return 0.0 | ||
202 | + #else | ||
203 | + default: | ||
204 | + return 0.0 | ||
205 | + #endif | ||
206 | + } | ||
207 | + } | ||
208 | + #endif | ||
209 | + | ||
210 | + return 0.0 | ||
211 | + } | ||
212 | + | ||
213 | +} |
Pods/SnapKit/Source/ConstraintDSL.swift
0 → 100644
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public protocol ConstraintDSL { | ||
32 | + | ||
33 | + var target: AnyObject? { get } | ||
34 | + | ||
35 | + func setLabel(_ value: String?) | ||
36 | + func label() -> String? | ||
37 | + | ||
38 | +} | ||
39 | +extension ConstraintDSL { | ||
40 | + | ||
41 | + public func setLabel(_ value: String?) { | ||
42 | + objc_setAssociatedObject(self.target as Any, &labelKey, value, .OBJC_ASSOCIATION_COPY_NONATOMIC) | ||
43 | + } | ||
44 | + public func label() -> String? { | ||
45 | + return objc_getAssociatedObject(self.target as Any, &labelKey) as? String | ||
46 | + } | ||
47 | + | ||
48 | +} | ||
49 | +private var labelKey: UInt8 = 0 | ||
50 | + | ||
51 | + | ||
52 | +public protocol ConstraintBasicAttributesDSL : ConstraintDSL { | ||
53 | +} | ||
54 | +extension ConstraintBasicAttributesDSL { | ||
55 | + | ||
56 | + // MARK: Basics | ||
57 | + | ||
58 | + public var left: ConstraintItem { | ||
59 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left) | ||
60 | + } | ||
61 | + | ||
62 | + public var top: ConstraintItem { | ||
63 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) | ||
64 | + } | ||
65 | + | ||
66 | + public var right: ConstraintItem { | ||
67 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.right) | ||
68 | + } | ||
69 | + | ||
70 | + public var bottom: ConstraintItem { | ||
71 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) | ||
72 | + } | ||
73 | + | ||
74 | + public var leading: ConstraintItem { | ||
75 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leading) | ||
76 | + } | ||
77 | + | ||
78 | + public var trailing: ConstraintItem { | ||
79 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailing) | ||
80 | + } | ||
81 | + | ||
82 | + public var width: ConstraintItem { | ||
83 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.width) | ||
84 | + } | ||
85 | + | ||
86 | + public var height: ConstraintItem { | ||
87 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) | ||
88 | + } | ||
89 | + | ||
90 | + public var centerX: ConstraintItem { | ||
91 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerX) | ||
92 | + } | ||
93 | + | ||
94 | + public var centerY: ConstraintItem { | ||
95 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerY) | ||
96 | + } | ||
97 | + | ||
98 | + public var edges: ConstraintItem { | ||
99 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.edges) | ||
100 | + } | ||
101 | + | ||
102 | + public var directionalEdges: ConstraintItem { | ||
103 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalEdges) | ||
104 | + } | ||
105 | + | ||
106 | + public var size: ConstraintItem { | ||
107 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.size) | ||
108 | + } | ||
109 | + | ||
110 | + public var center: ConstraintItem { | ||
111 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center) | ||
112 | + } | ||
113 | + | ||
114 | +} | ||
115 | + | ||
116 | +public protocol ConstraintAttributesDSL : ConstraintBasicAttributesDSL { | ||
117 | +} | ||
118 | +extension ConstraintAttributesDSL { | ||
119 | + | ||
120 | + // MARK: Baselines | ||
121 | + | ||
122 | + @available(*, deprecated, message:"Use .lastBaseline instead") | ||
123 | + public var baseline: ConstraintItem { | ||
124 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) | ||
125 | + } | ||
126 | + | ||
127 | + @available(iOS 8.0, OSX 10.11, *) | ||
128 | + public var lastBaseline: ConstraintItem { | ||
129 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) | ||
130 | + } | ||
131 | + | ||
132 | + @available(iOS 8.0, OSX 10.11, *) | ||
133 | + public var firstBaseline: ConstraintItem { | ||
134 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.firstBaseline) | ||
135 | + } | ||
136 | + | ||
137 | + // MARK: Margins | ||
138 | + | ||
139 | + @available(iOS 8.0, *) | ||
140 | + public var leftMargin: ConstraintItem { | ||
141 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leftMargin) | ||
142 | + } | ||
143 | + | ||
144 | + @available(iOS 8.0, *) | ||
145 | + public var topMargin: ConstraintItem { | ||
146 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.topMargin) | ||
147 | + } | ||
148 | + | ||
149 | + @available(iOS 8.0, *) | ||
150 | + public var rightMargin: ConstraintItem { | ||
151 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.rightMargin) | ||
152 | + } | ||
153 | + | ||
154 | + @available(iOS 8.0, *) | ||
155 | + public var bottomMargin: ConstraintItem { | ||
156 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottomMargin) | ||
157 | + } | ||
158 | + | ||
159 | + @available(iOS 8.0, *) | ||
160 | + public var leadingMargin: ConstraintItem { | ||
161 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leadingMargin) | ||
162 | + } | ||
163 | + | ||
164 | + @available(iOS 8.0, *) | ||
165 | + public var trailingMargin: ConstraintItem { | ||
166 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailingMargin) | ||
167 | + } | ||
168 | + | ||
169 | + @available(iOS 8.0, *) | ||
170 | + public var centerXWithinMargins: ConstraintItem { | ||
171 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerXWithinMargins) | ||
172 | + } | ||
173 | + | ||
174 | + @available(iOS 8.0, *) | ||
175 | + public var centerYWithinMargins: ConstraintItem { | ||
176 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerYWithinMargins) | ||
177 | + } | ||
178 | + | ||
179 | + @available(iOS 8.0, *) | ||
180 | + public var margins: ConstraintItem { | ||
181 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.margins) | ||
182 | + } | ||
183 | + | ||
184 | + @available(iOS 8.0, *) | ||
185 | + public var directionalMargins: ConstraintItem { | ||
186 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalMargins) | ||
187 | + } | ||
188 | + | ||
189 | + @available(iOS 8.0, *) | ||
190 | + public var centerWithinMargins: ConstraintItem { | ||
191 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerWithinMargins) | ||
192 | + } | ||
193 | + | ||
194 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public class ConstraintDescription { | ||
32 | + | ||
33 | + internal let item: LayoutConstraintItem | ||
34 | + internal var attributes: ConstraintAttributes | ||
35 | + internal var relation: ConstraintRelation? = nil | ||
36 | + internal var sourceLocation: (String, UInt)? = nil | ||
37 | + internal var label: String? = nil | ||
38 | + internal var related: ConstraintItem? = nil | ||
39 | + internal var multiplier: ConstraintMultiplierTarget = 1.0 | ||
40 | + internal var constant: ConstraintConstantTarget = 0.0 | ||
41 | + internal var priority: ConstraintPriorityTarget = 1000.0 | ||
42 | + internal lazy var constraint: Constraint? = { | ||
43 | + guard let relation = self.relation, | ||
44 | + let related = self.related, | ||
45 | + let sourceLocation = self.sourceLocation else { | ||
46 | + return nil | ||
47 | + } | ||
48 | + let from = ConstraintItem(target: self.item, attributes: self.attributes) | ||
49 | + | ||
50 | + return Constraint( | ||
51 | + from: from, | ||
52 | + to: related, | ||
53 | + relation: relation, | ||
54 | + sourceLocation: sourceLocation, | ||
55 | + label: self.label, | ||
56 | + multiplier: self.multiplier, | ||
57 | + constant: self.constant, | ||
58 | + priority: self.priority | ||
59 | + ) | ||
60 | + }() | ||
61 | + | ||
62 | + // MARK: Initialization | ||
63 | + | ||
64 | + internal init(item: LayoutConstraintItem, attributes: ConstraintAttributes) { | ||
65 | + self.item = item | ||
66 | + self.attributes = attributes | ||
67 | + } | ||
68 | + | ||
69 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | +import UIKit | ||
26 | +#else | ||
27 | +import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | +#if os(iOS) || os(tvOS) | ||
31 | +public protocol ConstraintDirectionalInsetTarget: ConstraintConstantTarget { | ||
32 | +} | ||
33 | + | ||
34 | +@available(iOS 11.0, tvOS 11.0, *) | ||
35 | +extension ConstraintDirectionalInsets: ConstraintDirectionalInsetTarget { | ||
36 | +} | ||
37 | + | ||
38 | +extension ConstraintDirectionalInsetTarget { | ||
39 | + | ||
40 | + @available(iOS 11.0, tvOS 11.0, *) | ||
41 | + internal var constraintDirectionalInsetTargetValue: ConstraintDirectionalInsets { | ||
42 | + if let amount = self as? ConstraintDirectionalInsets { | ||
43 | + return amount | ||
44 | + } else { | ||
45 | + return ConstraintDirectionalInsets(top: 0, leading: 0, bottom: 0, trailing: 0) | ||
46 | + } | ||
47 | + } | ||
48 | +} | ||
49 | +#endif |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +#if os(iOS) || os(tvOS) | ||
32 | + @available(iOS 11.0, tvOS 11.0, *) | ||
33 | + public typealias ConstraintDirectionalInsets = NSDirectionalEdgeInsets | ||
34 | +#endif |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public protocol ConstraintInsetTarget: ConstraintConstantTarget { | ||
32 | +} | ||
33 | + | ||
34 | +extension Int: ConstraintInsetTarget { | ||
35 | +} | ||
36 | + | ||
37 | +extension UInt: ConstraintInsetTarget { | ||
38 | +} | ||
39 | + | ||
40 | +extension Float: ConstraintInsetTarget { | ||
41 | +} | ||
42 | + | ||
43 | +extension Double: ConstraintInsetTarget { | ||
44 | +} | ||
45 | + | ||
46 | +extension CGFloat: ConstraintInsetTarget { | ||
47 | +} | ||
48 | + | ||
49 | +extension ConstraintInsets: ConstraintInsetTarget { | ||
50 | +} | ||
51 | + | ||
52 | +extension ConstraintInsetTarget { | ||
53 | + | ||
54 | + internal var constraintInsetTargetValue: ConstraintInsets { | ||
55 | + if let amount = self as? ConstraintInsets { | ||
56 | + return amount | ||
57 | + } else if let amount = self as? Float { | ||
58 | + return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) | ||
59 | + } else if let amount = self as? Double { | ||
60 | + return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) | ||
61 | + } else if let amount = self as? CGFloat { | ||
62 | + return ConstraintInsets(top: amount, left: amount, bottom: amount, right: amount) | ||
63 | + } else if let amount = self as? Int { | ||
64 | + return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) | ||
65 | + } else if let amount = self as? UInt { | ||
66 | + return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) | ||
67 | + } else { | ||
68 | + return ConstraintInsets(top: 0, left: 0, bottom: 0, right: 0) | ||
69 | + } | ||
70 | + } | ||
71 | + | ||
72 | +} |
Pods/SnapKit/Source/ConstraintInsets.swift
0 → 100644
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +#if os(iOS) || os(tvOS) | ||
32 | + public typealias ConstraintInsets = UIEdgeInsets | ||
33 | +#else | ||
34 | + public typealias ConstraintInsets = NSEdgeInsets | ||
35 | +#endif |
Pods/SnapKit/Source/ConstraintItem.swift
0 → 100644
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public final class ConstraintItem { | ||
32 | + | ||
33 | + internal weak var target: AnyObject? | ||
34 | + internal let attributes: ConstraintAttributes | ||
35 | + | ||
36 | + internal init(target: AnyObject?, attributes: ConstraintAttributes) { | ||
37 | + self.target = target | ||
38 | + self.attributes = attributes | ||
39 | + } | ||
40 | + | ||
41 | + internal var layoutConstraintItem: LayoutConstraintItem? { | ||
42 | + return self.target as? LayoutConstraintItem | ||
43 | + } | ||
44 | + | ||
45 | +} | ||
46 | + | ||
47 | +public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { | ||
48 | + // pointer equality | ||
49 | + guard lhs !== rhs else { | ||
50 | + return true | ||
51 | + } | ||
52 | + | ||
53 | + // must both have valid targets and identical attributes | ||
54 | + guard let target1 = lhs.target, | ||
55 | + let target2 = rhs.target, | ||
56 | + target1 === target2 && lhs.attributes == rhs.attributes else { | ||
57 | + return false | ||
58 | + } | ||
59 | + | ||
60 | + return true | ||
61 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#endif | ||
27 | + | ||
28 | + | ||
29 | +@available(iOS 9.0, OSX 10.11, *) | ||
30 | +public extension ConstraintLayoutGuide { | ||
31 | + | ||
32 | + var snp: ConstraintLayoutGuideDSL { | ||
33 | + return ConstraintLayoutGuideDSL(guide: self) | ||
34 | + } | ||
35 | + | ||
36 | +} |
1 | +// | ||
2 | +// SnapKit | ||
3 | +// | ||
4 | +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
5 | +// | ||
6 | +// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | +// of this software and associated documentation files (the "Software"), to deal | ||
8 | +// in the Software without restriction, including without limitation the rights | ||
9 | +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | +// copies of the Software, and to permit persons to whom the Software is | ||
11 | +// furnished to do so, subject to the following conditions: | ||
12 | +// | ||
13 | +// The above copyright notice and this permission notice shall be included in | ||
14 | +// all copies or substantial portions of the Software. | ||
15 | +// | ||
16 | +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | +// THE SOFTWARE. | ||
23 | + | ||
24 | +#if os(iOS) || os(tvOS) | ||
25 | + import UIKit | ||
26 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +#if os(iOS) || os(tvOS) | ||
32 | + @available(iOS 9.0, *) | ||
33 | + public typealias ConstraintLayoutGuide = UILayoutGuide | ||
34 | +#else | ||
35 | + @available(OSX 10.11, *) | ||
36 | + public typealias ConstraintLayoutGuide = NSLayoutGuide | ||
37 | +#endif |
Please
register
or
login
to post a comment