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
1 | +# Uncomment the next line to define a global platform for your project | |
2 | +# platform :ios, '9.0' | |
3 | + | |
4 | +target 'InterQR-Internship' do | |
5 | + # Comment the next line if you don't want to use dynamic frameworks | |
6 | + use_frameworks! | |
7 | + | |
8 | + # Pods for InterQR-Internship | |
9 | +pod 'SnapKit' | |
10 | +end | ... | ... |
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