Showing
216 changed files
with
8575 additions
and
0 deletions
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 skModernist(type: SkModernistFontType, ofSize: CGFloat) -> UIFont { | ||
18 | + if let font = UIFont(name: type.rawValue, size: ofSize) { | ||
19 | + return font | ||
20 | + } else { | ||
21 | + return .systemFont(ofSize: ofSize) | ||
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 | + 00E581BB284F71CD00E779FB /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E581BA284F71CD00E779FB /* Checkbox.swift */; }; | ||
11 | + 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */; }; | ||
12 | + 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17058D53284A4F670078DD82 /* CodeVerificationView.swift */; }; | ||
13 | + 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */; }; | ||
14 | + 17287C692848C69600AA7113 /* Sk-Modernist-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */; }; | ||
15 | + 17287C6A2848C69600AA7113 /* Sk-Modernist-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */; }; | ||
16 | + 17287C6D2848C69600AA7113 /* Sk-Modernist-Mono.otf in Resources */ = {isa = PBXBuildFile; fileRef = 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */; }; | ||
17 | + 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E21C28465162006C7C29 /* PhoneService.swift */; }; | ||
18 | + 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E21E28465595006C7C29 /* PhoneNumberView.swift */; }; | ||
19 | + 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */; }; | ||
20 | + 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */; }; | ||
21 | + 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */; }; | ||
22 | + 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */; }; | ||
23 | + 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D92850F5F1003F1806 /* SettingsView.swift */; }; | ||
24 | + 1738F7DC2850F980003F1806 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7DB2850F980003F1806 /* ProfileView.swift */; }; | ||
25 | + 1778DA3E2850FF89006619C4 /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1778DA3D2850FF89006619C4 /* NotificationsView.swift */; }; | ||
26 | + 1778DA402851042F006619C4 /* EditInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1778DA3F2851042F006619C4 /* EditInfoView.swift */; }; | ||
27 | + 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */; }; | ||
28 | + 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE57284FD20C003B6959 /* HomeViewController.swift */; }; | ||
29 | + 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE59284FD293003B6959 /* HomeView.swift */; }; | ||
30 | + 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */; }; | ||
31 | + 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */; }; | ||
32 | + 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */; }; | ||
33 | + 17CF9EEA2844ED90000D8077 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 17CF9EE92844ED90000D8077 /* Assets.xcassets */; }; | ||
34 | + 17CF9EED2844ED90000D8077 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */; }; | ||
35 | + 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EF62844EF8B000D8077 /* VerificationView.swift */; }; | ||
36 | + CADC9D02EAEA6638FF235EF7 /* Pods_InterQR_Internship.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */; }; | ||
37 | +/* End PBXBuildFile section */ | ||
38 | + | ||
39 | +/* Begin PBXFileReference section */ | ||
40 | + 00E581BA284F71CD00E779FB /* Checkbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; }; | ||
41 | + 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeVerificationViewController.swift; sourceTree = "<group>"; }; | ||
42 | + 17058D53284A4F670078DD82 /* CodeVerificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeVerificationView.swift; sourceTree = "<group>"; }; | ||
43 | + 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Fonts + Extension.swift"; sourceTree = "<group>"; }; | ||
44 | + 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Bold.otf"; sourceTree = "<group>"; }; | ||
45 | + 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Regular.otf"; sourceTree = "<group>"; }; | ||
46 | + 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Sk-Modernist-Mono.otf"; sourceTree = "<group>"; }; | ||
47 | + 1729E21C28465162006C7C29 /* PhoneService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneService.swift; sourceTree = "<group>"; }; | ||
48 | + 1729E21E28465595006C7C29 /* PhoneNumberView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberView.swift; sourceTree = "<group>"; }; | ||
49 | + 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhonePickerModel.swift; sourceTree = "<group>"; }; | ||
50 | + 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldWithPadding.swift; sourceTree = "<group>"; }; | ||
51 | + 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickerViewCell.swift; sourceTree = "<group>"; }; | ||
52 | + 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; }; | ||
53 | + 1738F7D92850F5F1003F1806 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; }; | ||
54 | + 1738F7DB2850F980003F1806 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; }; | ||
55 | + 1778DA3D2850FF89006619C4 /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = "<group>"; }; | ||
56 | + 1778DA3F2851042F006619C4 /* EditInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditInfoView.swift; sourceTree = "<group>"; }; | ||
57 | + 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTableViewCell.swift; sourceTree = "<group>"; }; | ||
58 | + 17ABFE57284FD20C003B6959 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; }; | ||
59 | + 17ABFE59284FD293003B6959 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; }; | ||
60 | + 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "InterQR-Internship.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
61 | + 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||
62 | + 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; | ||
63 | + 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerificationViewController.swift; sourceTree = "<group>"; }; | ||
64 | + 17CF9EE92844ED90000D8077 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||
65 | + 17CF9EEC2844ED90000D8077 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||
66 | + 17CF9EEE2844ED90000D8077 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
67 | + 17CF9EF62844EF8B000D8077 /* VerificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerificationView.swift; sourceTree = "<group>"; }; | ||
68 | + 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>"; }; | ||
69 | + 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>"; }; | ||
70 | + C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_InterQR_Internship.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
71 | +/* End PBXFileReference section */ | ||
72 | + | ||
73 | +/* Begin PBXFrameworksBuildPhase section */ | ||
74 | + 17CF9EDA2844ED8F000D8077 /* Frameworks */ = { | ||
75 | + isa = PBXFrameworksBuildPhase; | ||
76 | + buildActionMask = 2147483647; | ||
77 | + files = ( | ||
78 | + CADC9D02EAEA6638FF235EF7 /* Pods_InterQR_Internship.framework in Frameworks */, | ||
79 | + ); | ||
80 | + runOnlyForDeploymentPostprocessing = 0; | ||
81 | + }; | ||
82 | +/* End PBXFrameworksBuildPhase section */ | ||
83 | + | ||
84 | +/* Begin PBXGroup section */ | ||
85 | + 00E581B0284F666000E779FB /* Modules */ = { | ||
86 | + isa = PBXGroup; | ||
87 | + children = ( | ||
88 | + 1738F7D42850F5A1003F1806 /* SettingsScreen */, | ||
89 | + 17ABFE54284FD1C8003B6959 /* HomeScreen */, | ||
90 | + 00E581B1284F666600E779FB /* VerificationSceen */, | ||
91 | + 00E581B4284F669600E779FB /* OTPScreen */, | ||
92 | + ); | ||
93 | + path = Modules; | ||
94 | + sourceTree = "<group>"; | ||
95 | + }; | ||
96 | + 00E581B1284F666600E779FB /* VerificationSceen */ = { | ||
97 | + isa = PBXGroup; | ||
98 | + children = ( | ||
99 | + 00E581B3284F667C00E779FB /* ViewController */, | ||
100 | + 00E581B2284F667600E779FB /* View */, | ||
101 | + ); | ||
102 | + path = VerificationSceen; | ||
103 | + sourceTree = "<group>"; | ||
104 | + }; | ||
105 | + 00E581B2284F667600E779FB /* View */ = { | ||
106 | + isa = PBXGroup; | ||
107 | + children = ( | ||
108 | + 1729E21E28465595006C7C29 /* PhoneNumberView.swift */, | ||
109 | + 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */, | ||
110 | + 1732AC70284769B50042C9F7 /* TextFieldWithPadding.swift */, | ||
111 | + 17CF9EF62844EF8B000D8077 /* VerificationView.swift */, | ||
112 | + ); | ||
113 | + path = View; | ||
114 | + sourceTree = "<group>"; | ||
115 | + }; | ||
116 | + 00E581B3284F667C00E779FB /* ViewController */ = { | ||
117 | + isa = PBXGroup; | ||
118 | + children = ( | ||
119 | + 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */, | ||
120 | + ); | ||
121 | + path = ViewController; | ||
122 | + sourceTree = "<group>"; | ||
123 | + }; | ||
124 | + 00E581B4284F669600E779FB /* OTPScreen */ = { | ||
125 | + isa = PBXGroup; | ||
126 | + children = ( | ||
127 | + 00E581B6284F66B400E779FB /* ViewController */, | ||
128 | + 00E581B5284F66AB00E779FB /* View */, | ||
129 | + ); | ||
130 | + path = OTPScreen; | ||
131 | + sourceTree = "<group>"; | ||
132 | + }; | ||
133 | + 00E581B5284F66AB00E779FB /* View */ = { | ||
134 | + isa = PBXGroup; | ||
135 | + children = ( | ||
136 | + 17058D53284A4F670078DD82 /* CodeVerificationView.swift */, | ||
137 | + ); | ||
138 | + path = View; | ||
139 | + sourceTree = "<group>"; | ||
140 | + }; | ||
141 | + 00E581B6284F66B400E779FB /* ViewController */ = { | ||
142 | + isa = PBXGroup; | ||
143 | + children = ( | ||
144 | + 17058D51284A4F150078DD82 /* CodeVerificationViewController.swift */, | ||
145 | + ); | ||
146 | + path = ViewController; | ||
147 | + sourceTree = "<group>"; | ||
148 | + }; | ||
149 | + 00E581B7284F71A700E779FB /* Common */ = { | ||
150 | + isa = PBXGroup; | ||
151 | + children = ( | ||
152 | + 00E581B8284F71AE00E779FB /* CustomUI */, | ||
153 | + ); | ||
154 | + path = Common; | ||
155 | + sourceTree = "<group>"; | ||
156 | + }; | ||
157 | + 00E581B8284F71AE00E779FB /* CustomUI */ = { | ||
158 | + isa = PBXGroup; | ||
159 | + children = ( | ||
160 | + 00E581B9284F71B700E779FB /* Checkbox */, | ||
161 | + ); | ||
162 | + path = CustomUI; | ||
163 | + sourceTree = "<group>"; | ||
164 | + }; | ||
165 | + 00E581B9284F71B700E779FB /* Checkbox */ = { | ||
166 | + isa = PBXGroup; | ||
167 | + children = ( | ||
168 | + 00E581BA284F71CD00E779FB /* Checkbox.swift */, | ||
169 | + ); | ||
170 | + path = Checkbox; | ||
171 | + sourceTree = "<group>"; | ||
172 | + }; | ||
173 | + 17287C5E2848AC8800AA7113 /* Fonts + Extension */ = { | ||
174 | + isa = PBXGroup; | ||
175 | + children = ( | ||
176 | + 17287C5F2848AD8D00AA7113 /* Fonts + Extension.swift */, | ||
177 | + ); | ||
178 | + path = "Fonts + Extension"; | ||
179 | + sourceTree = "<group>"; | ||
180 | + }; | ||
181 | + 1738F7D42850F5A1003F1806 /* SettingsScreen */ = { | ||
182 | + isa = PBXGroup; | ||
183 | + children = ( | ||
184 | + 1738F7D62850F5C3003F1806 /* ViewController */, | ||
185 | + 1738F7D52850F5B5003F1806 /* View */, | ||
186 | + ); | ||
187 | + path = SettingsScreen; | ||
188 | + sourceTree = "<group>"; | ||
189 | + }; | ||
190 | + 1738F7D52850F5B5003F1806 /* View */ = { | ||
191 | + isa = PBXGroup; | ||
192 | + children = ( | ||
193 | + 1738F7D92850F5F1003F1806 /* SettingsView.swift */, | ||
194 | + 1738F7DB2850F980003F1806 /* ProfileView.swift */, | ||
195 | + 1778DA3D2850FF89006619C4 /* NotificationsView.swift */, | ||
196 | + 1778DA3F2851042F006619C4 /* EditInfoView.swift */, | ||
197 | + ); | ||
198 | + path = View; | ||
199 | + sourceTree = "<group>"; | ||
200 | + }; | ||
201 | + 1738F7D62850F5C3003F1806 /* ViewController */ = { | ||
202 | + isa = PBXGroup; | ||
203 | + children = ( | ||
204 | + 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */, | ||
205 | + ); | ||
206 | + path = ViewController; | ||
207 | + sourceTree = "<group>"; | ||
208 | + }; | ||
209 | + 17ABFE54284FD1C8003B6959 /* HomeScreen */ = { | ||
210 | + isa = PBXGroup; | ||
211 | + children = ( | ||
212 | + 17ABFE55284FD1ED003B6959 /* ViewController */, | ||
213 | + 17ABFE56284FD1F5003B6959 /* VIew */, | ||
214 | + ); | ||
215 | + path = HomeScreen; | ||
216 | + sourceTree = "<group>"; | ||
217 | + }; | ||
218 | + 17ABFE55284FD1ED003B6959 /* ViewController */ = { | ||
219 | + isa = PBXGroup; | ||
220 | + children = ( | ||
221 | + 17ABFE57284FD20C003B6959 /* HomeViewController.swift */, | ||
222 | + ); | ||
223 | + path = ViewController; | ||
224 | + sourceTree = "<group>"; | ||
225 | + }; | ||
226 | + 17ABFE56284FD1F5003B6959 /* VIew */ = { | ||
227 | + isa = PBXGroup; | ||
228 | + children = ( | ||
229 | + 17ABFE59284FD293003B6959 /* HomeView.swift */, | ||
230 | + 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */, | ||
231 | + ); | ||
232 | + path = VIew; | ||
233 | + sourceTree = "<group>"; | ||
234 | + }; | ||
235 | + 17CF9ED42844ED8F000D8077 = { | ||
236 | + isa = PBXGroup; | ||
237 | + children = ( | ||
238 | + 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */, | ||
239 | + 17287C5E2848AC8800AA7113 /* Fonts + Extension */, | ||
240 | + 17FD60D82848A2CE00957A3A /* Resources */, | ||
241 | + 17CF9EDE2844ED8F000D8077 /* Products */, | ||
242 | + 86273571ED5441E00D80DE37 /* Pods */, | ||
243 | + 35BE87303DBEEF43C5C2D917 /* Frameworks */, | ||
244 | + ); | ||
245 | + sourceTree = "<group>"; | ||
246 | + }; | ||
247 | + 17CF9EDE2844ED8F000D8077 /* Products */ = { | ||
248 | + isa = PBXGroup; | ||
249 | + children = ( | ||
250 | + 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */, | ||
251 | + ); | ||
252 | + name = Products; | ||
253 | + sourceTree = "<group>"; | ||
254 | + }; | ||
255 | + 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */ = { | ||
256 | + isa = PBXGroup; | ||
257 | + children = ( | ||
258 | + 00E581B7284F71A700E779FB /* Common */, | ||
259 | + 00E581B0284F666000E779FB /* Modules */, | ||
260 | + 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */, | ||
261 | + 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */, | ||
262 | + 17CF9EE92844ED90000D8077 /* Assets.xcassets */, | ||
263 | + 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */, | ||
264 | + 17CF9EEE2844ED90000D8077 /* Info.plist */, | ||
265 | + 1729E21C28465162006C7C29 /* PhoneService.swift */, | ||
266 | + 1729E22028465DA9006C7C29 /* PhonePickerModel.swift */, | ||
267 | + ); | ||
268 | + path = "InterQR-Internship"; | ||
269 | + sourceTree = "<group>"; | ||
270 | + }; | ||
271 | + 17FD60D82848A2CE00957A3A /* Resources */ = { | ||
272 | + isa = PBXGroup; | ||
273 | + children = ( | ||
274 | + 17FD60D92848A56900957A3A /* Fonts */, | ||
275 | + ); | ||
276 | + path = Resources; | ||
277 | + sourceTree = "<group>"; | ||
278 | + }; | ||
279 | + 17FD60D92848A56900957A3A /* Fonts */ = { | ||
280 | + isa = PBXGroup; | ||
281 | + children = ( | ||
282 | + 17287C642848C69600AA7113 /* Sk-Modernist-Bold.otf */, | ||
283 | + 17287C682848C69600AA7113 /* Sk-Modernist-Mono.otf */, | ||
284 | + 17287C652848C69600AA7113 /* Sk-Modernist-Regular.otf */, | ||
285 | + ); | ||
286 | + path = Fonts; | ||
287 | + sourceTree = "<group>"; | ||
288 | + }; | ||
289 | + 35BE87303DBEEF43C5C2D917 /* Frameworks */ = { | ||
290 | + isa = PBXGroup; | ||
291 | + children = ( | ||
292 | + C7C589B3DBEEEE67D9D0AD2A /* Pods_InterQR_Internship.framework */, | ||
293 | + ); | ||
294 | + name = Frameworks; | ||
295 | + sourceTree = "<group>"; | ||
296 | + }; | ||
297 | + 86273571ED5441E00D80DE37 /* Pods */ = { | ||
298 | + isa = PBXGroup; | ||
299 | + children = ( | ||
300 | + 5DBC5918C180544DDA6F77E2 /* Pods-InterQR-Internship.debug.xcconfig */, | ||
301 | + 5BDBB5A6BD07C19C7C41277E /* Pods-InterQR-Internship.release.xcconfig */, | ||
302 | + ); | ||
303 | + path = Pods; | ||
304 | + sourceTree = "<group>"; | ||
305 | + }; | ||
306 | +/* End PBXGroup section */ | ||
307 | + | ||
308 | +/* Begin PBXNativeTarget section */ | ||
309 | + 17CF9EDC2844ED8F000D8077 /* InterQR-Internship */ = { | ||
310 | + isa = PBXNativeTarget; | ||
311 | + buildConfigurationList = 17CF9EF12844ED90000D8077 /* Build configuration list for PBXNativeTarget "InterQR-Internship" */; | ||
312 | + buildPhases = ( | ||
313 | + 02D597CE20BC23D36D22D265 /* [CP] Check Pods Manifest.lock */, | ||
314 | + 17CF9ED92844ED8F000D8077 /* Sources */, | ||
315 | + 17CF9EDA2844ED8F000D8077 /* Frameworks */, | ||
316 | + 17CF9EDB2844ED8F000D8077 /* Resources */, | ||
317 | + 156CBF425600953154887DB7 /* [CP] Embed Pods Frameworks */, | ||
318 | + ); | ||
319 | + buildRules = ( | ||
320 | + ); | ||
321 | + dependencies = ( | ||
322 | + ); | ||
323 | + name = "InterQR-Internship"; | ||
324 | + productName = "InterQR-Internship"; | ||
325 | + productReference = 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */; | ||
326 | + productType = "com.apple.product-type.application"; | ||
327 | + }; | ||
328 | +/* End PBXNativeTarget section */ | ||
329 | + | ||
330 | +/* Begin PBXProject section */ | ||
331 | + 17CF9ED52844ED8F000D8077 /* Project object */ = { | ||
332 | + isa = PBXProject; | ||
333 | + attributes = { | ||
334 | + BuildIndependentTargetsInParallel = 1; | ||
335 | + LastSwiftUpdateCheck = 1300; | ||
336 | + LastUpgradeCheck = 1300; | ||
337 | + TargetAttributes = { | ||
338 | + 17CF9EDC2844ED8F000D8077 = { | ||
339 | + CreatedOnToolsVersion = 13.0; | ||
340 | + }; | ||
341 | + }; | ||
342 | + }; | ||
343 | + buildConfigurationList = 17CF9ED82844ED8F000D8077 /* Build configuration list for PBXProject "InterQR-Internship" */; | ||
344 | + compatibilityVersion = "Xcode 13.0"; | ||
345 | + developmentRegion = en; | ||
346 | + hasScannedForEncodings = 0; | ||
347 | + knownRegions = ( | ||
348 | + en, | ||
349 | + Base, | ||
350 | + ); | ||
351 | + mainGroup = 17CF9ED42844ED8F000D8077; | ||
352 | + productRefGroup = 17CF9EDE2844ED8F000D8077 /* Products */; | ||
353 | + projectDirPath = ""; | ||
354 | + projectRoot = ""; | ||
355 | + targets = ( | ||
356 | + 17CF9EDC2844ED8F000D8077 /* InterQR-Internship */, | ||
357 | + ); | ||
358 | + }; | ||
359 | +/* End PBXProject section */ | ||
360 | + | ||
361 | +/* Begin PBXResourcesBuildPhase section */ | ||
362 | + 17CF9EDB2844ED8F000D8077 /* Resources */ = { | ||
363 | + isa = PBXResourcesBuildPhase; | ||
364 | + buildActionMask = 2147483647; | ||
365 | + files = ( | ||
366 | + 17CF9EED2844ED90000D8077 /* LaunchScreen.storyboard in Resources */, | ||
367 | + 17287C6D2848C69600AA7113 /* Sk-Modernist-Mono.otf in Resources */, | ||
368 | + 17287C692848C69600AA7113 /* Sk-Modernist-Bold.otf in Resources */, | ||
369 | + 17287C6A2848C69600AA7113 /* Sk-Modernist-Regular.otf in Resources */, | ||
370 | + 17CF9EEA2844ED90000D8077 /* Assets.xcassets in Resources */, | ||
371 | + ); | ||
372 | + runOnlyForDeploymentPostprocessing = 0; | ||
373 | + }; | ||
374 | +/* End PBXResourcesBuildPhase section */ | ||
375 | + | ||
376 | +/* Begin PBXShellScriptBuildPhase section */ | ||
377 | + 02D597CE20BC23D36D22D265 /* [CP] Check Pods Manifest.lock */ = { | ||
378 | + isa = PBXShellScriptBuildPhase; | ||
379 | + buildActionMask = 2147483647; | ||
380 | + files = ( | ||
381 | + ); | ||
382 | + inputFileListPaths = ( | ||
383 | + ); | ||
384 | + inputPaths = ( | ||
385 | + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||
386 | + "${PODS_ROOT}/Manifest.lock", | ||
387 | + ); | ||
388 | + name = "[CP] Check Pods Manifest.lock"; | ||
389 | + outputFileListPaths = ( | ||
390 | + ); | ||
391 | + outputPaths = ( | ||
392 | + "$(DERIVED_FILE_DIR)/Pods-InterQR-Internship-checkManifestLockResult.txt", | ||
393 | + ); | ||
394 | + runOnlyForDeploymentPostprocessing = 0; | ||
395 | + shellPath = /bin/sh; | ||
396 | + 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"; | ||
397 | + showEnvVarsInLog = 0; | ||
398 | + }; | ||
399 | + 156CBF425600953154887DB7 /* [CP] Embed Pods Frameworks */ = { | ||
400 | + isa = PBXShellScriptBuildPhase; | ||
401 | + buildActionMask = 2147483647; | ||
402 | + files = ( | ||
403 | + ); | ||
404 | + inputFileListPaths = ( | ||
405 | + "${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||
406 | + ); | ||
407 | + name = "[CP] Embed Pods Frameworks"; | ||
408 | + outputFileListPaths = ( | ||
409 | + "${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||
410 | + ); | ||
411 | + runOnlyForDeploymentPostprocessing = 0; | ||
412 | + shellPath = /bin/sh; | ||
413 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-frameworks.sh\"\n"; | ||
414 | + showEnvVarsInLog = 0; | ||
415 | + }; | ||
416 | +/* End PBXShellScriptBuildPhase section */ | ||
417 | + | ||
418 | +/* Begin PBXSourcesBuildPhase section */ | ||
419 | + 17CF9ED92844ED8F000D8077 /* Sources */ = { | ||
420 | + isa = PBXSourcesBuildPhase; | ||
421 | + buildActionMask = 2147483647; | ||
422 | + files = ( | ||
423 | + 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */, | ||
424 | + 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */, | ||
425 | + 1778DA402851042F006619C4 /* EditInfoView.swift in Sources */, | ||
426 | + 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */, | ||
427 | + 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */, | ||
428 | + 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */, | ||
429 | + 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */, | ||
430 | + 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */, | ||
431 | + 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */, | ||
432 | + 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */, | ||
433 | + 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */, | ||
434 | + 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */, | ||
435 | + 1778DA3E2850FF89006619C4 /* NotificationsView.swift in Sources */, | ||
436 | + 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */, | ||
437 | + 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */, | ||
438 | + 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */, | ||
439 | + 00E581BB284F71CD00E779FB /* Checkbox.swift in Sources */, | ||
440 | + 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */, | ||
441 | + 1738F7DC2850F980003F1806 /* ProfileView.swift in Sources */, | ||
442 | + 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */, | ||
443 | + 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */, | ||
444 | + ); | ||
445 | + runOnlyForDeploymentPostprocessing = 0; | ||
446 | + }; | ||
447 | +/* End PBXSourcesBuildPhase section */ | ||
448 | + | ||
449 | +/* Begin PBXVariantGroup section */ | ||
450 | + 17CF9EEB2844ED90000D8077 /* LaunchScreen.storyboard */ = { | ||
451 | + isa = PBXVariantGroup; | ||
452 | + children = ( | ||
453 | + 17CF9EEC2844ED90000D8077 /* Base */, | ||
454 | + ); | ||
455 | + name = LaunchScreen.storyboard; | ||
456 | + sourceTree = "<group>"; | ||
457 | + }; | ||
458 | +/* End PBXVariantGroup section */ | ||
459 | + | ||
460 | +/* Begin XCBuildConfiguration section */ | ||
461 | + 17CF9EEF2844ED90000D8077 /* Debug */ = { | ||
462 | + isa = XCBuildConfiguration; | ||
463 | + buildSettings = { | ||
464 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
465 | + CLANG_ANALYZER_NONNULL = YES; | ||
466 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
467 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; | ||
468 | + CLANG_CXX_LIBRARY = "libc++"; | ||
469 | + CLANG_ENABLE_MODULES = YES; | ||
470 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
471 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
472 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
473 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
474 | + CLANG_WARN_COMMA = YES; | ||
475 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
476 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
477 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
478 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
479 | + CLANG_WARN_EMPTY_BODY = YES; | ||
480 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
481 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
482 | + CLANG_WARN_INT_CONVERSION = YES; | ||
483 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
484 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
485 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
486 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
487 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
488 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
489 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
490 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
491 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
492 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
493 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
494 | + COPY_PHASE_STRIP = NO; | ||
495 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
496 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
497 | + ENABLE_TESTABILITY = YES; | ||
498 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
499 | + GCC_DYNAMIC_NO_PIC = NO; | ||
500 | + GCC_NO_COMMON_BLOCKS = YES; | ||
501 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
502 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
503 | + "DEBUG=1", | ||
504 | + "$(inherited)", | ||
505 | + ); | ||
506 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
507 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
508 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
509 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
510 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
511 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
512 | + IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||
513 | + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
514 | + MTL_FAST_MATH = YES; | ||
515 | + ONLY_ACTIVE_ARCH = YES; | ||
516 | + SDKROOT = iphoneos; | ||
517 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
518 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
519 | + }; | ||
520 | + name = Debug; | ||
521 | + }; | ||
522 | + 17CF9EF02844ED90000D8077 /* Release */ = { | ||
523 | + isa = XCBuildConfiguration; | ||
524 | + buildSettings = { | ||
525 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
526 | + CLANG_ANALYZER_NONNULL = YES; | ||
527 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
528 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; | ||
529 | + CLANG_CXX_LIBRARY = "libc++"; | ||
530 | + CLANG_ENABLE_MODULES = YES; | ||
531 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
532 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
533 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
534 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
535 | + CLANG_WARN_COMMA = YES; | ||
536 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
537 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
538 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
539 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
540 | + CLANG_WARN_EMPTY_BODY = YES; | ||
541 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
542 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
543 | + CLANG_WARN_INT_CONVERSION = YES; | ||
544 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
545 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
546 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
547 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
548 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
549 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
550 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
551 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
552 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
553 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
554 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
555 | + COPY_PHASE_STRIP = NO; | ||
556 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
557 | + ENABLE_NS_ASSERTIONS = NO; | ||
558 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
559 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
560 | + GCC_NO_COMMON_BLOCKS = YES; | ||
561 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
562 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
563 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
564 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
565 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
566 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
567 | + IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||
568 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
569 | + MTL_FAST_MATH = YES; | ||
570 | + SDKROOT = iphoneos; | ||
571 | + SWIFT_COMPILATION_MODE = wholemodule; | ||
572 | + SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||
573 | + VALIDATE_PRODUCT = YES; | ||
574 | + }; | ||
575 | + name = Release; | ||
576 | + }; | ||
577 | + 17CF9EF22844ED90000D8077 /* Debug */ = { | ||
578 | + isa = XCBuildConfiguration; | ||
579 | + baseConfigurationReference = 5DBC5918C180544DDA6F77E2 /* Pods-InterQR-Internship.debug.xcconfig */; | ||
580 | + buildSettings = { | ||
581 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
582 | + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||
583 | + CODE_SIGN_IDENTITY = "Apple Development"; | ||
584 | + CODE_SIGN_STYLE = Automatic; | ||
585 | + CURRENT_PROJECT_VERSION = 1; | ||
586 | + DEVELOPMENT_TEAM = 4X46JG9W6V; | ||
587 | + GENERATE_INFOPLIST_FILE = YES; | ||
588 | + INFOPLIST_FILE = "InterQR-Internship/Info.plist"; | ||
589 | + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
590 | + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; | ||
591 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
592 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
593 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
594 | + "$(inherited)", | ||
595 | + "@executable_path/Frameworks", | ||
596 | + ); | ||
597 | + MARKETING_VERSION = 1.0; | ||
598 | + PRODUCT_BUNDLE_IDENTIFIER = "com.TDY13.InterQR-Internship"; | ||
599 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
600 | + PROVISIONING_PROFILE_SPECIFIER = ""; | ||
601 | + SWIFT_EMIT_LOC_STRINGS = YES; | ||
602 | + SWIFT_VERSION = 5.0; | ||
603 | + TARGETED_DEVICE_FAMILY = 1; | ||
604 | + }; | ||
605 | + name = Debug; | ||
606 | + }; | ||
607 | + 17CF9EF32844ED90000D8077 /* Release */ = { | ||
608 | + isa = XCBuildConfiguration; | ||
609 | + baseConfigurationReference = 5BDBB5A6BD07C19C7C41277E /* Pods-InterQR-Internship.release.xcconfig */; | ||
610 | + buildSettings = { | ||
611 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
612 | + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||
613 | + CODE_SIGN_STYLE = Automatic; | ||
614 | + CURRENT_PROJECT_VERSION = 1; | ||
615 | + DEVELOPMENT_TEAM = 4X46JG9W6V; | ||
616 | + GENERATE_INFOPLIST_FILE = YES; | ||
617 | + INFOPLIST_FILE = "InterQR-Internship/Info.plist"; | ||
618 | + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
619 | + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; | ||
620 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
621 | + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
622 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
623 | + "$(inherited)", | ||
624 | + "@executable_path/Frameworks", | ||
625 | + ); | ||
626 | + MARKETING_VERSION = 1.0; | ||
627 | + PRODUCT_BUNDLE_IDENTIFIER = "com.TDY13.InterQR-Internship"; | ||
628 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
629 | + SWIFT_EMIT_LOC_STRINGS = YES; | ||
630 | + SWIFT_VERSION = 5.0; | ||
631 | + TARGETED_DEVICE_FAMILY = 1; | ||
632 | + }; | ||
633 | + name = Release; | ||
634 | + }; | ||
635 | +/* End XCBuildConfiguration section */ | ||
636 | + | ||
637 | +/* Begin XCConfigurationList section */ | ||
638 | + 17CF9ED82844ED8F000D8077 /* Build configuration list for PBXProject "InterQR-Internship" */ = { | ||
639 | + isa = XCConfigurationList; | ||
640 | + buildConfigurations = ( | ||
641 | + 17CF9EEF2844ED90000D8077 /* Debug */, | ||
642 | + 17CF9EF02844ED90000D8077 /* Release */, | ||
643 | + ); | ||
644 | + defaultConfigurationIsVisible = 0; | ||
645 | + defaultConfigurationName = Release; | ||
646 | + }; | ||
647 | + 17CF9EF12844ED90000D8077 /* Build configuration list for PBXNativeTarget "InterQR-Internship" */ = { | ||
648 | + isa = XCConfigurationList; | ||
649 | + buildConfigurations = ( | ||
650 | + 17CF9EF22844ED90000D8077 /* Debug */, | ||
651 | + 17CF9EF32844ED90000D8077 /* Release */, | ||
652 | + ); | ||
653 | + defaultConfigurationIsVisible = 0; | ||
654 | + defaultConfigurationName = Release; | ||
655 | + }; | ||
656 | +/* End XCConfigurationList section */ | ||
657 | + }; | ||
658 | + rootObject = 17CF9ED52844ED8F000D8077 /* Project object */; | ||
659 | +} |
InterQR-Internship.xcodeproj/xcuserdata/leyter.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.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.xcworkspace/xcuserdata/leyter.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Bucket | ||
3 | + uuid = "369C53C4-55C8-4418-98C6-B9B8FCA67812" | ||
4 | + type = "0" | ||
5 | + version = "2.0"> | ||
6 | + <Breakpoints> | ||
7 | + <BreakpointProxy | ||
8 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
9 | + <BreakpointContent | ||
10 | + uuid = "24C8FE5B-99CC-430C-9B8A-90948FD44A96" | ||
11 | + shouldBeEnabled = "No" | ||
12 | + ignoreCount = "0" | ||
13 | + continueAfterRunningActions = "No" | ||
14 | + filePath = "InterQR-Internship/Modules/VerificationSceen/ViewController/VerificationViewController.swift" | ||
15 | + startingColumnNumber = "9223372036854775807" | ||
16 | + endingColumnNumber = "9223372036854775807" | ||
17 | + startingLineNumber = "117" | ||
18 | + endingLineNumber = "117" | ||
19 | + landmarkName = "keyboardWillHide(notification:)" | ||
20 | + landmarkType = "7"> | ||
21 | + </BreakpointContent> | ||
22 | + </BreakpointProxy> | ||
23 | + </Breakpoints> | ||
24 | +</Bucket> |
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 | + "colors" : [ | ||
3 | + { | ||
4 | + "color" : { | ||
5 | + "color-space" : "srgb", | ||
6 | + "components" : { | ||
7 | + "alpha" : "1.000", | ||
8 | + "blue" : "1.000", | ||
9 | + "green" : "1.000", | ||
10 | + "red" : "1.000" | ||
11 | + } | ||
12 | + }, | ||
13 | + "idiom" : "universal" | ||
14 | + }, | ||
15 | + { | ||
16 | + "appearances" : [ | ||
17 | + { | ||
18 | + "appearance" : "luminosity", | ||
19 | + "value" : "dark" | ||
20 | + } | ||
21 | + ], | ||
22 | + "color" : { | ||
23 | + "color-space" : "srgb", | ||
24 | + "components" : { | ||
25 | + "alpha" : "1.000", | ||
26 | + "blue" : "1.000", | ||
27 | + "green" : "1.000", | ||
28 | + "red" : "1.000" | ||
29 | + } | ||
30 | + }, | ||
31 | + "idiom" : "universal" | ||
32 | + } | ||
33 | + ], | ||
34 | + "info" : { | ||
35 | + "author" : "xcode", | ||
36 | + "version" : 1 | ||
37 | + } | ||
38 | +} |
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" : "Edit.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Edit@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Edit@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
649 Bytes
1.33 KB
2.2 KB
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" : "Gear.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Setting@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Setting@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
14.5 KB
45.5 KB
92.2 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Gradient.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Rectangle 6@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Rectangle 6@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
6.77 KB
28.6 KB
54.8 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Home.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Home@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Home@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
19.2 KB
62 KB
126 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" : "LeftBlue.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Group 33668@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Group 33668@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
13.3 KB
2.41 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" : "NextPointer.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 | +} |
221 Bytes
343 Bytes
450 Bytes
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Notification.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Notification@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Notification@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
638 Bytes
1.25 KB
2.15 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
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Password.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Password@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Password@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
569 Bytes
1.05 KB
1.57 KB
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
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Profile.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Profile@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Profile@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
646 Bytes
1.44 KB
2.31 KB
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" : "RightBlue.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Group 33606@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Group 33606@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
3.99 KB
6.8 KB
1.78 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "RightYellow.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Group 33607@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Group 33607@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
2.28 KB
3.36 KB
1.15 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Setting.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Setting@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Setting@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
701 Bytes
1.34 KB
1.87 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 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Volume.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "Volume Up@2x.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "Volume Up@3x.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |
1.58 KB
2.47 KB
724 Bytes
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 | +// Checkbox.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 07.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import Foundation | ||
9 | +import UIKit | ||
10 | +class Checkbox: UIButton { | ||
11 | + | ||
12 | + private let checkboxImageView: UIImageView = { | ||
13 | + let obj = UIImageView() | ||
14 | + return obj | ||
15 | + }() | ||
16 | + | ||
17 | + private let checkBoxLabel: UILabel = { | ||
18 | + let obj = UILabel() | ||
19 | + obj.font = .skModernist(type: .regular, ofSize: 15) | ||
20 | + return obj | ||
21 | + }() | ||
22 | + | ||
23 | + override var isSelected: Bool { | ||
24 | + didSet { | ||
25 | + checkBoxLabel.textColor = isSelected ? | ||
26 | + UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1) : | ||
27 | + UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1) | ||
28 | + checkboxImageView.image = isSelected ? | ||
29 | + UIImage(named: "OnIndicator") : | ||
30 | + UIImage(named: "OffIndicator") | ||
31 | + } | ||
32 | + } | ||
33 | + | ||
34 | + var checkboxTitle: String = "" { | ||
35 | + didSet { | ||
36 | + checkBoxLabel.text = checkboxTitle | ||
37 | + } | ||
38 | + } | ||
39 | + | ||
40 | + override init(frame: CGRect) { | ||
41 | + super.init(frame: frame) | ||
42 | + setup() | ||
43 | + } | ||
44 | + | ||
45 | + required init?(coder: NSCoder) { | ||
46 | + super.init(coder: coder) | ||
47 | + setup() | ||
48 | + } | ||
49 | + | ||
50 | + private func setup() { | ||
51 | + isSelected = false | ||
52 | + | ||
53 | + addSubview(checkboxImageView) | ||
54 | + addSubview(checkBoxLabel) | ||
55 | + | ||
56 | + checkboxImageView.snp.makeConstraints { make in | ||
57 | + make.leading.equalToSuperview() | ||
58 | + make.top.bottom.equalToSuperview() | ||
59 | + } | ||
60 | + | ||
61 | + checkBoxLabel.snp.makeConstraints { make in | ||
62 | + make.top.bottom.equalToSuperview() | ||
63 | + make.trailing.equalToSuperview() | ||
64 | + make.leading.equalTo(checkboxImageView.snp.trailing).offset(5) | ||
65 | + } | ||
66 | + } | ||
67 | +} |
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> |
1 | +// | ||
2 | +// HomeTableViewCell.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class HomeTableViewCell: UITableViewCell { | ||
11 | + | ||
12 | + static let id = "HomeTableViewCell-ID" | ||
13 | + | ||
14 | + var containerView: UIView = { | ||
15 | + var obj = UIView() | ||
16 | + obj.layer.cornerRadius = 15 | ||
17 | + obj.layer.borderWidth = 1 | ||
18 | + obj.layer.borderColor = UIColor(red: 0.89, green: 0.918, blue: 0.918, alpha: 1).cgColor | ||
19 | + return obj | ||
20 | + }() | ||
21 | + var leftStatusImage: UIImageView = { | ||
22 | + var obj = UIImageView() | ||
23 | + obj.image = UIImage(named: "LeftBlue") | ||
24 | + obj.contentMode = .scaleAspectFill | ||
25 | + return obj | ||
26 | + }() | ||
27 | + var doorNameLabel: UILabel = { | ||
28 | + var obj = UILabel() | ||
29 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
30 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
31 | + obj.text = "Front Door" | ||
32 | + return obj | ||
33 | + }() | ||
34 | + var doorLocationLabel: UILabel = { | ||
35 | + var obj = UILabel() | ||
36 | + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1) | ||
37 | + obj.font = .skModernist(type: .regular, ofSize: 14) | ||
38 | + obj.text = "Home" | ||
39 | + return obj | ||
40 | + }() | ||
41 | + var lockStatusLabel: UILabel = { | ||
42 | + var obj = UILabel() | ||
43 | + obj.textColor = UIColor(red: 0, green: 0.267, blue: 0.545, alpha: 1) | ||
44 | + obj.font = .skModernist(type: .bold, ofSize: 15) | ||
45 | + obj.text = "Locked" | ||
46 | + return obj | ||
47 | + }() | ||
48 | + var rightStatusImage: UIImageView = { | ||
49 | + var obj = UIImageView() | ||
50 | + obj.image = UIImage(named: "RightBlue") | ||
51 | + return obj | ||
52 | + }() | ||
53 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | ||
54 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | ||
55 | + layout() | ||
56 | + } | ||
57 | + | ||
58 | + required init?(coder: NSCoder) { | ||
59 | + fatalError("init(coder:) has not been implemented") | ||
60 | + } | ||
61 | + | ||
62 | + func layout() { | ||
63 | + addSubview(containerView) | ||
64 | + containerView.addSubview(leftStatusImage) | ||
65 | + containerView.addSubview(doorNameLabel) | ||
66 | + containerView.addSubview(doorLocationLabel) | ||
67 | + containerView.addSubview(lockStatusLabel) | ||
68 | + containerView.addSubview(rightStatusImage) | ||
69 | + | ||
70 | + containerView.snp.makeConstraints { | ||
71 | + $0.leading.trailing.equalToSuperview() | ||
72 | + $0.bottom.equalToSuperview().offset(-8) | ||
73 | + $0.top.equalToSuperview().offset(8) | ||
74 | + } | ||
75 | + leftStatusImage.snp.makeConstraints { | ||
76 | + $0.top.equalTo(containerView.snp.top).offset(19) | ||
77 | + $0.leading.equalTo(containerView.snp.leading).offset(23) | ||
78 | + $0.height.width.equalTo(41) | ||
79 | + } | ||
80 | + doorNameLabel.snp.makeConstraints { | ||
81 | + $0.top.equalTo(snp.top).offset(22) | ||
82 | + $0.leading.equalTo(leftStatusImage.snp.trailing).offset(14) | ||
83 | + } | ||
84 | + doorLocationLabel.snp.makeConstraints { | ||
85 | + $0.top.equalTo(doorNameLabel.snp.bottom) | ||
86 | + $0.leading.equalTo(doorNameLabel.snp.leading) | ||
87 | + } | ||
88 | + lockStatusLabel.snp.makeConstraints { | ||
89 | + $0.bottom.equalTo(snp.bottom).offset(-15) | ||
90 | + $0.centerX.equalTo(snp.centerX) | ||
91 | + } | ||
92 | + rightStatusImage.snp.makeConstraints { | ||
93 | + $0.trailing.equalTo(snp.trailing).offset(-16) | ||
94 | + $0.top.equalTo(snp.top).offset(19) | ||
95 | + } | ||
96 | + } | ||
97 | +// func configureWithItem(_ item: DoorsModel) { | ||
98 | + | ||
99 | +// doorTypeLabel.text = item.purpose | ||
100 | +// doorLocationLabel.text = item.type | ||
101 | +// configureStatus(status: item.lockStatus) | ||
102 | +// rightStatusImageView.isHidden = false | ||
103 | +// } | ||
104 | +} | ||
105 | + |
1 | +// | ||
2 | +// HomeView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 07.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class HomeView: UIView { | ||
11 | + | ||
12 | + var logoView: UIImageView = { | ||
13 | + var obj = UIImageView() | ||
14 | + obj.image = UIImage(named: "InterQR") | ||
15 | + return obj | ||
16 | + }() | ||
17 | + var settingsButton: UIButton = { | ||
18 | + var obj = UIButton() | ||
19 | + obj.setImage(UIImage(named: "Setting"), for: .normal) | ||
20 | + obj.layer.borderWidth = 1 | ||
21 | + obj.layer.borderColor = UIColor(red: 0.882, green: 0.91, blue: 0.91, alpha: 1).cgColor | ||
22 | + obj.layer.cornerRadius = 13 | ||
23 | + return obj | ||
24 | + }() | ||
25 | + var homeImage: UIImageView = { | ||
26 | + var obj = UIImageView() | ||
27 | + obj.image = UIImage(named: "Home") | ||
28 | + return obj | ||
29 | + }() | ||
30 | + var welcomeLabel: UILabel = { | ||
31 | + var obj = UILabel() | ||
32 | + obj.font = .skModernist(type: .bold, ofSize: 35) | ||
33 | + obj.text = "Welcome" | ||
34 | + return obj | ||
35 | + }() | ||
36 | + var doorsLabel: UILabel = { | ||
37 | + var obj = UILabel() | ||
38 | + obj.font = .skModernist(type: .bold, ofSize: 20) | ||
39 | + obj.text = "My doors" | ||
40 | + return obj | ||
41 | + }() | ||
42 | + var tableView: UITableView = { | ||
43 | + var obj = UITableView() | ||
44 | + obj.separatorStyle = .none | ||
45 | + obj.allowsSelection = false | ||
46 | + obj.showsVerticalScrollIndicator = false | ||
47 | + return obj | ||
48 | + }() | ||
49 | + var gradientView: UIImageView = { | ||
50 | + var obj = UIImageView() | ||
51 | + obj.image = UIImage(named: "Gradient") | ||
52 | + return obj | ||
53 | + }() | ||
54 | + var passwordButton: UIButton = { | ||
55 | + var obj = UIButton() | ||
56 | + obj.setImage(UIImage(named: "Password"), for: .normal) | ||
57 | + return obj | ||
58 | + }() | ||
59 | + | ||
60 | + override init(frame: CGRect) { | ||
61 | + super.init(frame: frame) | ||
62 | + backgroundColor = .white | ||
63 | + layout() | ||
64 | + } | ||
65 | + | ||
66 | + required init?(coder: NSCoder) { | ||
67 | + fatalError("init(coder:) has not been implemented") | ||
68 | + } | ||
69 | + | ||
70 | + func layout() { | ||
71 | + addSubview(logoView) | ||
72 | + addSubview(settingsButton) | ||
73 | + addSubview(welcomeLabel) | ||
74 | + addSubview(homeImage) | ||
75 | + addSubview(doorsLabel) | ||
76 | + addSubview(tableView) | ||
77 | + addSubview(gradientView) | ||
78 | + gradientView.addSubview(passwordButton) | ||
79 | + | ||
80 | + logoView.snp.makeConstraints { | ||
81 | + $0.top.equalTo(77) | ||
82 | + $0.leading.equalTo(24) | ||
83 | + } | ||
84 | + settingsButton.snp.makeConstraints { | ||
85 | + $0.top.equalTo(snp.top).offset(63) | ||
86 | + $0.trailing.equalTo(snp.trailing).offset(-27) | ||
87 | + $0.height.width.equalTo(45) | ||
88 | + } | ||
89 | + welcomeLabel.snp.makeConstraints { | ||
90 | + $0.top.equalTo(logoView.snp.bottom).offset(63) | ||
91 | + $0.leading.equalTo(logoView.snp.leading) | ||
92 | + } | ||
93 | + homeImage.snp.makeConstraints { | ||
94 | + $0.top.equalTo(settingsButton.snp.bottom) | ||
95 | + $0.trailing.equalTo(snp.trailing).offset(5) | ||
96 | + } | ||
97 | + doorsLabel.snp.makeConstraints { | ||
98 | + $0.top.equalTo(homeImage.snp.bottom).offset(31) | ||
99 | + $0.leading.equalTo(logoView.snp.leading) | ||
100 | + } | ||
101 | + tableView.snp.makeConstraints { | ||
102 | + $0.top.equalTo(doorsLabel.snp.bottom).offset(28) | ||
103 | + $0.leading.equalTo(snp.leading).offset(20) | ||
104 | + $0.trailing.equalTo(snp.trailing).offset(-27) | ||
105 | + $0.bottom.equalToSuperview() | ||
106 | + } | ||
107 | + gradientView.snp.makeConstraints { | ||
108 | + $0.leading.trailing.bottom.equalToSuperview() | ||
109 | + $0.height.equalTo(75) | ||
110 | + } | ||
111 | + passwordButton.snp.makeConstraints { | ||
112 | + $0.trailing.equalTo(gradientView.snp.trailing).offset(-48) | ||
113 | + $0.bottom.equalTo(gradientView.snp.bottom).offset(-18) | ||
114 | + $0.height.width.equalTo(18.5) | ||
115 | + } | ||
116 | + } | ||
117 | +} |
1 | +// | ||
2 | +// HomeViewController.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 07.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class HomeViewController: UIViewController { | ||
11 | + | ||
12 | + var mainView = HomeView() | ||
13 | + | ||
14 | + override func loadView() { | ||
15 | + view = mainView | ||
16 | + } | ||
17 | + | ||
18 | + override func viewDidLoad() { | ||
19 | + initViewController() | ||
20 | + } | ||
21 | + | ||
22 | + private func initViewController() { | ||
23 | + mainView.settingsButton.addTarget(self, action: #selector(didShowSettingsVC), for: .touchUpInside) | ||
24 | + mainView.tableView.delegate = self | ||
25 | + mainView.tableView.dataSource = self | ||
26 | + mainView.tableView.register(HomeTableViewCell.self, forCellReuseIdentifier: HomeTableViewCell.id) | ||
27 | + } | ||
28 | +} | ||
29 | + | ||
30 | +extension HomeViewController { | ||
31 | + | ||
32 | + @objc func didShowSettingsVC() { | ||
33 | + print("❌") | ||
34 | + let vc = SettingsViewController() | ||
35 | + navigationController?.pushViewController(vc, animated: true) | ||
36 | + } | ||
37 | +} | ||
38 | + | ||
39 | +extension HomeViewController: UITableViewDelegate, UITableViewDataSource { | ||
40 | + | ||
41 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
42 | + 5 | ||
43 | + } | ||
44 | + | ||
45 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
46 | + guard let cell = tableView.dequeueReusableCell(withIdentifier: HomeTableViewCell.id, for: indexPath) as? HomeTableViewCell else { return UITableViewCell() } | ||
47 | +// cell.configureWithItem(doors[indexPath.row]) | ||
48 | + return cell | ||
49 | + } | ||
50 | + | ||
51 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
52 | + 120 | ||
53 | + } | ||
54 | + | ||
55 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
56 | + | ||
57 | + } | ||
58 | + | ||
59 | + | ||
60 | +} |
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 | + | ||
43 | + var textField: UITextField = { | ||
44 | + let obj = UITextField() | ||
45 | + obj.returnKeyType = .done | ||
46 | + obj.keyboardType = .numberPad | ||
47 | + obj.becomeFirstResponder() | ||
48 | + obj.isHidden = true | ||
49 | + return obj | ||
50 | + }() | ||
51 | + | ||
52 | + var firstDigitLabel: UILabel = { | ||
53 | + let obj = UILabel() | ||
54 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
55 | + obj.textColor = .black | ||
56 | + obj.textAlignment = .center | ||
57 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
58 | + obj.layer.cornerRadius = 15 | ||
59 | + obj.clipsToBounds = true | ||
60 | + return obj | ||
61 | + }() | ||
62 | + | ||
63 | + var secondDigitLabel: UILabel = { | ||
64 | + let obj = UILabel() | ||
65 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
66 | + obj.textColor = .black | ||
67 | + obj.textAlignment = .center | ||
68 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
69 | + obj.layer.cornerRadius = 15 | ||
70 | + obj.clipsToBounds = true | ||
71 | + return obj | ||
72 | + }() | ||
73 | + | ||
74 | + var thirdDigitLabel: UILabel = { | ||
75 | + let obj = UILabel() | ||
76 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
77 | + obj.textColor = .black | ||
78 | + obj.textAlignment = .center | ||
79 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
80 | + obj.layer.cornerRadius = 15 | ||
81 | + obj.clipsToBounds = true | ||
82 | + return obj | ||
83 | + }() | ||
84 | + | ||
85 | + var fourthDigitLabel: UILabel = { | ||
86 | + let obj = UILabel() | ||
87 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
88 | + obj.textColor = .black | ||
89 | + obj.textAlignment = .center | ||
90 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
91 | + obj.layer.cornerRadius = 15 | ||
92 | + obj.clipsToBounds = true | ||
93 | + return obj | ||
94 | + }() | ||
95 | + | ||
96 | + var errorAlertLabel: UILabel = { | ||
97 | + var obj = UILabel() | ||
98 | + obj.text = "Please, enter valid verification code" | ||
99 | + obj.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 14) | ||
100 | + obj.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1) | ||
101 | + obj.isHidden = true | ||
102 | + return obj | ||
103 | + }() | ||
104 | + var verifyButton: UIButton = { | ||
105 | + var obj = UIButton() | ||
106 | + obj.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) | ||
107 | + return obj | ||
108 | + }() | ||
109 | + var verifyLabel: UILabel = { | ||
110 | + var obj = UILabel() | ||
111 | + obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
112 | + obj.textColor = .white | ||
113 | + obj.text = "Verify" | ||
114 | + return obj | ||
115 | + }() | ||
116 | + var tickImage: UIImageView = { | ||
117 | + var obj = UIImageView() | ||
118 | + obj.image = UIImage(named: "Tick") | ||
119 | + return obj | ||
120 | + }() | ||
121 | + override init(frame: CGRect) { | ||
122 | + super.init(frame: frame) | ||
123 | + layout() | ||
124 | + } | ||
125 | + | ||
126 | + required init?(coder: NSCoder) { | ||
127 | + fatalError("init(coder:) has not been implemented") | ||
128 | + } | ||
129 | + | ||
130 | + func layout() { | ||
131 | + addSubview(textField) | ||
132 | + | ||
133 | + backgroundColor = .white | ||
134 | + addSubview(backButton) | ||
135 | + addSubview(logoImage) | ||
136 | + addSubview(shieldImage) | ||
137 | + addSubview(containerView) | ||
138 | + containerView.addSubview(descriptionLabel) | ||
139 | + containerView.addSubview(firstDigitLabel) | ||
140 | + containerView.addSubview(secondDigitLabel) | ||
141 | + containerView.addSubview(thirdDigitLabel) | ||
142 | + containerView.addSubview(fourthDigitLabel) | ||
143 | + containerView.addSubview(errorAlertLabel) | ||
144 | + containerView.addSubview(verifyButton) | ||
145 | + verifyButton.addSubview(verifyLabel) | ||
146 | + verifyButton.addSubview(tickImage) | ||
147 | + | ||
148 | + backButton.snp.makeConstraints { | ||
149 | + $0.top.equalTo(snp.top).offset(66) | ||
150 | + $0.leading.equalTo(snp.leading).offset(22) | ||
151 | + $0.height.width.equalTo(45) | ||
152 | + } | ||
153 | + logoImage.snp.makeConstraints { | ||
154 | + $0.leading.equalTo(backButton.snp.trailing).offset(20) | ||
155 | + $0.centerY.equalTo(backButton) | ||
156 | + } | ||
157 | + shieldImage.snp.makeConstraints { | ||
158 | + $0.top.equalTo(backButton.snp.bottom).offset(25) | ||
159 | + $0.right.equalTo(snp.right).offset(-101) | ||
160 | + } | ||
161 | + containerView.snp.makeConstraints { | ||
162 | + $0.top.equalTo(backButton.snp.bottom).offset(227) | ||
163 | + $0.leading.trailing.equalToSuperview() | ||
164 | + $0.height.equalTo(300) | ||
165 | + } | ||
166 | + descriptionLabel.snp.makeConstraints { | ||
167 | + $0.leading.equalTo(containerView.snp.leading).offset(20) | ||
168 | + $0.top.equalTo(containerView.snp.top) | ||
169 | + } | ||
170 | + firstDigitLabel.snp.makeConstraints { | ||
171 | + $0.leading.equalTo(containerView.snp.leading).offset(25) | ||
172 | + $0.top.equalTo(descriptionLabel.snp.bottom).offset(28) | ||
173 | + $0.height.equalTo(55) | ||
174 | + } | ||
175 | + secondDigitLabel.snp.makeConstraints { | ||
176 | + $0.leading.equalTo(firstDigitLabel.snp.trailing).offset(12) | ||
177 | + $0.centerY.equalTo(firstDigitLabel) | ||
178 | + $0.width.equalTo(firstDigitLabel.snp.width) | ||
179 | + $0.height.equalTo(55) | ||
180 | + } | ||
181 | + thirdDigitLabel.snp.makeConstraints { | ||
182 | + $0.leading.equalTo(secondDigitLabel.snp.trailing).offset(12) | ||
183 | + $0.centerY.equalTo(firstDigitLabel) | ||
184 | + $0.width.equalTo(firstDigitLabel.snp.width) | ||
185 | + $0.height.equalTo(55) | ||
186 | + } | ||
187 | + fourthDigitLabel.snp.makeConstraints { | ||
188 | + $0.leading.equalTo(thirdDigitLabel.snp.trailing).offset(12) | ||
189 | + $0.centerY.equalTo(firstDigitLabel) | ||
190 | + $0.trailing.equalTo(containerView.snp.trailing).offset(-25) | ||
191 | + $0.width.equalTo(firstDigitLabel.snp.width) | ||
192 | + $0.height.equalTo(55) | ||
193 | + } | ||
194 | + errorAlertLabel.snp.makeConstraints { | ||
195 | + $0.top.equalTo(firstDigitLabel.snp.bottom).offset(8) | ||
196 | + $0.leading.equalTo(firstDigitLabel.snp.leading) | ||
197 | + } | ||
198 | + verifyButton.snp.makeConstraints { | ||
199 | + $0.top.equalTo(firstDigitLabel.snp.bottom).offset(67) | ||
200 | + $0.left.right.equalToSuperview() | ||
201 | + } | ||
202 | + verifyLabel.snp.makeConstraints { | ||
203 | + $0.left.equalToSuperview().offset(49) | ||
204 | + $0.top.equalToSuperview().offset(22) | ||
205 | + } | ||
206 | + tickImage.snp.makeConstraints { | ||
207 | + $0.right.equalToSuperview().offset(-47) | ||
208 | + $0.centerY.equalTo(verifyLabel) | ||
209 | + } | ||
210 | + } | ||
211 | +} |
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 | + var otp: String = "" | ||
13 | + var isKeyboardAppear = false | ||
14 | + private let mainView = CodeVerificationView() | ||
15 | + | ||
16 | + override func loadView() { | ||
17 | + view = mainView | ||
18 | + } | ||
19 | + | ||
20 | + override func viewDidLoad() { | ||
21 | + initViewController() | ||
22 | + } | ||
23 | + | ||
24 | + private func initViewController() { | ||
25 | + mainView.textField.delegate = self | ||
26 | + mainView.backButton.addTarget(self, action: #selector(didDismissVC), for: .touchUpInside) | ||
27 | + mainView.verifyButton.addTarget(self, action: #selector(didVerifyCode), for: .touchUpInside) | ||
28 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) | ||
29 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil) | ||
30 | + } | ||
31 | + | ||
32 | + deinit { | ||
33 | + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) | ||
34 | + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) | ||
35 | + } | ||
36 | +} | ||
37 | + | ||
38 | +extension CodeVerificationViewController { | ||
39 | + | ||
40 | + @objc func didDismissVC() { | ||
41 | + navigationController?.popViewController(animated: true) | ||
42 | + } | ||
43 | + | ||
44 | + @objc func didVerifyCode() { | ||
45 | + if mainView.fourthDigitLabel.text == nil { | ||
46 | + let alert = UIAlertController(title: "❌❌❌", message: "Some fields are empty, please fill in all", preferredStyle: .alert) | ||
47 | + let _: Void = alert.addAction(UIAlertAction(title: "Close", style: .cancel, handler: nil)) | ||
48 | + present(alert, animated: true, completion: nil) | ||
49 | + | ||
50 | + } else { | ||
51 | + mainView.firstDigitLabel.backgroundColor = UIColor(red: 1, green: 0.929, blue: 0.941, alpha: 1) | ||
52 | + mainView.firstDigitLabel.textColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 1) | ||
53 | + | ||
54 | + mainView.secondDigitLabel.backgroundColor = UIColor(red: 1, green: 0.929, blue: 0.941, alpha: 1) | ||
55 | + mainView.secondDigitLabel.textColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 1) | ||
56 | + | ||
57 | + mainView.thirdDigitLabel.backgroundColor = UIColor(red: 1, green: 0.929, blue: 0.941, alpha: 1) | ||
58 | + mainView.thirdDigitLabel.textColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 1) | ||
59 | + | ||
60 | + mainView.fourthDigitLabel.backgroundColor = UIColor(red: 1, green: 0.929, blue: 0.941, alpha: 1) | ||
61 | + mainView.fourthDigitLabel.textColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 1) | ||
62 | + mainView.errorAlertLabel.isHidden = false | ||
63 | + | ||
64 | + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { | ||
65 | + let vc = HomeViewController() | ||
66 | + vc.navigationItem.hidesBackButton = true | ||
67 | + self.navigationController?.pushViewController(vc, animated: true) | ||
68 | + } | ||
69 | + } | ||
70 | + } | ||
71 | + | ||
72 | + | ||
73 | + @objc func keyboardWillShow(notification: NSNotification) { | ||
74 | + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double | ||
75 | + | ||
76 | + if !isKeyboardAppear { | ||
77 | + | ||
78 | + UIView.animate(withDuration: duration ?? 0) { | ||
79 | + self.mainView.containerView.snp.updateConstraints { make in | ||
80 | + make.top.equalTo(self.mainView.backButton.snp.bottom).offset(97) | ||
81 | + } | ||
82 | + self.mainView.shieldImage.snp.updateConstraints { | ||
83 | + $0.right.equalTo(self.mainView.snp.right).offset(-6) | ||
84 | + } | ||
85 | + self.mainView.layoutIfNeeded() | ||
86 | + } | ||
87 | + | ||
88 | + isKeyboardAppear = true | ||
89 | + } | ||
90 | + } | ||
91 | + | ||
92 | + @objc func keyboardWillHide(notification: NSNotification) { | ||
93 | + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double | ||
94 | + | ||
95 | + if isKeyboardAppear { | ||
96 | + | ||
97 | + UIView.animate(withDuration: duration ?? 0) { | ||
98 | + self.mainView.containerView.snp.updateConstraints { make in | ||
99 | + make.top.equalTo(self.mainView.backButton.snp.bottom).offset(227) | ||
100 | + } | ||
101 | + self.mainView.shieldImage.snp.updateConstraints { | ||
102 | + $0.right.equalTo(self.mainView.snp.right).offset(-101) | ||
103 | + } | ||
104 | + self.mainView.layoutIfNeeded() | ||
105 | + } | ||
106 | + | ||
107 | + isKeyboardAppear = false | ||
108 | + } | ||
109 | + } | ||
110 | + | ||
111 | +} | ||
112 | + | ||
113 | +extension CodeVerificationViewController: UITextFieldDelegate { | ||
114 | + | ||
115 | + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { | ||
116 | + otp += string | ||
117 | + | ||
118 | + otp.enumerated().forEach { index,item in | ||
119 | + switch index { | ||
120 | + case 0: | ||
121 | + mainView.firstDigitLabel.text = String(item) | ||
122 | + case 1: | ||
123 | + mainView.secondDigitLabel.text = String(item) | ||
124 | + case 2: | ||
125 | + mainView.thirdDigitLabel.text = String(item) | ||
126 | + case 3: | ||
127 | + mainView.fourthDigitLabel.text = String(item) | ||
128 | + mainView.textField.endEditing(true) | ||
129 | + default: | ||
130 | + mainView.textField.endEditing(true) | ||
131 | + } | ||
132 | + } | ||
133 | + | ||
134 | + return true | ||
135 | + } | ||
136 | + | ||
137 | +} |
1 | +// | ||
2 | +// EditInfoView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class EditInfoView: UIView { | ||
11 | + | ||
12 | + var editImage: UIImageView = { | ||
13 | + var obj = UIImageView() | ||
14 | + obj.image = UIImage(named: "Edit") | ||
15 | + obj.contentMode = .scaleAspectFill | ||
16 | + return obj | ||
17 | + }() | ||
18 | + var titleLabel: UILabel = { | ||
19 | + var obj = UILabel() | ||
20 | + obj.text = "Edit residents" | ||
21 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
22 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
23 | + return obj | ||
24 | + }() | ||
25 | + var descriptionLabel: UILabel = { | ||
26 | + var obj = UILabel() | ||
27 | + obj.text = "Edit the residents and their information" | ||
28 | + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1) | ||
29 | + obj.font = .skModernist(type: .regular, ofSize: 14) | ||
30 | + return obj | ||
31 | + }() | ||
32 | + var editButton: UIButton = { | ||
33 | + var obj = UIButton() | ||
34 | + obj.setImage(UIImage(named: "NextPointer"), for: .normal) | ||
35 | + return obj | ||
36 | + }() | ||
37 | + var dividingLineView: UIView = { | ||
38 | + var view = UIView() | ||
39 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
40 | + return view | ||
41 | + }() | ||
42 | + | ||
43 | + override init(frame: CGRect) { | ||
44 | + super.init(frame: frame) | ||
45 | + layout() | ||
46 | + } | ||
47 | + | ||
48 | + required init?(coder: NSCoder) { | ||
49 | + fatalError("init(coder:) has not been implemented") | ||
50 | + } | ||
51 | + | ||
52 | + func layout() { | ||
53 | + addSubview(editImage) | ||
54 | + addSubview(titleLabel) | ||
55 | + addSubview(descriptionLabel) | ||
56 | + addSubview(editButton) | ||
57 | + addSubview(dividingLineView) | ||
58 | + | ||
59 | + editImage.snp.makeConstraints { | ||
60 | + $0.top.equalTo(snp.top).offset(26) | ||
61 | + $0.leading.equalTo(snp.leading).offset(32) | ||
62 | + $0.height.width.equalTo(18) | ||
63 | + } | ||
64 | + titleLabel.snp.makeConstraints { | ||
65 | + $0.top.equalTo(snp.top).offset(26) | ||
66 | + $0.leading.equalTo(editImage.snp.trailing).offset(15) | ||
67 | + } | ||
68 | + descriptionLabel.snp.makeConstraints { | ||
69 | + $0.top.equalTo(titleLabel.snp.bottom).offset(5) | ||
70 | + $0.leading.equalTo(titleLabel.snp.leading) | ||
71 | + } | ||
72 | + editButton.snp.makeConstraints { | ||
73 | + $0.top.equalTo(snp.top).offset(38) | ||
74 | + $0.trailing.equalTo(snp.trailing).offset(-28) | ||
75 | + } | ||
76 | + dividingLineView.snp.makeConstraints { | ||
77 | + $0.height.equalTo(1) | ||
78 | + $0.top.equalTo(descriptionLabel.snp.bottom).offset(22) | ||
79 | + $0.trailing.leading.equalToSuperview().inset(32) | ||
80 | + } | ||
81 | + } | ||
82 | +} |
1 | +// | ||
2 | +// NotificationsView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class NotificationsView: UIView { | ||
11 | + | ||
12 | + var notificationImage: UIImageView = { | ||
13 | + var obj = UIImageView() | ||
14 | + obj.image = UIImage(named: "Notification") | ||
15 | + return obj | ||
16 | + }() | ||
17 | + var titleLabel: UILabel = { | ||
18 | + var obj = UILabel() | ||
19 | + obj.text = "Do not disturb" | ||
20 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
21 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
22 | + return obj | ||
23 | + }() | ||
24 | + var descriptionLabel: UILabel = { | ||
25 | + var obj = UILabel() | ||
26 | + obj.text = "You will not be notified of any\ncalls for one day. Auto reset at\nmidnight" | ||
27 | + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1) | ||
28 | + obj.font = .skModernist(type: .regular, ofSize: 14) | ||
29 | + obj.numberOfLines = 3 | ||
30 | + return obj | ||
31 | + }() | ||
32 | + var notificationSwitch: UISwitch = { | ||
33 | + var obj = UISwitch() | ||
34 | + obj.isOn = true | ||
35 | + obj.clipsToBounds = true | ||
36 | + return obj | ||
37 | + }() | ||
38 | + var volumeImage: UIImageView = { | ||
39 | + var obj = UIImageView() | ||
40 | + obj.image = UIImage(named: "Volume") | ||
41 | + return obj | ||
42 | + }() | ||
43 | + var dividingLineView: UIView = { | ||
44 | + var view = UIView() | ||
45 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
46 | + return view | ||
47 | + }() | ||
48 | + | ||
49 | + override init(frame: CGRect) { | ||
50 | + super.init(frame: frame) | ||
51 | + layout() | ||
52 | + } | ||
53 | + | ||
54 | + required init?(coder: NSCoder) { | ||
55 | + fatalError("init(coder:) has not been implemented") | ||
56 | + } | ||
57 | + | ||
58 | + func layout() { | ||
59 | + addSubview(notificationImage) | ||
60 | + addSubview(titleLabel) | ||
61 | + addSubview(descriptionLabel) | ||
62 | + addSubview(notificationSwitch) | ||
63 | + addSubview(volumeImage) | ||
64 | + addSubview(dividingLineView) | ||
65 | + | ||
66 | + notificationImage.snp.makeConstraints { | ||
67 | + $0.leading.equalTo(snp.leading).offset(31) | ||
68 | + $0.top.equalTo(snp.top).offset(38) | ||
69 | + } | ||
70 | + titleLabel.snp.makeConstraints { | ||
71 | + $0.leading.equalTo(notificationImage.snp.trailing).offset(17.5) | ||
72 | + $0.top.equalTo(snp.top).offset(38) | ||
73 | + } | ||
74 | + descriptionLabel.snp.makeConstraints { | ||
75 | + $0.top.equalTo(titleLabel.snp.bottom).offset(5) | ||
76 | + $0.leading.equalTo(titleLabel.snp.leading) | ||
77 | + } | ||
78 | + notificationSwitch.snp.makeConstraints { | ||
79 | + $0.top.equalTo(snp.top).offset(36) | ||
80 | + $0.trailing.equalTo(snp.trailing).offset(-28) | ||
81 | + } | ||
82 | + volumeImage.snp.makeConstraints { | ||
83 | + $0.leading.equalTo(snp.leading).offset(29.5) | ||
84 | + $0.top.equalTo(titleLabel.snp.bottom).offset(53) | ||
85 | + } | ||
86 | + dividingLineView.snp.makeConstraints { | ||
87 | + $0.height.equalTo(1) | ||
88 | + $0.top.equalTo(volumeImage.snp.bottom).offset(17) | ||
89 | + $0.leading.equalTo(snp.leading).offset(32) | ||
90 | + $0.trailing.equalTo(snp.trailing).offset(-32) | ||
91 | + } | ||
92 | + } | ||
93 | +} |
1 | +// | ||
2 | +// ProfileView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | +import SnapKit | ||
10 | + | ||
11 | +class ProfileView: UIView { | ||
12 | + | ||
13 | + var profileImage: UIImageView = { | ||
14 | + var obj = UIImageView() | ||
15 | + obj.image = UIImage(named: "Profile") | ||
16 | + return obj | ||
17 | + }() | ||
18 | + var titleLabel: UILabel = { | ||
19 | + var obj = UILabel() | ||
20 | + obj.text = "Your display name" | ||
21 | + obj.font = .skModernist(type: .bold, ofSize: 16) | ||
22 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
23 | + return obj | ||
24 | + }() | ||
25 | + var descriptionLabel: UILabel = { | ||
26 | + var obj = UILabel() | ||
27 | + obj.text = "This name will be displayed everywhere" | ||
28 | + obj.font = .skModernist(type: .regular, ofSize: 14) | ||
29 | + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1) | ||
30 | + return obj | ||
31 | + }() | ||
32 | + var displayNameLabel: UILabel = { | ||
33 | + var obj = UILabel() | ||
34 | + obj.text = "John Doe" | ||
35 | + obj.backgroundColor = UIColor(red: 0.971, green: 0.967, blue: 0.967, alpha: 1) | ||
36 | + obj.clipsToBounds = true | ||
37 | + obj.layer.cornerRadius = 15 | ||
38 | + return obj | ||
39 | + }() | ||
40 | + var dividingLineView: UIView = { | ||
41 | + var view = UIView() | ||
42 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
43 | + return view | ||
44 | + }() | ||
45 | + | ||
46 | + override init(frame: CGRect) { | ||
47 | + super.init(frame: frame) | ||
48 | + layout() | ||
49 | + } | ||
50 | + | ||
51 | + required init?(coder: NSCoder) { | ||
52 | + fatalError("init(coder:) has not been implemented") | ||
53 | + } | ||
54 | + | ||
55 | + func layout() { | ||
56 | + addSubview(profileImage) | ||
57 | + addSubview(titleLabel) | ||
58 | + addSubview(descriptionLabel) | ||
59 | + addSubview(displayNameLabel) | ||
60 | + addSubview(dividingLineView) | ||
61 | + | ||
62 | + profileImage.snp.makeConstraints { | ||
63 | + $0.top.equalTo(snp.top) | ||
64 | + $0.leading.equalTo(snp.leading).offset(32) | ||
65 | + } | ||
66 | + titleLabel.snp.makeConstraints { | ||
67 | + $0.top.equalTo(profileImage.snp.top) | ||
68 | + $0.leading.equalTo(profileImage.snp.trailing).offset(18) | ||
69 | + } | ||
70 | + descriptionLabel.snp.makeConstraints { | ||
71 | + $0.top.equalTo(titleLabel.snp.bottom).offset(5) | ||
72 | + $0.leading.equalTo(titleLabel.snp.leading) | ||
73 | + } | ||
74 | + displayNameLabel.snp.makeConstraints { | ||
75 | + $0.top.equalTo(descriptionLabel.snp.bottom).offset(20) | ||
76 | + $0.leading.equalTo(snp.leading).offset(66) | ||
77 | + $0.trailing.equalTo(snp.trailing).offset(-28) | ||
78 | + $0.height.equalTo(47) | ||
79 | + } | ||
80 | + dividingLineView.snp.makeConstraints { | ||
81 | + $0.leading.trailing.equalToSuperview() | ||
82 | + $0.height.equalTo(1) | ||
83 | + $0.top.equalTo(displayNameLabel.snp.bottom).offset(30) | ||
84 | + } | ||
85 | + } | ||
86 | +} |
1 | +// | ||
2 | +// SettingsView.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class SettingsView: UIView { | ||
11 | + var backButton: UIButton = { | ||
12 | + var obj = UIButton() | ||
13 | + obj.setImage(UIImage(named: "BackPointer"), for: .normal) | ||
14 | + obj.backgroundColor = .white | ||
15 | + obj.layer.borderColor = UIColor(red: 224/255, green: 231/255, blue: 232/255, alpha: 1).cgColor | ||
16 | + obj.layer.cornerRadius = 13 | ||
17 | + obj.layer.borderWidth = 1 | ||
18 | + return obj | ||
19 | + }() | ||
20 | + | ||
21 | + var logoImage: UIImageView = { | ||
22 | + var obj = UIImageView() | ||
23 | + obj.image = UIImage(named: "InterQR") | ||
24 | + return obj | ||
25 | + }() | ||
26 | + | ||
27 | + var gearImage: UIImageView = { | ||
28 | + var obj = UIImageView() | ||
29 | + obj.image = UIImage(named: "Gear") | ||
30 | + return obj | ||
31 | + }() | ||
32 | + | ||
33 | + var settingsLabel: UILabel = { | ||
34 | + var obj = UILabel() | ||
35 | + obj.font = .skModernist(type: .bold, ofSize: 35) | ||
36 | + obj.text = "Settings" | ||
37 | + return obj | ||
38 | + }() | ||
39 | + var profileView: ProfileView = { | ||
40 | + var obj = ProfileView() | ||
41 | + return obj | ||
42 | + }() | ||
43 | + var notificationsView: NotificationsView = { | ||
44 | + var obj = NotificationsView() | ||
45 | + return obj | ||
46 | + }() | ||
47 | + var editInfo: EditInfoView = { | ||
48 | + var obj = EditInfoView() | ||
49 | + return obj | ||
50 | + }() | ||
51 | + var logoutButton: UIButton = { | ||
52 | + var obj = UIButton() | ||
53 | + obj.backgroundColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 0.07) | ||
54 | + obj.setTitle("Logout", for: .normal) | ||
55 | + obj.setTitleColor(UIColor(red: 1, green: 0, blue: 0.18, alpha: 0.98), for: .normal) | ||
56 | + obj.layer.cornerRadius = 15 | ||
57 | + return obj | ||
58 | + }() | ||
59 | + | ||
60 | + override init(frame: CGRect) { | ||
61 | + super.init(frame: frame) | ||
62 | + backgroundColor = .white | ||
63 | + layout() | ||
64 | + } | ||
65 | + | ||
66 | + required init?(coder: NSCoder) { | ||
67 | + fatalError("init(coder:) has not been implemented") | ||
68 | + } | ||
69 | + | ||
70 | + func layout() { | ||
71 | + addSubview(backButton) | ||
72 | + addSubview(logoImage) | ||
73 | + addSubview(gearImage) | ||
74 | + addSubview(settingsLabel) | ||
75 | + addSubview(profileView) | ||
76 | + addSubview(notificationsView) | ||
77 | + addSubview(editInfo) | ||
78 | + addSubview(logoutButton) | ||
79 | + | ||
80 | + backButton.snp.makeConstraints { | ||
81 | + $0.top.equalTo(snp.top).offset(66) | ||
82 | + $0.leading.equalTo(snp.leading).offset(25) | ||
83 | + $0.height.width.equalTo(45) | ||
84 | + } | ||
85 | + logoImage.snp.makeConstraints { | ||
86 | + $0.leading.equalTo(backButton.snp.trailing).offset(20) | ||
87 | + $0.top.equalTo(snp.top).offset(79) | ||
88 | + } | ||
89 | + gearImage.snp.makeConstraints { | ||
90 | + $0.trailing.equalTo(snp.trailing) | ||
91 | + $0.top.equalTo(snp.top).offset(106) | ||
92 | + } | ||
93 | + settingsLabel.snp.makeConstraints { | ||
94 | + $0.leading.equalTo(backButton.snp.leading) | ||
95 | + $0.top.equalTo(backButton.snp.bottom).offset(46) | ||
96 | + } | ||
97 | + profileView.snp.makeConstraints { | ||
98 | + $0.top.equalTo(settingsLabel.snp.bottom).offset(85) | ||
99 | + $0.leading.equalTo(snp.leading) | ||
100 | + $0.trailing.equalTo(snp.trailing) | ||
101 | + $0.height.equalTo(140) | ||
102 | + } | ||
103 | + notificationsView.snp.makeConstraints { | ||
104 | + $0.top.equalTo(profileView.snp.bottom) | ||
105 | + $0.leading.trailing.equalToSuperview() | ||
106 | + $0.height.equalTo(140) | ||
107 | + } | ||
108 | + editInfo.snp.makeConstraints { | ||
109 | + $0.top.equalTo(notificationsView.snp.bottom) | ||
110 | + $0.leading.trailing.equalToSuperview() | ||
111 | + $0.height.equalTo(102) | ||
112 | + } | ||
113 | + logoutButton.snp.makeConstraints { | ||
114 | + $0.top.equalTo(editInfo.snp.bottom).offset(42) | ||
115 | + $0.leading.equalTo(snp.leading).offset(25) | ||
116 | + $0.trailing.equalTo(snp.trailing).offset(-26) | ||
117 | + $0.height.equalTo(56) | ||
118 | + } | ||
119 | + } | ||
120 | +} |
1 | +// | ||
2 | +// SettingsViewController.swift | ||
3 | +// InterQR-Internship | ||
4 | +// | ||
5 | +// Created by Дмитрий Тимофеев on 08.06.2022. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class SettingsViewController: UIViewController { | ||
11 | + | ||
12 | + var mainView = SettingsView() | ||
13 | + | ||
14 | + override func loadView() { | ||
15 | + view = mainView | ||
16 | + } | ||
17 | + override func viewDidLoad() { | ||
18 | + mainView.backButton.addTarget(self, action: #selector(didShowHomeVC), for: .touchUpInside) | ||
19 | + mainView.logoutButton.addTarget(self, action: #selector(didLogoutAndShowVerificationVC), for: .touchUpInside) | ||
20 | + } | ||
21 | +} | ||
22 | + | ||
23 | +extension SettingsViewController { | ||
24 | + | ||
25 | + @objc func didShowHomeVC() { | ||
26 | + navigationController?.popViewController(animated: true) | ||
27 | + } | ||
28 | + | ||
29 | + @objc func didLogoutAndShowVerificationVC() { | ||
30 | + let vc = VerificationViewController() | ||
31 | + navigationController?.pushViewController(vc, animated: true) | ||
32 | + } | ||
33 | +} |
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: Checkbox = { | ||
46 | + var button = Checkbox() | ||
47 | + button.checkboxTitle = "Email" | ||
48 | + button.isSelected = true | ||
49 | +// button.setTitle("Email", for: .normal) | ||
50 | +// button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal) | ||
51 | +// button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled) | ||
52 | +// button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5) | ||
53 | +// button.setImage(UIImage(named: "OnIndicator"), for: .normal) | ||
54 | +// button.setImage(UIImage(named: "OffIndicator"), for: .selected) | ||
55 | +// button.contentMode = .left | ||
56 | + return button | ||
57 | + }() | ||
58 | + | ||
59 | + var phoneNumberButton: Checkbox = { | ||
60 | + var button = Checkbox() | ||
61 | + button.checkboxTitle = "Phone Number" | ||
62 | +// button.setTitle("Phone Number", for: .normal) | ||
63 | +// button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal) | ||
64 | +// button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled) | ||
65 | +// button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5) | ||
66 | +// button.setImage(UIImage(named: "OnIndicator"), for: .selected) | ||
67 | +// button.setImage(UIImage(named: "OffIndicator"), for: .normal) | ||
68 | + return button | ||
69 | + }() | ||
70 | + | ||
71 | + var dividingLineView: UIView = { | ||
72 | + var view = UIView() | ||
73 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
74 | + return view | ||
75 | + }() | ||
76 | + var enterChosenAuthenticatorLabel: UILabel = { | ||
77 | + var label = UILabel() | ||
78 | + label.text = "Enter your email address" | ||
79 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
80 | + return label | ||
81 | + }() | ||
82 | + var emailTextField: UITextField = { | ||
83 | + var textField = UITextField() | ||
84 | + textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
85 | + textField.textAlignment = .left | ||
86 | + textField.layer.cornerRadius = 15 | ||
87 | + textField.keyboardType = .emailAddress | ||
88 | + textField.placeholder = "Example: john.doe@gmail.com" | ||
89 | + textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
90 | + textField.layer.masksToBounds = true | ||
91 | + textField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 22, height: textField.frame.height)) | ||
92 | + textField.leftViewMode = .always | ||
93 | + textField.returnKeyType = .done | ||
94 | + return textField | ||
95 | + }() | ||
96 | + var phoneTextField: TextFieldWithPadding = { | ||
97 | + var textField = TextFieldWithPadding() | ||
98 | + textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | ||
99 | + textField.textAlignment = .left | ||
100 | + textField.layer.cornerRadius = 15 | ||
101 | + textField.keyboardType = .numberPad | ||
102 | + textField.text = "+1" | ||
103 | + textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15) | ||
104 | + textField.layer.masksToBounds = true | ||
105 | + textField.isHidden = true | ||
106 | + return textField | ||
107 | + }() | ||
108 | + var verificationDescriptionLabel: UILabel = { | ||
109 | + var label = UILabel() | ||
110 | + label.numberOfLines = 0 | ||
111 | + label.text = "Verification code will be sent to your e-mail" | ||
112 | + label.font = UIFont(name: "Sk-Modernist", size: 14) | ||
113 | + label.font = .systemFont(ofSize: 14, weight: .regular) | ||
114 | + return label | ||
115 | + }() | ||
116 | + var continueButton: UIButton = { | ||
117 | + var button = UIButton() | ||
118 | + button.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) | ||
119 | + button.clipsToBounds = true | ||
120 | + button.contentMode = .scaleAspectFit | ||
121 | + button.layer.cornerRadius = 15 | ||
122 | + return button | ||
123 | + }() | ||
124 | + var continueLabel: UILabel = { | ||
125 | + var label = UILabel() | ||
126 | + label.text = "Continue" | ||
127 | + label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | ||
128 | + label.textColor = .white | ||
129 | + return label | ||
130 | + }() | ||
131 | + var pointerImage: UIImageView = { | ||
132 | + var image = UIImageView() | ||
133 | + image.image = UIImage(named: "Pointer") | ||
134 | + return image | ||
135 | + }() | ||
136 | + var phonePickerView: PhoneNumberView = { | ||
137 | + var view = PhoneNumberView() | ||
138 | + view.isUserInteractionEnabled = true | ||
139 | + return view | ||
140 | + }() | ||
141 | + var showPickerButton: UIButton = { | ||
142 | + var button = UIButton() | ||
143 | + button.isHidden = true | ||
144 | + return button | ||
145 | + }() | ||
146 | + var flagPickerView: UIImageView = { | ||
147 | + var image = UIImageView() | ||
148 | + image.image = UIImage(named: "USA") | ||
149 | + image.layer.cornerRadius = 11 | ||
150 | + image.contentMode = .scaleAspectFit | ||
151 | + return image | ||
152 | + }() | ||
153 | + var flagPointerView: UIImageView = { | ||
154 | + var image = UIImageView() | ||
155 | + image.image = UIImage(named: "FlagPointer") | ||
156 | + return image | ||
157 | + }() | ||
158 | + | ||
159 | + override init(frame: CGRect) { | ||
160 | + super.init(frame: frame) | ||
161 | + backgroundColor = .white | ||
162 | + layout() | ||
163 | + } | ||
164 | + | ||
165 | + required init?(coder: NSCoder) { | ||
166 | + fatalError("init(coder:) has not been implemented") | ||
167 | + } | ||
168 | + | ||
169 | + func layout() { | ||
170 | + | ||
171 | + addSubview(logoImage) | ||
172 | + addSubview(greetingsLabel) | ||
173 | + addSubview(verifyLabel) | ||
174 | + addSubview(shieldImage) | ||
175 | + | ||
176 | + addSubview(chooseLabel) | ||
177 | + addSubview(emailButton) | ||
178 | + addSubview(phoneNumberButton) | ||
179 | + addSubview(dividingLineView) | ||
180 | + | ||
181 | + addSubview(enterChosenAuthenticatorLabel) | ||
182 | + addSubview(emailTextField) | ||
183 | + addSubview(phoneTextField) | ||
184 | + addSubview(verificationDescriptionLabel) | ||
185 | + phoneTextField.addSubview(showPickerButton) | ||
186 | + | ||
187 | + showPickerButton.addSubview(flagPickerView) | ||
188 | + showPickerButton.addSubview(flagPointerView) | ||
189 | + | ||
190 | + addSubview(continueButton) | ||
191 | + continueButton.addSubview(continueLabel) | ||
192 | + continueButton.addSubview(pointerImage) | ||
193 | + | ||
194 | + addSubview(phonePickerView) | ||
195 | + | ||
196 | + logoImage.snp.makeConstraints { | ||
197 | + $0.top.equalTo(snp.top).offset(80) | ||
198 | + $0.left.equalTo(snp.left).offset(27) | ||
199 | + } | ||
200 | + greetingsLabel.snp.makeConstraints { | ||
201 | + $0.top.equalTo(logoImage.snp.bottom).offset(42) | ||
202 | + $0.left.equalTo(snp.left).offset(24) | ||
203 | + } | ||
204 | + shieldImage.snp.makeConstraints { | ||
205 | + $0.right.equalToSuperview() | ||
206 | + $0.top.equalTo(logoImage.snp.bottom).offset(27) | ||
207 | + } | ||
208 | + verifyLabel.snp.makeConstraints { | ||
209 | + $0.left.equalTo(27) | ||
210 | + $0.top.equalTo(greetingsLabel.snp.bottom).offset(10) | ||
211 | + } | ||
212 | + chooseLabel.snp.makeConstraints { | ||
213 | + $0.top.equalTo(shieldImage.snp.bottom).offset(52) | ||
214 | + $0.left.equalTo(snp.left).offset(27) | ||
215 | + } | ||
216 | + emailButton.snp.makeConstraints { | ||
217 | + $0.left.equalTo(snp.left).offset(27) | ||
218 | + $0.top.equalTo(chooseLabel.snp.bottom).offset(29) | ||
219 | + $0.height.equalTo(20) | ||
220 | + } | ||
221 | + phoneNumberButton.snp.makeConstraints { | ||
222 | + $0.top.equalTo(emailButton.snp.top) | ||
223 | + $0.height.equalTo(20) | ||
224 | + $0.left.equalTo(emailButton.snp.right).offset(44) | ||
225 | + } | ||
226 | + dividingLineView.snp.makeConstraints { | ||
227 | + $0.left.right.equalToSuperview() | ||
228 | + $0.top.equalTo(emailButton.snp.bottom).offset(41) | ||
229 | + $0.height.equalTo(1) | ||
230 | + } | ||
231 | + enterChosenAuthenticatorLabel.snp.makeConstraints { | ||
232 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(39) | ||
233 | + $0.left.equalTo(logoImage.snp.left) | ||
234 | + } | ||
235 | + emailTextField.snp.makeConstraints { | ||
236 | + $0.left.equalTo(logoImage.snp.left) | ||
237 | + $0.right.equalTo(snp.right).offset(-27) | ||
238 | + $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23) | ||
239 | + $0.height.equalTo(57) | ||
240 | + } | ||
241 | + phoneTextField.snp.makeConstraints { | ||
242 | + $0.left.equalTo(logoImage.snp.left) | ||
243 | + $0.right.equalTo(snp.right).offset(-27) | ||
244 | + $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23) | ||
245 | + $0.height.equalTo(57) | ||
246 | + } | ||
247 | + verificationDescriptionLabel.snp.makeConstraints { | ||
248 | + $0.top.equalTo(emailTextField.snp.bottom).offset(8) | ||
249 | + $0.left.equalTo(snp.left).offset(46) | ||
250 | + $0.right.equalTo(snp.right).offset(-22) | ||
251 | + } | ||
252 | + continueButton.snp.makeConstraints { | ||
253 | + $0.left.equalTo(snp.left) | ||
254 | + $0.right.equalTo(snp.right) | ||
255 | + $0.top.equalTo(emailTextField.snp.bottom).offset(90) | ||
256 | + $0.height.equalTo(125) | ||
257 | + } | ||
258 | + continueLabel.snp.makeConstraints { | ||
259 | + $0.left.equalTo(snp.left).offset(48) | ||
260 | + $0.top.equalTo(continueButton.snp.top).offset(33) | ||
261 | + } | ||
262 | + pointerImage.snp.makeConstraints { | ||
263 | + $0.top.equalTo(continueButton.snp.top).offset(31) | ||
264 | + $0.right.equalTo(snp.right).offset(-51.5) | ||
265 | + } | ||
266 | + phonePickerView.snp.makeConstraints { make in | ||
267 | + make.leading.trailing.equalToSuperview() | ||
268 | + make.height.equalTo(390) | ||
269 | + make.top.equalTo(self.snp.bottom) | ||
270 | + } | ||
271 | + showPickerButton.snp.makeConstraints { | ||
272 | + $0.height.equalTo(22) | ||
273 | + $0.width.equalTo(50) | ||
274 | + $0.left.equalTo(emailTextField.snp.left).offset(22) | ||
275 | + $0.top.equalTo(emailTextField.snp.top).offset(18) | ||
276 | + } | ||
277 | + flagPickerView.snp.makeConstraints { | ||
278 | + $0.left.equalToSuperview() | ||
279 | +// $0.top.equalToSuperview() | ||
280 | + $0.size.equalTo(20) | ||
281 | + $0.centerY.equalTo(showPickerButton.snp.centerY) | ||
282 | + } | ||
283 | + flagPointerView.snp.makeConstraints { | ||
284 | + $0.left.equalTo(flagPickerView.snp.right).offset(10) | ||
285 | + $0.centerYWithinMargins.equalTo(flagPickerView.snp.centerYWithinMargins) | ||
286 | + } | ||
287 | + } | ||
288 | + | ||
289 | +// @objc func choosePhoneCode() { | ||
290 | +// emailTextField.isHidden = true | ||
291 | +// phoneTextField.isHidden = false | ||
292 | +// phoneNumberButton.isSelected = true | ||
293 | +// emailButton.isSelected = true | ||
294 | +// phoneNumberButton.image(for: .normal) | ||
295 | +// verificationDescriptionLabel.text = "Verification code will be sent to\nyour phone number" | ||
296 | +// enterChosenAuthenticatorLabel.text = "Enter your phone number" | ||
297 | +// emailTextField.text = "+1" | ||
298 | +// showPickerButton.isHidden = false | ||
299 | +// } | ||
300 | +// | ||
301 | +// @objc func chooseEmail() { | ||
302 | +// emailTextField.isHidden = false | ||
303 | +// phoneTextField.isHidden = true | ||
304 | +// phoneNumberButton.isSelected = false | ||
305 | +// emailButton.isSelected = false | ||
306 | +// verificationDescriptionLabel.text = "Verification code will be sent to your e-mail" | ||
307 | +// enterChosenAuthenticatorLabel.text = "Enter your email address" | ||
308 | +// emailTextField.text = "" | ||
309 | +// emailTextField.placeholder = "Example: john.doe@gmail.com" | ||
310 | +// showPickerButton.isHidden = true | ||
311 | +// } | ||
312 | + | ||
313 | + func showPickerView() { | ||
314 | + UIView.animate(withDuration: 0.3) { | ||
315 | + self.phonePickerView.snp.updateConstraints { make in | ||
316 | + make.top.equalTo(self.snp.bottom).offset(-390) | ||
317 | + } | ||
318 | + self.layoutIfNeeded() | ||
319 | + } | ||
320 | + } | ||
321 | + | ||
322 | + func hidePickerView() { | ||
323 | + UIView.animate(withDuration: 0.3) { | ||
324 | + self.phonePickerView.snp.updateConstraints { make in | ||
325 | + make.top.equalTo(self.snp.bottom).offset(0) | ||
326 | + } | ||
327 | + self.layoutIfNeeded() | ||
328 | + } | ||
329 | + } | ||
330 | +} |
InterQR-Internship/Modules/VerificationSceen/ViewController/VerificationViewController.swift
0 → 100644
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 | + deinit { | ||
26 | + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) | ||
27 | + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) | ||
28 | + } | ||
29 | + | ||
30 | + override func loadView() { | ||
31 | + view = mainView | ||
32 | + } | ||
33 | + override func viewDidLoad() { | ||
34 | + super.viewDidLoad() | ||
35 | + initViewController() | ||
36 | + } | ||
37 | + | ||
38 | + | ||
39 | + private func initViewController() { | ||
40 | + mainView.phonePickerView.phoneNumberPicker.delegate = self | ||
41 | + mainView.phonePickerView.phoneNumberPicker.dataSource = self | ||
42 | + mainView.phoneNumberButton.addTarget(self, action: #selector(didCheckboxTapped(_:)), for: .touchUpInside) | ||
43 | + mainView.emailButton.addTarget(self, action: #selector(didCheckboxTapped(_:)), for: .touchUpInside) | ||
44 | + mainView.showPickerButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside) | ||
45 | + mainView.phonePickerView.selectButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside) | ||
46 | + mainView.phonePickerView.titleButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchDragInside) | ||
47 | + mainView.continueButton.addTarget(self, action: #selector(didShowCodeVerificationVC), for: .touchUpInside) | ||
48 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) | ||
49 | + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil) | ||
50 | + } | ||
51 | + | ||
52 | +} | ||
53 | + | ||
54 | +//MARK: helpers and handlers | ||
55 | +extension VerificationViewController { | ||
56 | + | ||
57 | +} | ||
58 | + | ||
59 | +//MARK: targets | ||
60 | +extension VerificationViewController { | ||
61 | + | ||
62 | + @objc private func didCheckboxTapped(_ sender: Checkbox) { | ||
63 | + switch sender { | ||
64 | + case mainView.emailButton : | ||
65 | + mainView.emailTextField.isHidden = false | ||
66 | + mainView.phoneTextField.isHidden = true | ||
67 | + mainView.phoneNumberButton.isSelected = false | ||
68 | + mainView.emailButton.isSelected = true | ||
69 | + mainView.verificationDescriptionLabel.text = "Verification code will be sent to your e-mail" | ||
70 | + mainView.enterChosenAuthenticatorLabel.text = "Enter your email address" | ||
71 | + mainView.emailTextField.text = "" | ||
72 | + mainView.emailTextField.placeholder = "Example: john.doe@gmail.com" | ||
73 | + mainView.showPickerButton.isHidden = true | ||
74 | + case mainView.phoneNumberButton: | ||
75 | + mainView.emailTextField.isHidden = true | ||
76 | + mainView.phoneTextField.isHidden = false | ||
77 | + mainView.phoneNumberButton.isSelected = true | ||
78 | + mainView.emailButton.isSelected = false | ||
79 | + mainView.phoneNumberButton.image(for: .normal) | ||
80 | + mainView.verificationDescriptionLabel.text = "Verification code will be sent to\nyour phone number" | ||
81 | + mainView.enterChosenAuthenticatorLabel.text = "Enter your phone number" | ||
82 | + mainView.emailTextField.text = "+1" | ||
83 | + mainView.showPickerButton.isHidden = false | ||
84 | + default : | ||
85 | + return | ||
86 | + } | ||
87 | + } | ||
88 | + | ||
89 | + @objc private func didshowPickerButtonTapped(_ sender: UIButton) { | ||
90 | + mainView.isShow ? mainView.showPickerView() : mainView.hidePickerView() | ||
91 | + mainView.isShow.toggle() | ||
92 | + } | ||
93 | + | ||
94 | + @objc private func didShowCodeVerificationVC() { | ||
95 | + let vc = CodeVerificationViewController() | ||
96 | + vc.navigationItem.hidesBackButton = true | ||
97 | + navigationController?.pushViewController(vc, animated: true) | ||
98 | + } | ||
99 | + | ||
100 | + @objc func keyboardWillShow(notification: NSNotification) { | ||
101 | + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double | ||
102 | + if !isKeyboardAppear { | ||
103 | + UIView.animate(withDuration: duration ?? 0) { | ||
104 | + self.mainView.chooseLabel.snp.updateConstraints { make in | ||
105 | + make.top.equalTo(self.mainView.shieldImage.snp.bottom).offset(0) | ||
106 | + } | ||
107 | + self.mainView.dividingLineView.snp.updateConstraints { | ||
108 | + $0.top.equalTo(self.mainView.emailButton.snp.bottom).offset(10) | ||
109 | + } | ||
110 | + self.mainView.enterChosenAuthenticatorLabel.snp.updateConstraints { | ||
111 | + $0.top.equalTo(self.mainView.dividingLineView.snp.bottom).offset(5) | ||
112 | + } | ||
113 | + self.mainView.layoutIfNeeded() | ||
114 | + } | ||
115 | + isKeyboardAppear = true | ||
116 | + } | ||
117 | + } | ||
118 | + | ||
119 | + @objc func keyboardWillHide(notification: NSNotification) { | ||
120 | + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double | ||
121 | + | ||
122 | + if isKeyboardAppear { | ||
123 | + | ||
124 | + UIView.animate(withDuration: duration ?? 0) { | ||
125 | + self.mainView.chooseLabel.snp.updateConstraints { make in | ||
126 | + make.top.equalTo(self.mainView.shieldImage.snp.bottom).offset(52) | ||
127 | + } | ||
128 | + self.mainView.dividingLineView.snp.updateConstraints { | ||
129 | + $0.top.equalTo(self.mainView.emailButton.snp.bottom).offset(41) | ||
130 | + } | ||
131 | + self.mainView.enterChosenAuthenticatorLabel.snp.updateConstraints { | ||
132 | + $0.top.equalTo(self.mainView.dividingLineView.snp.bottom).offset(39) | ||
133 | + } | ||
134 | + self.mainView.layoutIfNeeded() | ||
135 | + } | ||
136 | + isKeyboardAppear = false | ||
137 | + } | ||
138 | + } | ||
139 | +} | ||
140 | + | ||
141 | +extension VerificationViewController: UIPickerViewDataSource, UIPickerViewDelegate { | ||
142 | + | ||
143 | + func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } | ||
144 | + | ||
145 | + func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { | ||
146 | + return phonePickerModels.count | ||
147 | + | ||
148 | + } | ||
149 | + | ||
150 | + func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { | ||
151 | + 60 | ||
152 | + } | ||
153 | + | ||
154 | + func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { | ||
155 | + let model = phonePickerModels[row] | ||
156 | + return PickerView.create(icon: model.icon, title: model.title, code: model.countryCode) | ||
157 | + } | ||
158 | + | ||
159 | + func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { | ||
160 | + pickerView.subviews[1].backgroundColor = .clear | ||
161 | + let model = phonePickerModels[row] | ||
162 | + mainView.phoneTextField.text = "\(model.countryCode)" | ||
163 | + mainView.flagPickerView.image = model.icon | ||
164 | + } | ||
165 | +} | ||
166 | + |
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 homeVC = HomeViewController() | ||
21 | + let navigation = UINavigationController(rootViewController: homeVC) | ||
22 | + navigation.isNavigationBarHidden = true | ||
23 | + window?.rootViewController = navigation | ||
24 | + window?.makeKeyAndVisible() | ||
25 | + } | ||
26 | +} | ||
27 | + |
Podfile
0 → 100644
Podfile.lock
0 → 100644
Pods/Manifest.lock
0 → 100644
Pods/Pods.xcodeproj/project.pbxproj
0 → 100644
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 55; | ||
7 | + objects = { | ||
8 | + | ||
9 | +/* Begin PBXBuildFile section */ | ||
10 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */; }; | ||
11 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */; }; | ||
12 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */; }; | ||
13 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */; }; | ||
14 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */; }; | ||
15 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */; }; | ||
16 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */; }; | ||
17 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */; }; | ||
18 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */; }; | ||
19 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */; }; | ||
20 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */; }; | ||
21 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */; }; | ||
22 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */; }; | ||
23 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */; }; | ||
24 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */; }; | ||
25 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */; }; | ||
26 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */; }; | ||
27 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */; }; | ||
28 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */; }; | ||
29 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */; }; | ||
30 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */; }; | ||
31 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */; }; | ||
32 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | ||
33 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */; }; | ||
34 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | ||
35 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */; }; | ||
36 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */; }; | ||
37 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */; }; | ||
38 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */; }; | ||
39 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */; }; | ||
40 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */; }; | ||
41 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | ||
42 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */; }; | ||
43 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */; }; | ||
44 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | ||
45 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */; }; | ||
46 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */; }; | ||
47 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */; }; | ||
48 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */; }; | ||
49 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */; }; | ||
50 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */; }; | ||
51 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */; }; | ||
52 | +/* End PBXBuildFile section */ | ||
53 | + | ||
54 | +/* Begin PBXContainerItemProxy section */ | ||
55 | + 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */ = { | ||
56 | + isa = PBXContainerItemProxy; | ||
57 | + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; | ||
58 | + proxyType = 1; | ||
59 | + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; | ||
60 | + remoteInfo = SnapKit; | ||
61 | + }; | ||
62 | +/* End PBXContainerItemProxy section */ | ||
63 | + | ||
64 | +/* Begin PBXFileReference section */ | ||
65 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = "<group>"; }; | ||
66 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = "<group>"; }; | ||
67 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = "<group>"; }; | ||
68 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = "<group>"; }; | ||
69 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = "<group>"; }; | ||
70 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-InterQR-Internship-umbrella.h"; sourceTree = "<group>"; }; | ||
71 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = "<group>"; }; | ||
72 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = "<group>"; }; | ||
73 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = "<group>"; }; | ||
74 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = "<group>"; }; | ||
75 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = "<group>"; }; | ||
76 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = "<group>"; }; | ||
77 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = "<group>"; }; | ||
78 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = "<group>"; }; | ||
79 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-InterQR-Internship-frameworks.sh"; sourceTree = "<group>"; }; | ||
80 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = "<group>"; }; | ||
81 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = "<group>"; }; | ||
82 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = "<group>"; }; | ||
83 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-acknowledgements.plist"; sourceTree = "<group>"; }; | ||
84 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = "<group>"; }; | ||
85 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = "<group>"; }; | ||
86 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = "<group>"; }; | ||
87 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = "<group>"; }; | ||
88 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; | ||
89 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = "<group>"; }; | ||
90 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = "<group>"; }; | ||
91 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = "<group>"; }; | ||
92 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = "<group>"; }; | ||
93 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-InterQR-Internship-acknowledgements.markdown"; sourceTree = "<group>"; }; | ||
94 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-Info.plist"; sourceTree = "<group>"; }; | ||
95 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Source/ConstraintDirectionalInsets.swift; sourceTree = "<group>"; }; | ||
96 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = "<group>"; }; | ||
97 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = "<group>"; }; | ||
98 | + 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
99 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.release.xcconfig"; sourceTree = "<group>"; }; | ||
100 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; | ||
101 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = "<group>"; }; | ||
102 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = "<group>"; }; | ||
103 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Source/ConstraintDirectionalInsetTarget.swift; sourceTree = "<group>"; }; | ||
104 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-InterQR-Internship"; path = Pods_InterQR_Internship.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
105 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = "<group>"; }; | ||
106 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = "<group>"; }; | ||
107 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = "<group>"; }; | ||
108 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = "<group>"; }; | ||
109 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-InterQR-Internship-dummy.m"; sourceTree = "<group>"; }; | ||
110 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = "<group>"; }; | ||
111 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = "<group>"; }; | ||
112 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = "<group>"; }; | ||
113 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = "<group>"; }; | ||
114 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = "<group>"; }; | ||
115 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = "<group>"; }; | ||
116 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.debug.xcconfig"; sourceTree = "<group>"; }; | ||
117 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = "<group>"; }; | ||
118 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = "<group>"; }; | ||
119 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-InterQR-Internship.modulemap"; sourceTree = "<group>"; }; | ||
120 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = "<group>"; }; | ||
121 | +/* End PBXFileReference section */ | ||
122 | + | ||
123 | +/* Begin PBXFrameworksBuildPhase section */ | ||
124 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */ = { | ||
125 | + isa = PBXFrameworksBuildPhase; | ||
126 | + buildActionMask = 2147483647; | ||
127 | + files = ( | ||
128 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */, | ||
129 | + ); | ||
130 | + runOnlyForDeploymentPostprocessing = 0; | ||
131 | + }; | ||
132 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */ = { | ||
133 | + isa = PBXFrameworksBuildPhase; | ||
134 | + buildActionMask = 2147483647; | ||
135 | + files = ( | ||
136 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */, | ||
137 | + ); | ||
138 | + runOnlyForDeploymentPostprocessing = 0; | ||
139 | + }; | ||
140 | +/* End PBXFrameworksBuildPhase section */ | ||
141 | + | ||
142 | +/* Begin PBXGroup section */ | ||
143 | + 578452D2E740E91742655AC8F1636D1F /* iOS */ = { | ||
144 | + isa = PBXGroup; | ||
145 | + children = ( | ||
146 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, | ||
147 | + ); | ||
148 | + name = iOS; | ||
149 | + sourceTree = "<group>"; | ||
150 | + }; | ||
151 | + 6CD2077814608664B890545761124450 /* Targets Support Files */ = { | ||
152 | + isa = PBXGroup; | ||
153 | + children = ( | ||
154 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */, | ||
155 | + ); | ||
156 | + name = "Targets Support Files"; | ||
157 | + sourceTree = "<group>"; | ||
158 | + }; | ||
159 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */ = { | ||
160 | + isa = PBXGroup; | ||
161 | + children = ( | ||
162 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */, | ||
163 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */, | ||
164 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */, | ||
165 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */, | ||
166 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */, | ||
167 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */, | ||
168 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */, | ||
169 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */, | ||
170 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */, | ||
171 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */, | ||
172 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */, | ||
173 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */, | ||
174 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */, | ||
175 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */, | ||
176 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */, | ||
177 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */, | ||
178 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */, | ||
179 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */, | ||
180 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */, | ||
181 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */, | ||
182 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */, | ||
183 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */, | ||
184 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */, | ||
185 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */, | ||
186 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */, | ||
187 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */, | ||
188 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */, | ||
189 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */, | ||
190 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */, | ||
191 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */, | ||
192 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */, | ||
193 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */, | ||
194 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */, | ||
195 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */, | ||
196 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */, | ||
197 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */, | ||
198 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */, | ||
199 | + ); | ||
200 | + name = SnapKit; | ||
201 | + path = SnapKit; | ||
202 | + sourceTree = "<group>"; | ||
203 | + }; | ||
204 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */ = { | ||
205 | + isa = PBXGroup; | ||
206 | + children = ( | ||
207 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */, | ||
208 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */, | ||
209 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */, | ||
210 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */, | ||
211 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */, | ||
212 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */, | ||
213 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */, | ||
214 | + ); | ||
215 | + name = "Support Files"; | ||
216 | + path = "../Target Support Files/SnapKit"; | ||
217 | + sourceTree = "<group>"; | ||
218 | + }; | ||
219 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */ = { | ||
220 | + isa = PBXGroup; | ||
221 | + children = ( | ||
222 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */, | ||
223 | + 979486118B3E90C08386079D57962701 /* SnapKit */, | ||
224 | + ); | ||
225 | + name = Products; | ||
226 | + sourceTree = "<group>"; | ||
227 | + }; | ||
228 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */ = { | ||
229 | + isa = PBXGroup; | ||
230 | + children = ( | ||
231 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */, | ||
232 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */, | ||
233 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */, | ||
234 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */, | ||
235 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */, | ||
236 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */, | ||
237 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */, | ||
238 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */, | ||
239 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */, | ||
240 | + ); | ||
241 | + name = "Pods-InterQR-Internship"; | ||
242 | + path = "Target Support Files/Pods-InterQR-Internship"; | ||
243 | + sourceTree = "<group>"; | ||
244 | + }; | ||
245 | + BA22F08D059965C9A09F78196176CEDB /* Pods */ = { | ||
246 | + isa = PBXGroup; | ||
247 | + children = ( | ||
248 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */, | ||
249 | + ); | ||
250 | + name = Pods; | ||
251 | + sourceTree = "<group>"; | ||
252 | + }; | ||
253 | + CF1408CF629C7361332E53B88F7BD30C = { | ||
254 | + isa = PBXGroup; | ||
255 | + children = ( | ||
256 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, | ||
257 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, | ||
258 | + BA22F08D059965C9A09F78196176CEDB /* Pods */, | ||
259 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */, | ||
260 | + 6CD2077814608664B890545761124450 /* Targets Support Files */, | ||
261 | + ); | ||
262 | + sourceTree = "<group>"; | ||
263 | + }; | ||
264 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { | ||
265 | + isa = PBXGroup; | ||
266 | + children = ( | ||
267 | + 578452D2E740E91742655AC8F1636D1F /* iOS */, | ||
268 | + ); | ||
269 | + name = Frameworks; | ||
270 | + sourceTree = "<group>"; | ||
271 | + }; | ||
272 | +/* End PBXGroup section */ | ||
273 | + | ||
274 | +/* Begin PBXHeadersBuildPhase section */ | ||
275 | + 3B921547E999920F44EBD58F955423CC /* Headers */ = { | ||
276 | + isa = PBXHeadersBuildPhase; | ||
277 | + buildActionMask = 2147483647; | ||
278 | + files = ( | ||
279 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */, | ||
280 | + ); | ||
281 | + runOnlyForDeploymentPostprocessing = 0; | ||
282 | + }; | ||
283 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */ = { | ||
284 | + isa = PBXHeadersBuildPhase; | ||
285 | + buildActionMask = 2147483647; | ||
286 | + files = ( | ||
287 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */, | ||
288 | + ); | ||
289 | + runOnlyForDeploymentPostprocessing = 0; | ||
290 | + }; | ||
291 | +/* End PBXHeadersBuildPhase section */ | ||
292 | + | ||
293 | +/* Begin PBXNativeTarget section */ | ||
294 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { | ||
295 | + isa = PBXNativeTarget; | ||
296 | + buildConfigurationList = 4949A940CD53B7E293859B71C91C88F3 /* Build configuration list for PBXNativeTarget "SnapKit" */; | ||
297 | + buildPhases = ( | ||
298 | + 3B921547E999920F44EBD58F955423CC /* Headers */, | ||
299 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */, | ||
300 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */, | ||
301 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */, | ||
302 | + ); | ||
303 | + buildRules = ( | ||
304 | + ); | ||
305 | + dependencies = ( | ||
306 | + ); | ||
307 | + name = SnapKit; | ||
308 | + productName = SnapKit; | ||
309 | + productReference = 979486118B3E90C08386079D57962701 /* SnapKit */; | ||
310 | + productType = "com.apple.product-type.framework"; | ||
311 | + }; | ||
312 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */ = { | ||
313 | + isa = PBXNativeTarget; | ||
314 | + buildConfigurationList = D8D8A2B883726AC5D3A57DEBA6C81808 /* Build configuration list for PBXNativeTarget "Pods-InterQR-Internship" */; | ||
315 | + buildPhases = ( | ||
316 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */, | ||
317 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */, | ||
318 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */, | ||
319 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */, | ||
320 | + ); | ||
321 | + buildRules = ( | ||
322 | + ); | ||
323 | + dependencies = ( | ||
324 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */, | ||
325 | + ); | ||
326 | + name = "Pods-InterQR-Internship"; | ||
327 | + productName = Pods_InterQR_Internship; | ||
328 | + productReference = BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */; | ||
329 | + productType = "com.apple.product-type.framework"; | ||
330 | + }; | ||
331 | +/* End PBXNativeTarget section */ | ||
332 | + | ||
333 | +/* Begin PBXProject section */ | ||
334 | + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { | ||
335 | + isa = PBXProject; | ||
336 | + attributes = { | ||
337 | + LastSwiftUpdateCheck = 1240; | ||
338 | + LastUpgradeCheck = 1240; | ||
339 | + }; | ||
340 | + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; | ||
341 | + compatibilityVersion = "Xcode 13.0"; | ||
342 | + developmentRegion = en; | ||
343 | + hasScannedForEncodings = 0; | ||
344 | + knownRegions = ( | ||
345 | + Base, | ||
346 | + en, | ||
347 | + ); | ||
348 | + mainGroup = CF1408CF629C7361332E53B88F7BD30C; | ||
349 | + productRefGroup = A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */; | ||
350 | + projectDirPath = ""; | ||
351 | + projectRoot = ""; | ||
352 | + targets = ( | ||
353 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */, | ||
354 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */, | ||
355 | + ); | ||
356 | + }; | ||
357 | +/* End PBXProject section */ | ||
358 | + | ||
359 | +/* Begin PBXResourcesBuildPhase section */ | ||
360 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */ = { | ||
361 | + isa = PBXResourcesBuildPhase; | ||
362 | + buildActionMask = 2147483647; | ||
363 | + files = ( | ||
364 | + ); | ||
365 | + runOnlyForDeploymentPostprocessing = 0; | ||
366 | + }; | ||
367 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */ = { | ||
368 | + isa = PBXResourcesBuildPhase; | ||
369 | + buildActionMask = 2147483647; | ||
370 | + files = ( | ||
371 | + ); | ||
372 | + runOnlyForDeploymentPostprocessing = 0; | ||
373 | + }; | ||
374 | +/* End PBXResourcesBuildPhase section */ | ||
375 | + | ||
376 | +/* Begin PBXSourcesBuildPhase section */ | ||
377 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */ = { | ||
378 | + isa = PBXSourcesBuildPhase; | ||
379 | + buildActionMask = 2147483647; | ||
380 | + files = ( | ||
381 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */, | ||
382 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */, | ||
383 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */, | ||
384 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */, | ||
385 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */, | ||
386 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */, | ||
387 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */, | ||
388 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */, | ||
389 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */, | ||
390 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */, | ||
391 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */, | ||
392 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */, | ||
393 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */, | ||
394 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */, | ||
395 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */, | ||
396 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */, | ||
397 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */, | ||
398 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */, | ||
399 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */, | ||
400 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */, | ||
401 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */, | ||
402 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */, | ||
403 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */, | ||
404 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */, | ||
405 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */, | ||
406 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */, | ||
407 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */, | ||
408 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */, | ||
409 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */, | ||
410 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */, | ||
411 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */, | ||
412 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */, | ||
413 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */, | ||
414 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */, | ||
415 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */, | ||
416 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */, | ||
417 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */, | ||
418 | + ); | ||
419 | + runOnlyForDeploymentPostprocessing = 0; | ||
420 | + }; | ||
421 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */ = { | ||
422 | + isa = PBXSourcesBuildPhase; | ||
423 | + buildActionMask = 2147483647; | ||
424 | + files = ( | ||
425 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */, | ||
426 | + ); | ||
427 | + runOnlyForDeploymentPostprocessing = 0; | ||
428 | + }; | ||
429 | +/* End PBXSourcesBuildPhase section */ | ||
430 | + | ||
431 | +/* Begin PBXTargetDependency section */ | ||
432 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */ = { | ||
433 | + isa = PBXTargetDependency; | ||
434 | + name = SnapKit; | ||
435 | + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; | ||
436 | + targetProxy = 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */; | ||
437 | + }; | ||
438 | +/* End PBXTargetDependency section */ | ||
439 | + | ||
440 | +/* Begin XCBuildConfiguration section */ | ||
441 | + 0F9522C29D6C28CA5AC2E35825B46E18 /* Debug */ = { | ||
442 | + isa = XCBuildConfiguration; | ||
443 | + baseConfigurationReference = EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.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 = 13.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 | + VERSIONING_SYSTEM = "apple-generic"; | ||
474 | + VERSION_INFO_PREFIX = ""; | ||
475 | + }; | ||
476 | + name = Debug; | ||
477 | + }; | ||
478 | + 34910699A154CFAFDE9D8D1B44641C55 /* Release */ = { | ||
479 | + isa = XCBuildConfiguration; | ||
480 | + baseConfigurationReference = 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */; | ||
481 | + buildSettings = { | ||
482 | + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; | ||
483 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
484 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
485 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
486 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
487 | + CURRENT_PROJECT_VERSION = 1; | ||
488 | + DEFINES_MODULE = YES; | ||
489 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
490 | + DYLIB_CURRENT_VERSION = 1; | ||
491 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
492 | + INFOPLIST_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-Info.plist"; | ||
493 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
494 | + IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||
495 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
496 | + "$(inherited)", | ||
497 | + "@executable_path/Frameworks", | ||
498 | + "@loader_path/Frameworks", | ||
499 | + ); | ||
500 | + MACH_O_TYPE = staticlib; | ||
501 | + MODULEMAP_FILE = "Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.modulemap"; | ||
502 | + OTHER_LDFLAGS = ""; | ||
503 | + OTHER_LIBTOOLFLAGS = ""; | ||
504 | + PODS_ROOT = "$(SRCROOT)"; | ||
505 | + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; | ||
506 | + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; | ||
507 | + SDKROOT = iphoneos; | ||
508 | + SKIP_INSTALL = YES; | ||
509 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
510 | + VALIDATE_PRODUCT = YES; | ||
511 | + VERSIONING_SYSTEM = "apple-generic"; | ||
512 | + VERSION_INFO_PREFIX = ""; | ||
513 | + }; | ||
514 | + name = Release; | ||
515 | + }; | ||
516 | + 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { | ||
517 | + isa = XCBuildConfiguration; | ||
518 | + buildSettings = { | ||
519 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
520 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
521 | + CLANG_ANALYZER_NONNULL = YES; | ||
522 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
523 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
524 | + CLANG_CXX_LIBRARY = "libc++"; | ||
525 | + CLANG_ENABLE_MODULES = YES; | ||
526 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
527 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
528 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
529 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
530 | + CLANG_WARN_COMMA = YES; | ||
531 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
532 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
533 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
534 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
535 | + CLANG_WARN_EMPTY_BODY = YES; | ||
536 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
537 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
538 | + CLANG_WARN_INT_CONVERSION = YES; | ||
539 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
540 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
541 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
542 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
543 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
544 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
545 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
546 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
547 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
548 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
549 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
550 | + COPY_PHASE_STRIP = NO; | ||
551 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
552 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
553 | + ENABLE_TESTABILITY = YES; | ||
554 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
555 | + GCC_DYNAMIC_NO_PIC = NO; | ||
556 | + GCC_NO_COMMON_BLOCKS = YES; | ||
557 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
558 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
559 | + "POD_CONFIGURATION_DEBUG=1", | ||
560 | + "DEBUG=1", | ||
561 | + "$(inherited)", | ||
562 | + ); | ||
563 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
564 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
565 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
566 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
567 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
568 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
569 | + IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||
570 | + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
571 | + MTL_FAST_MATH = YES; | ||
572 | + ONLY_ACTIVE_ARCH = YES; | ||
573 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
574 | + STRIP_INSTALLED_PRODUCT = NO; | ||
575 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
576 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
577 | + SWIFT_VERSION = 5.0; | ||
578 | + SYMROOT = "${SRCROOT}/../build"; | ||
579 | + }; | ||
580 | + name = Debug; | ||
581 | + }; | ||
582 | + 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { | ||
583 | + isa = XCBuildConfiguration; | ||
584 | + buildSettings = { | ||
585 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
586 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
587 | + CLANG_ANALYZER_NONNULL = YES; | ||
588 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
589 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
590 | + CLANG_CXX_LIBRARY = "libc++"; | ||
591 | + CLANG_ENABLE_MODULES = YES; | ||
592 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
593 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
594 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
595 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
596 | + CLANG_WARN_COMMA = YES; | ||
597 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
598 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
599 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
600 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
601 | + CLANG_WARN_EMPTY_BODY = YES; | ||
602 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
603 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
604 | + CLANG_WARN_INT_CONVERSION = YES; | ||
605 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
606 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
607 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
608 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
609 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
610 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
611 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
612 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
613 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
614 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
615 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
616 | + COPY_PHASE_STRIP = NO; | ||
617 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
618 | + ENABLE_NS_ASSERTIONS = NO; | ||
619 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
620 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
621 | + GCC_NO_COMMON_BLOCKS = YES; | ||
622 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
623 | + "POD_CONFIGURATION_RELEASE=1", | ||
624 | + "$(inherited)", | ||
625 | + ); | ||
626 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
627 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
628 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
629 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
630 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
631 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
632 | + IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||
633 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
634 | + MTL_FAST_MATH = YES; | ||
635 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
636 | + STRIP_INSTALLED_PRODUCT = NO; | ||
637 | + SWIFT_COMPILATION_MODE = wholemodule; | ||
638 | + SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||
639 | + SWIFT_VERSION = 5.0; | ||
640 | + SYMROOT = "${SRCROOT}/../build"; | ||
641 | + }; | ||
642 | + name = Release; | ||
643 | + }; | ||
644 | + CB8A79F7382B0A1227C38D59E7968EEA /* Debug */ = { | ||
645 | + isa = XCBuildConfiguration; | ||
646 | + baseConfigurationReference = 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */; | ||
647 | + buildSettings = { | ||
648 | + CLANG_ENABLE_OBJC_WEAK = NO; | ||
649 | + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; | ||
650 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | ||
651 | + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; | ||
652 | + CURRENT_PROJECT_VERSION = 1; | ||
653 | + DEFINES_MODULE = YES; | ||
654 | + DYLIB_COMPATIBILITY_VERSION = 1; | ||
655 | + DYLIB_CURRENT_VERSION = 1; | ||
656 | + DYLIB_INSTALL_NAME_BASE = "@rpath"; | ||
657 | + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; | ||
658 | + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; | ||
659 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
660 | + IPHONEOS_DEPLOYMENT_TARGET = 10.0; | ||
661 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
662 | + "$(inherited)", | ||
663 | + "@executable_path/Frameworks", | ||
664 | + "@loader_path/Frameworks", | ||
665 | + ); | ||
666 | + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; | ||
667 | + PRODUCT_MODULE_NAME = SnapKit; | ||
668 | + PRODUCT_NAME = SnapKit; | ||
669 | + SDKROOT = iphoneos; | ||
670 | + SKIP_INSTALL = YES; | ||
671 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; | ||
672 | + SWIFT_VERSION = 5.0; | ||
673 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
674 | + VERSIONING_SYSTEM = "apple-generic"; | ||
675 | + VERSION_INFO_PREFIX = ""; | ||
676 | + }; | ||
677 | + name = Debug; | ||
678 | + }; | ||
679 | + DFFD31690F9CC8449FD1F803388E1D46 /* Release */ = { | ||
680 | + isa = XCBuildConfiguration; | ||
681 | + baseConfigurationReference = A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */; | ||
682 | + buildSettings = { | ||
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 | + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; | ||
693 | + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; | ||
694 | + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | ||
695 | + IPHONEOS_DEPLOYMENT_TARGET = 10.0; | ||
696 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
697 | + "$(inherited)", | ||
698 | + "@executable_path/Frameworks", | ||
699 | + "@loader_path/Frameworks", | ||
700 | + ); | ||
701 | + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; | ||
702 | + PRODUCT_MODULE_NAME = SnapKit; | ||
703 | + PRODUCT_NAME = SnapKit; | ||
704 | + SDKROOT = iphoneos; | ||
705 | + SKIP_INSTALL = YES; | ||
706 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; | ||
707 | + SWIFT_VERSION = 5.0; | ||
708 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
709 | + VALIDATE_PRODUCT = YES; | ||
710 | + VERSIONING_SYSTEM = "apple-generic"; | ||
711 | + VERSION_INFO_PREFIX = ""; | ||
712 | + }; | ||
713 | + name = Release; | ||
714 | + }; | ||
715 | +/* End XCBuildConfiguration section */ | ||
716 | + | ||
717 | +/* Begin XCConfigurationList section */ | ||
718 | + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { | ||
719 | + isa = XCConfigurationList; | ||
720 | + buildConfigurations = ( | ||
721 | + 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */, | ||
722 | + 9E406C6AAF85E580207CD97B0044DEAB /* 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 | + 0F9522C29D6C28CA5AC2E35825B46E18 /* Debug */, | ||
740 | + 34910699A154CFAFDE9D8D1B44641C55 /* Release */, | ||
741 | + ); | ||
742 | + defaultConfigurationIsVisible = 0; | ||
743 | + defaultConfigurationName = Release; | ||
744 | + }; | ||
745 | +/* End XCConfigurationList section */ | ||
746 | + }; | ||
747 | + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; | ||
748 | +} |
Pods/Pods.xcodeproj/xcuserdata/leyter.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/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 |
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 | +@available(iOS 9.0, OSX 10.11, *) | ||
32 | +public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL { | ||
33 | + | ||
34 | + @discardableResult | ||
35 | + public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { | ||
36 | + return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure) | ||
37 | + } | ||
38 | + | ||
39 | + public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
40 | + ConstraintMaker.makeConstraints(item: self.guide, closure: closure) | ||
41 | + } | ||
42 | + | ||
43 | + public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
44 | + ConstraintMaker.remakeConstraints(item: self.guide, closure: closure) | ||
45 | + } | ||
46 | + | ||
47 | + public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
48 | + ConstraintMaker.updateConstraints(item: self.guide, closure: closure) | ||
49 | + } | ||
50 | + | ||
51 | + public func removeConstraints() { | ||
52 | + ConstraintMaker.removeConstraints(item: self.guide) | ||
53 | + } | ||
54 | + | ||
55 | + public var target: AnyObject? { | ||
56 | + return self.guide | ||
57 | + } | ||
58 | + | ||
59 | + internal let guide: ConstraintLayoutGuide | ||
60 | + | ||
61 | + internal init(guide: ConstraintLayoutGuide) { | ||
62 | + self.guide = guide | ||
63 | + | ||
64 | + } | ||
65 | + | ||
66 | +} |
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 8.0, *) | ||
33 | + public typealias ConstraintLayoutSupport = UILayoutSupport | ||
34 | +#else | ||
35 | + public class ConstraintLayoutSupport {} | ||
36 | +#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 | +@available(iOS 8.0, *) | ||
32 | +public struct ConstraintLayoutSupportDSL: ConstraintDSL { | ||
33 | + | ||
34 | + public var target: AnyObject? { | ||
35 | + return self.support | ||
36 | + } | ||
37 | + | ||
38 | + internal let support: ConstraintLayoutSupport | ||
39 | + | ||
40 | + internal init(support: ConstraintLayoutSupport) { | ||
41 | + self.support = support | ||
42 | + | ||
43 | + } | ||
44 | + | ||
45 | + public var top: ConstraintItem { | ||
46 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) | ||
47 | + } | ||
48 | + | ||
49 | + public var bottom: ConstraintItem { | ||
50 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) | ||
51 | + } | ||
52 | + | ||
53 | + public var height: ConstraintItem { | ||
54 | + return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) | ||
55 | + } | ||
56 | +} |
Pods/SnapKit/Source/ConstraintMaker.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 class ConstraintMaker { | ||
31 | + | ||
32 | + public var left: ConstraintMakerExtendable { | ||
33 | + return self.makeExtendableWithAttributes(.left) | ||
34 | + } | ||
35 | + | ||
36 | + public var top: ConstraintMakerExtendable { | ||
37 | + return self.makeExtendableWithAttributes(.top) | ||
38 | + } | ||
39 | + | ||
40 | + public var bottom: ConstraintMakerExtendable { | ||
41 | + return self.makeExtendableWithAttributes(.bottom) | ||
42 | + } | ||
43 | + | ||
44 | + public var right: ConstraintMakerExtendable { | ||
45 | + return self.makeExtendableWithAttributes(.right) | ||
46 | + } | ||
47 | + | ||
48 | + public var leading: ConstraintMakerExtendable { | ||
49 | + return self.makeExtendableWithAttributes(.leading) | ||
50 | + } | ||
51 | + | ||
52 | + public var trailing: ConstraintMakerExtendable { | ||
53 | + return self.makeExtendableWithAttributes(.trailing) | ||
54 | + } | ||
55 | + | ||
56 | + public var width: ConstraintMakerExtendable { | ||
57 | + return self.makeExtendableWithAttributes(.width) | ||
58 | + } | ||
59 | + | ||
60 | + public var height: ConstraintMakerExtendable { | ||
61 | + return self.makeExtendableWithAttributes(.height) | ||
62 | + } | ||
63 | + | ||
64 | + public var centerX: ConstraintMakerExtendable { | ||
65 | + return self.makeExtendableWithAttributes(.centerX) | ||
66 | + } | ||
67 | + | ||
68 | + public var centerY: ConstraintMakerExtendable { | ||
69 | + return self.makeExtendableWithAttributes(.centerY) | ||
70 | + } | ||
71 | + | ||
72 | + @available(*, deprecated, message:"Use lastBaseline instead") | ||
73 | + public var baseline: ConstraintMakerExtendable { | ||
74 | + return self.makeExtendableWithAttributes(.lastBaseline) | ||
75 | + } | ||
76 | + | ||
77 | + public var lastBaseline: ConstraintMakerExtendable { | ||
78 | + return self.makeExtendableWithAttributes(.lastBaseline) | ||
79 | + } | ||
80 | + | ||
81 | + @available(iOS 8.0, OSX 10.11, *) | ||
82 | + public var firstBaseline: ConstraintMakerExtendable { | ||
83 | + return self.makeExtendableWithAttributes(.firstBaseline) | ||
84 | + } | ||
85 | + | ||
86 | + @available(iOS 8.0, *) | ||
87 | + public var leftMargin: ConstraintMakerExtendable { | ||
88 | + return self.makeExtendableWithAttributes(.leftMargin) | ||
89 | + } | ||
90 | + | ||
91 | + @available(iOS 8.0, *) | ||
92 | + public var rightMargin: ConstraintMakerExtendable { | ||
93 | + return self.makeExtendableWithAttributes(.rightMargin) | ||
94 | + } | ||
95 | + | ||
96 | + @available(iOS 8.0, *) | ||
97 | + public var topMargin: ConstraintMakerExtendable { | ||
98 | + return self.makeExtendableWithAttributes(.topMargin) | ||
99 | + } | ||
100 | + | ||
101 | + @available(iOS 8.0, *) | ||
102 | + public var bottomMargin: ConstraintMakerExtendable { | ||
103 | + return self.makeExtendableWithAttributes(.bottomMargin) | ||
104 | + } | ||
105 | + | ||
106 | + @available(iOS 8.0, *) | ||
107 | + public var leadingMargin: ConstraintMakerExtendable { | ||
108 | + return self.makeExtendableWithAttributes(.leadingMargin) | ||
109 | + } | ||
110 | + | ||
111 | + @available(iOS 8.0, *) | ||
112 | + public var trailingMargin: ConstraintMakerExtendable { | ||
113 | + return self.makeExtendableWithAttributes(.trailingMargin) | ||
114 | + } | ||
115 | + | ||
116 | + @available(iOS 8.0, *) | ||
117 | + public var centerXWithinMargins: ConstraintMakerExtendable { | ||
118 | + return self.makeExtendableWithAttributes(.centerXWithinMargins) | ||
119 | + } | ||
120 | + | ||
121 | + @available(iOS 8.0, *) | ||
122 | + public var centerYWithinMargins: ConstraintMakerExtendable { | ||
123 | + return self.makeExtendableWithAttributes(.centerYWithinMargins) | ||
124 | + } | ||
125 | + | ||
126 | + public var edges: ConstraintMakerExtendable { | ||
127 | + return self.makeExtendableWithAttributes(.edges) | ||
128 | + } | ||
129 | + public var directionalEdges: ConstraintMakerExtendable { | ||
130 | + return self.makeExtendableWithAttributes(.directionalEdges) | ||
131 | + } | ||
132 | + public var size: ConstraintMakerExtendable { | ||
133 | + return self.makeExtendableWithAttributes(.size) | ||
134 | + } | ||
135 | + public var center: ConstraintMakerExtendable { | ||
136 | + return self.makeExtendableWithAttributes(.center) | ||
137 | + } | ||
138 | + | ||
139 | + @available(iOS 8.0, *) | ||
140 | + public var margins: ConstraintMakerExtendable { | ||
141 | + return self.makeExtendableWithAttributes(.margins) | ||
142 | + } | ||
143 | + | ||
144 | + @available(iOS 8.0, *) | ||
145 | + public var directionalMargins: ConstraintMakerExtendable { | ||
146 | + return self.makeExtendableWithAttributes(.directionalMargins) | ||
147 | + } | ||
148 | + | ||
149 | + @available(iOS 8.0, *) | ||
150 | + public var centerWithinMargins: ConstraintMakerExtendable { | ||
151 | + return self.makeExtendableWithAttributes(.centerWithinMargins) | ||
152 | + } | ||
153 | + | ||
154 | + private let item: LayoutConstraintItem | ||
155 | + private var descriptions = [ConstraintDescription]() | ||
156 | + | ||
157 | + internal init(item: LayoutConstraintItem) { | ||
158 | + self.item = item | ||
159 | + self.item.prepare() | ||
160 | + } | ||
161 | + | ||
162 | + internal func makeExtendableWithAttributes(_ attributes: ConstraintAttributes) -> ConstraintMakerExtendable { | ||
163 | + let description = ConstraintDescription(item: self.item, attributes: attributes) | ||
164 | + self.descriptions.append(description) | ||
165 | + return ConstraintMakerExtendable(description) | ||
166 | + } | ||
167 | + | ||
168 | + internal static func prepareConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { | ||
169 | + let maker = ConstraintMaker(item: item) | ||
170 | + closure(maker) | ||
171 | + var constraints: [Constraint] = [] | ||
172 | + for description in maker.descriptions { | ||
173 | + guard let constraint = description.constraint else { | ||
174 | + continue | ||
175 | + } | ||
176 | + constraints.append(constraint) | ||
177 | + } | ||
178 | + return constraints | ||
179 | + } | ||
180 | + | ||
181 | + internal static func makeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { | ||
182 | + let constraints = prepareConstraints(item: item, closure: closure) | ||
183 | + for constraint in constraints { | ||
184 | + constraint.activateIfNeeded(updatingExisting: false) | ||
185 | + } | ||
186 | + } | ||
187 | + | ||
188 | + internal static func remakeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { | ||
189 | + self.removeConstraints(item: item) | ||
190 | + self.makeConstraints(item: item, closure: closure) | ||
191 | + } | ||
192 | + | ||
193 | + internal static func updateConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { | ||
194 | + guard item.constraints.count > 0 else { | ||
195 | + self.makeConstraints(item: item, closure: closure) | ||
196 | + return | ||
197 | + } | ||
198 | + | ||
199 | + let constraints = prepareConstraints(item: item, closure: closure) | ||
200 | + for constraint in constraints { | ||
201 | + constraint.activateIfNeeded(updatingExisting: true) | ||
202 | + } | ||
203 | + } | ||
204 | + | ||
205 | + internal static func removeConstraints(item: LayoutConstraintItem) { | ||
206 | + let constraints = item.constraints | ||
207 | + for constraint in constraints { | ||
208 | + constraint.deactivateIfNeeded() | ||
209 | + } | ||
210 | + } | ||
211 | + | ||
212 | +} |
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 ConstraintMakerEditable: ConstraintMakerPriortizable { | ||
32 | + | ||
33 | + @discardableResult | ||
34 | + public func multipliedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { | ||
35 | + self.description.multiplier = amount | ||
36 | + return self | ||
37 | + } | ||
38 | + | ||
39 | + @discardableResult | ||
40 | + public func dividedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { | ||
41 | + return self.multipliedBy(1.0 / amount.constraintMultiplierTargetValue) | ||
42 | + } | ||
43 | + | ||
44 | + @discardableResult | ||
45 | + public func offset(_ amount: ConstraintOffsetTarget) -> ConstraintMakerEditable { | ||
46 | + self.description.constant = amount.constraintOffsetTargetValue | ||
47 | + return self | ||
48 | + } | ||
49 | + | ||
50 | + @discardableResult | ||
51 | + public func inset(_ amount: ConstraintInsetTarget) -> ConstraintMakerEditable { | ||
52 | + self.description.constant = amount.constraintInsetTargetValue | ||
53 | + return self | ||
54 | + } | ||
55 | + | ||
56 | + #if os(iOS) || os(tvOS) | ||
57 | + @discardableResult | ||
58 | + @available(iOS 11.0, tvOS 11.0, *) | ||
59 | + public func inset(_ amount: ConstraintDirectionalInsetTarget) -> ConstraintMakerEditable { | ||
60 | + self.description.constant = amount.constraintDirectionalInsetTargetValue | ||
61 | + return self | ||
62 | + } | ||
63 | + #endif | ||
64 | +} |
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 ConstraintMakerExtendable: ConstraintMakerRelatable { | ||
32 | + | ||
33 | + public var left: ConstraintMakerExtendable { | ||
34 | + self.description.attributes += .left | ||
35 | + return self | ||
36 | + } | ||
37 | + | ||
38 | + public var top: ConstraintMakerExtendable { | ||
39 | + self.description.attributes += .top | ||
40 | + return self | ||
41 | + } | ||
42 | + | ||
43 | + public var bottom: ConstraintMakerExtendable { | ||
44 | + self.description.attributes += .bottom | ||
45 | + return self | ||
46 | + } | ||
47 | + | ||
48 | + public var right: ConstraintMakerExtendable { | ||
49 | + self.description.attributes += .right | ||
50 | + return self | ||
51 | + } | ||
52 | + | ||
53 | + public var leading: ConstraintMakerExtendable { | ||
54 | + self.description.attributes += .leading | ||
55 | + return self | ||
56 | + } | ||
57 | + | ||
58 | + public var trailing: ConstraintMakerExtendable { | ||
59 | + self.description.attributes += .trailing | ||
60 | + return self | ||
61 | + } | ||
62 | + | ||
63 | + public var width: ConstraintMakerExtendable { | ||
64 | + self.description.attributes += .width | ||
65 | + return self | ||
66 | + } | ||
67 | + | ||
68 | + public var height: ConstraintMakerExtendable { | ||
69 | + self.description.attributes += .height | ||
70 | + return self | ||
71 | + } | ||
72 | + | ||
73 | + public var centerX: ConstraintMakerExtendable { | ||
74 | + self.description.attributes += .centerX | ||
75 | + return self | ||
76 | + } | ||
77 | + | ||
78 | + public var centerY: ConstraintMakerExtendable { | ||
79 | + self.description.attributes += .centerY | ||
80 | + return self | ||
81 | + } | ||
82 | + | ||
83 | + @available(*, deprecated, message:"Use lastBaseline instead") | ||
84 | + public var baseline: ConstraintMakerExtendable { | ||
85 | + self.description.attributes += .lastBaseline | ||
86 | + return self | ||
87 | + } | ||
88 | + | ||
89 | + public var lastBaseline: ConstraintMakerExtendable { | ||
90 | + self.description.attributes += .lastBaseline | ||
91 | + return self | ||
92 | + } | ||
93 | + | ||
94 | + @available(iOS 8.0, OSX 10.11, *) | ||
95 | + public var firstBaseline: ConstraintMakerExtendable { | ||
96 | + self.description.attributes += .firstBaseline | ||
97 | + return self | ||
98 | + } | ||
99 | + | ||
100 | + @available(iOS 8.0, *) | ||
101 | + public var leftMargin: ConstraintMakerExtendable { | ||
102 | + self.description.attributes += .leftMargin | ||
103 | + return self | ||
104 | + } | ||
105 | + | ||
106 | + @available(iOS 8.0, *) | ||
107 | + public var rightMargin: ConstraintMakerExtendable { | ||
108 | + self.description.attributes += .rightMargin | ||
109 | + return self | ||
110 | + } | ||
111 | + | ||
112 | + @available(iOS 8.0, *) | ||
113 | + public var topMargin: ConstraintMakerExtendable { | ||
114 | + self.description.attributes += .topMargin | ||
115 | + return self | ||
116 | + } | ||
117 | + | ||
118 | + @available(iOS 8.0, *) | ||
119 | + public var bottomMargin: ConstraintMakerExtendable { | ||
120 | + self.description.attributes += .bottomMargin | ||
121 | + return self | ||
122 | + } | ||
123 | + | ||
124 | + @available(iOS 8.0, *) | ||
125 | + public var leadingMargin: ConstraintMakerExtendable { | ||
126 | + self.description.attributes += .leadingMargin | ||
127 | + return self | ||
128 | + } | ||
129 | + | ||
130 | + @available(iOS 8.0, *) | ||
131 | + public var trailingMargin: ConstraintMakerExtendable { | ||
132 | + self.description.attributes += .trailingMargin | ||
133 | + return self | ||
134 | + } | ||
135 | + | ||
136 | + @available(iOS 8.0, *) | ||
137 | + public var centerXWithinMargins: ConstraintMakerExtendable { | ||
138 | + self.description.attributes += .centerXWithinMargins | ||
139 | + return self | ||
140 | + } | ||
141 | + | ||
142 | + @available(iOS 8.0, *) | ||
143 | + public var centerYWithinMargins: ConstraintMakerExtendable { | ||
144 | + self.description.attributes += .centerYWithinMargins | ||
145 | + return self | ||
146 | + } | ||
147 | + | ||
148 | + public var edges: ConstraintMakerExtendable { | ||
149 | + self.description.attributes += .edges | ||
150 | + return self | ||
151 | + } | ||
152 | + public var directionalEdges: ConstraintMakerExtendable { | ||
153 | + self.description.attributes += .directionalEdges | ||
154 | + return self | ||
155 | + } | ||
156 | + public var size: ConstraintMakerExtendable { | ||
157 | + self.description.attributes += .size | ||
158 | + return self | ||
159 | + } | ||
160 | + | ||
161 | + @available(iOS 8.0, *) | ||
162 | + public var margins: ConstraintMakerExtendable { | ||
163 | + self.description.attributes += .margins | ||
164 | + return self | ||
165 | + } | ||
166 | + | ||
167 | + @available(iOS 8.0, *) | ||
168 | + public var directionalMargins: ConstraintMakerExtendable { | ||
169 | + self.description.attributes += .directionalMargins | ||
170 | + return self | ||
171 | + } | ||
172 | + | ||
173 | + @available(iOS 8.0, *) | ||
174 | + public var centerWithinMargins: ConstraintMakerExtendable { | ||
175 | + self.description.attributes += .centerWithinMargins | ||
176 | + return self | ||
177 | + } | ||
178 | + | ||
179 | +} |
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 ConstraintMakerFinalizable { | ||
32 | + | ||
33 | + internal let description: ConstraintDescription | ||
34 | + | ||
35 | + internal init(_ description: ConstraintDescription) { | ||
36 | + self.description = description | ||
37 | + } | ||
38 | + | ||
39 | + @discardableResult | ||
40 | + public func labeled(_ label: String) -> ConstraintMakerFinalizable { | ||
41 | + self.description.label = label | ||
42 | + return self | ||
43 | + } | ||
44 | + | ||
45 | + public var constraint: Constraint { | ||
46 | + return self.description.constraint! | ||
47 | + } | ||
48 | + | ||
49 | +} |
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 ConstraintMakerPriortizable: ConstraintMakerFinalizable { | ||
32 | + | ||
33 | + @discardableResult | ||
34 | + public func priority(_ amount: ConstraintPriority) -> ConstraintMakerFinalizable { | ||
35 | + self.description.priority = amount.value | ||
36 | + return self | ||
37 | + } | ||
38 | + | ||
39 | + @discardableResult | ||
40 | + public func priority(_ amount: ConstraintPriorityTarget) -> ConstraintMakerFinalizable { | ||
41 | + self.description.priority = amount | ||
42 | + return self | ||
43 | + } | ||
44 | + | ||
45 | + @available(*, deprecated, message:"Use priority(.required) instead.") | ||
46 | + @discardableResult | ||
47 | + public func priorityRequired() -> ConstraintMakerFinalizable { | ||
48 | + return self.priority(.required) | ||
49 | + } | ||
50 | + | ||
51 | + @available(*, deprecated, message:"Use priority(.high) instead.") | ||
52 | + @discardableResult | ||
53 | + public func priorityHigh() -> ConstraintMakerFinalizable { | ||
54 | + return self.priority(.high) | ||
55 | + } | ||
56 | + | ||
57 | + @available(*, deprecated, message:"Use priority(.medium) instead.") | ||
58 | + @discardableResult | ||
59 | + public func priorityMedium() -> ConstraintMakerFinalizable { | ||
60 | + return self.priority(.medium) | ||
61 | + } | ||
62 | + | ||
63 | + @available(*, deprecated, message:"Use priority(.low) instead.") | ||
64 | + @discardableResult | ||
65 | + public func priorityLow() -> ConstraintMakerFinalizable { | ||
66 | + return self.priority(.low) | ||
67 | + } | ||
68 | +} |
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 ConstraintMakerRelatable { | ||
32 | + | ||
33 | + internal let description: ConstraintDescription | ||
34 | + | ||
35 | + internal init(_ description: ConstraintDescription) { | ||
36 | + self.description = description | ||
37 | + } | ||
38 | + | ||
39 | + internal func relatedTo(_ other: ConstraintRelatableTarget, relation: ConstraintRelation, file: String, line: UInt) -> ConstraintMakerEditable { | ||
40 | + let related: ConstraintItem | ||
41 | + let constant: ConstraintConstantTarget | ||
42 | + | ||
43 | + if let other = other as? ConstraintItem { | ||
44 | + guard other.attributes == ConstraintAttributes.none || | ||
45 | + other.attributes.layoutAttributes.count <= 1 || | ||
46 | + other.attributes.layoutAttributes == self.description.attributes.layoutAttributes || | ||
47 | + other.attributes == .edges && self.description.attributes == .margins || | ||
48 | + other.attributes == .margins && self.description.attributes == .edges || | ||
49 | + other.attributes == .directionalEdges && self.description.attributes == .directionalMargins || | ||
50 | + other.attributes == .directionalMargins && self.description.attributes == .directionalEdges else { | ||
51 | + fatalError("Cannot constraint to multiple non identical attributes. (\(file), \(line))"); | ||
52 | + } | ||
53 | + | ||
54 | + related = other | ||
55 | + constant = 0.0 | ||
56 | + } else if let other = other as? ConstraintView { | ||
57 | + related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) | ||
58 | + constant = 0.0 | ||
59 | + } else if let other = other as? ConstraintConstantTarget { | ||
60 | + related = ConstraintItem(target: nil, attributes: ConstraintAttributes.none) | ||
61 | + constant = other | ||
62 | + } else if #available(iOS 9.0, OSX 10.11, *), let other = other as? ConstraintLayoutGuide { | ||
63 | + related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) | ||
64 | + constant = 0.0 | ||
65 | + } else { | ||
66 | + fatalError("Invalid constraint. (\(file), \(line))") | ||
67 | + } | ||
68 | + | ||
69 | + let editable = ConstraintMakerEditable(self.description) | ||
70 | + editable.description.sourceLocation = (file, line) | ||
71 | + editable.description.relation = relation | ||
72 | + editable.description.related = related | ||
73 | + editable.description.constant = constant | ||
74 | + return editable | ||
75 | + } | ||
76 | + | ||
77 | + @discardableResult | ||
78 | + public func equalTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { | ||
79 | + return self.relatedTo(other, relation: .equal, file: file, line: line) | ||
80 | + } | ||
81 | + | ||
82 | + @discardableResult | ||
83 | + public func equalToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { | ||
84 | + guard let other = self.description.item.superview else { | ||
85 | + fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.") | ||
86 | + } | ||
87 | + return self.relatedTo(other, relation: .equal, file: file, line: line) | ||
88 | + } | ||
89 | + | ||
90 | + @discardableResult | ||
91 | + public func lessThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { | ||
92 | + return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) | ||
93 | + } | ||
94 | + | ||
95 | + @discardableResult | ||
96 | + public func lessThanOrEqualToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { | ||
97 | + guard let other = self.description.item.superview else { | ||
98 | + fatalError("Expected superview but found nil when attempting make constraint `lessThanOrEqualToSuperview`.") | ||
99 | + } | ||
100 | + return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) | ||
101 | + } | ||
102 | + | ||
103 | + @discardableResult | ||
104 | + public func greaterThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { | ||
105 | + return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) | ||
106 | + } | ||
107 | + | ||
108 | + @discardableResult | ||
109 | + public func greaterThanOrEqualToSuperview(_ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { | ||
110 | + guard let other = self.description.item.superview else { | ||
111 | + fatalError("Expected superview but found nil when attempting make constraint `greaterThanOrEqualToSuperview`.") | ||
112 | + } | ||
113 | + return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) | ||
114 | + } | ||
115 | +} |
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 ConstraintMultiplierTarget { | ||
32 | + | ||
33 | + var constraintMultiplierTargetValue: CGFloat { get } | ||
34 | + | ||
35 | +} | ||
36 | + | ||
37 | +extension Int: ConstraintMultiplierTarget { | ||
38 | + | ||
39 | + public var constraintMultiplierTargetValue: CGFloat { | ||
40 | + return CGFloat(self) | ||
41 | + } | ||
42 | + | ||
43 | +} | ||
44 | + | ||
45 | +extension UInt: ConstraintMultiplierTarget { | ||
46 | + | ||
47 | + public var constraintMultiplierTargetValue: CGFloat { | ||
48 | + return CGFloat(self) | ||
49 | + } | ||
50 | + | ||
51 | +} | ||
52 | + | ||
53 | +extension Float: ConstraintMultiplierTarget { | ||
54 | + | ||
55 | + public var constraintMultiplierTargetValue: CGFloat { | ||
56 | + return CGFloat(self) | ||
57 | + } | ||
58 | + | ||
59 | +} | ||
60 | + | ||
61 | +extension Double: ConstraintMultiplierTarget { | ||
62 | + | ||
63 | + public var constraintMultiplierTargetValue: CGFloat { | ||
64 | + return CGFloat(self) | ||
65 | + } | ||
66 | + | ||
67 | +} | ||
68 | + | ||
69 | +extension CGFloat: ConstraintMultiplierTarget { | ||
70 | + | ||
71 | + public var constraintMultiplierTargetValue: CGFloat { | ||
72 | + return self | ||
73 | + } | ||
74 | + | ||
75 | +} |
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 ConstraintOffsetTarget: ConstraintConstantTarget { | ||
32 | +} | ||
33 | + | ||
34 | +extension Int: ConstraintOffsetTarget { | ||
35 | +} | ||
36 | + | ||
37 | +extension UInt: ConstraintOffsetTarget { | ||
38 | +} | ||
39 | + | ||
40 | +extension Float: ConstraintOffsetTarget { | ||
41 | +} | ||
42 | + | ||
43 | +extension Double: ConstraintOffsetTarget { | ||
44 | +} | ||
45 | + | ||
46 | +extension CGFloat: ConstraintOffsetTarget { | ||
47 | +} | ||
48 | + | ||
49 | +extension ConstraintOffsetTarget { | ||
50 | + | ||
51 | + internal var constraintOffsetTargetValue: CGFloat { | ||
52 | + let offset: CGFloat | ||
53 | + if let amount = self as? Float { | ||
54 | + offset = CGFloat(amount) | ||
55 | + } else if let amount = self as? Double { | ||
56 | + offset = CGFloat(amount) | ||
57 | + } else if let amount = self as? CGFloat { | ||
58 | + offset = CGFloat(amount) | ||
59 | + } else if let amount = self as? Int { | ||
60 | + offset = CGFloat(amount) | ||
61 | + } else if let amount = self as? UInt { | ||
62 | + offset = CGFloat(amount) | ||
63 | + } else { | ||
64 | + offset = 0.0 | ||
65 | + } | ||
66 | + return offset | ||
67 | + } | ||
68 | + | ||
69 | +} |
Pods/SnapKit/Source/ConstraintPriority.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 struct ConstraintPriority : ExpressibleByFloatLiteral, Equatable, Strideable { | ||
31 | + public typealias FloatLiteralType = Float | ||
32 | + | ||
33 | + public let value: Float | ||
34 | + | ||
35 | + public init(floatLiteral value: Float) { | ||
36 | + self.value = value | ||
37 | + } | ||
38 | + | ||
39 | + public init(_ value: Float) { | ||
40 | + self.value = value | ||
41 | + } | ||
42 | + | ||
43 | + public static var required: ConstraintPriority { | ||
44 | + return 1000.0 | ||
45 | + } | ||
46 | + | ||
47 | + public static var high: ConstraintPriority { | ||
48 | + return 750.0 | ||
49 | + } | ||
50 | + | ||
51 | + public static var medium: ConstraintPriority { | ||
52 | + #if os(OSX) | ||
53 | + return 501.0 | ||
54 | + #else | ||
55 | + return 500.0 | ||
56 | + #endif | ||
57 | + | ||
58 | + } | ||
59 | + | ||
60 | + public static var low: ConstraintPriority { | ||
61 | + return 250.0 | ||
62 | + } | ||
63 | + | ||
64 | + public static func ==(lhs: ConstraintPriority, rhs: ConstraintPriority) -> Bool { | ||
65 | + return lhs.value == rhs.value | ||
66 | + } | ||
67 | + | ||
68 | + // MARK: Strideable | ||
69 | + | ||
70 | + public func advanced(by n: FloatLiteralType) -> ConstraintPriority { | ||
71 | + return ConstraintPriority(floatLiteral: value + n) | ||
72 | + } | ||
73 | + | ||
74 | + public func distance(to other: ConstraintPriority) -> FloatLiteralType { | ||
75 | + return other.value - value | ||
76 | + } | ||
77 | +} |
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 ConstraintPriorityTarget { | ||
32 | + | ||
33 | + var constraintPriorityTargetValue: Float { get } | ||
34 | + | ||
35 | +} | ||
36 | + | ||
37 | +extension Int: ConstraintPriorityTarget { | ||
38 | + | ||
39 | + public var constraintPriorityTargetValue: Float { | ||
40 | + return Float(self) | ||
41 | + } | ||
42 | + | ||
43 | +} | ||
44 | + | ||
45 | +extension UInt: ConstraintPriorityTarget { | ||
46 | + | ||
47 | + public var constraintPriorityTargetValue: Float { | ||
48 | + return Float(self) | ||
49 | + } | ||
50 | + | ||
51 | +} | ||
52 | + | ||
53 | +extension Float: ConstraintPriorityTarget { | ||
54 | + | ||
55 | + public var constraintPriorityTargetValue: Float { | ||
56 | + return self | ||
57 | + } | ||
58 | + | ||
59 | +} | ||
60 | + | ||
61 | +extension Double: ConstraintPriorityTarget { | ||
62 | + | ||
63 | + public var constraintPriorityTargetValue: Float { | ||
64 | + return Float(self) | ||
65 | + } | ||
66 | + | ||
67 | +} | ||
68 | + | ||
69 | +extension CGFloat: ConstraintPriorityTarget { | ||
70 | + | ||
71 | + public var constraintPriorityTargetValue: Float { | ||
72 | + return Float(self) | ||
73 | + } | ||
74 | + | ||
75 | +} | ||
76 | + | ||
77 | +#if os(iOS) || os(tvOS) | ||
78 | +extension UILayoutPriority: ConstraintPriorityTarget { | ||
79 | + | ||
80 | + public var constraintPriorityTargetValue: Float { | ||
81 | + return self.rawValue | ||
82 | + } | ||
83 | + | ||
84 | +} | ||
85 | +#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 ConstraintRelatableTarget { | ||
32 | +} | ||
33 | + | ||
34 | +extension Int: ConstraintRelatableTarget { | ||
35 | +} | ||
36 | + | ||
37 | +extension UInt: ConstraintRelatableTarget { | ||
38 | +} | ||
39 | + | ||
40 | +extension Float: ConstraintRelatableTarget { | ||
41 | +} | ||
42 | + | ||
43 | +extension Double: ConstraintRelatableTarget { | ||
44 | +} | ||
45 | + | ||
46 | +extension CGFloat: ConstraintRelatableTarget { | ||
47 | +} | ||
48 | + | ||
49 | +extension CGSize: ConstraintRelatableTarget { | ||
50 | +} | ||
51 | + | ||
52 | +extension CGPoint: ConstraintRelatableTarget { | ||
53 | +} | ||
54 | + | ||
55 | +extension ConstraintInsets: ConstraintRelatableTarget { | ||
56 | +} | ||
57 | + | ||
58 | +#if os(iOS) || os(tvOS) | ||
59 | +@available(iOS 11.0, tvOS 11.0, *) | ||
60 | +extension ConstraintDirectionalInsets: ConstraintRelatableTarget { | ||
61 | +} | ||
62 | +#endif | ||
63 | + | ||
64 | +extension ConstraintItem: ConstraintRelatableTarget { | ||
65 | +} | ||
66 | + | ||
67 | +extension ConstraintView: ConstraintRelatableTarget { | ||
68 | +} | ||
69 | + | ||
70 | +@available(iOS 9.0, OSX 10.11, *) | ||
71 | +extension ConstraintLayoutGuide: ConstraintRelatableTarget { | ||
72 | +} |
Pods/SnapKit/Source/ConstraintRelation.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 | +internal enum ConstraintRelation : Int { | ||
32 | + case equal = 1 | ||
33 | + case lessThanOrEqual | ||
34 | + case greaterThanOrEqual | ||
35 | + | ||
36 | + internal var layoutRelation: LayoutRelation { | ||
37 | + get { | ||
38 | + switch(self) { | ||
39 | + case .equal: | ||
40 | + return .equal | ||
41 | + case .lessThanOrEqual: | ||
42 | + return .lessThanOrEqual | ||
43 | + case .greaterThanOrEqual: | ||
44 | + return .greaterThanOrEqual | ||
45 | + } | ||
46 | + } | ||
47 | + } | ||
48 | +} |
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 extension ConstraintView { | ||
32 | + | ||
33 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
34 | + var snp_left: ConstraintItem { return self.snp.left } | ||
35 | + | ||
36 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
37 | + var snp_top: ConstraintItem { return self.snp.top } | ||
38 | + | ||
39 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
40 | + var snp_right: ConstraintItem { return self.snp.right } | ||
41 | + | ||
42 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
43 | + var snp_bottom: ConstraintItem { return self.snp.bottom } | ||
44 | + | ||
45 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
46 | + var snp_leading: ConstraintItem { return self.snp.leading } | ||
47 | + | ||
48 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
49 | + var snp_trailing: ConstraintItem { return self.snp.trailing } | ||
50 | + | ||
51 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
52 | + var snp_width: ConstraintItem { return self.snp.width } | ||
53 | + | ||
54 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
55 | + var snp_height: ConstraintItem { return self.snp.height } | ||
56 | + | ||
57 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
58 | + var snp_centerX: ConstraintItem { return self.snp.centerX } | ||
59 | + | ||
60 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
61 | + var snp_centerY: ConstraintItem { return self.snp.centerY } | ||
62 | + | ||
63 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
64 | + var snp_baseline: ConstraintItem { return self.snp.baseline } | ||
65 | + | ||
66 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
67 | + @available(iOS 8.0, OSX 10.11, *) | ||
68 | + var snp_lastBaseline: ConstraintItem { return self.snp.lastBaseline } | ||
69 | + | ||
70 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
71 | + @available(iOS 8.0, OSX 10.11, *) | ||
72 | + var snp_firstBaseline: ConstraintItem { return self.snp.firstBaseline } | ||
73 | + | ||
74 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
75 | + @available(iOS 8.0, *) | ||
76 | + var snp_leftMargin: ConstraintItem { return self.snp.leftMargin } | ||
77 | + | ||
78 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
79 | + @available(iOS 8.0, *) | ||
80 | + var snp_topMargin: ConstraintItem { return self.snp.topMargin } | ||
81 | + | ||
82 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
83 | + @available(iOS 8.0, *) | ||
84 | + var snp_rightMargin: ConstraintItem { return self.snp.rightMargin } | ||
85 | + | ||
86 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
87 | + @available(iOS 8.0, *) | ||
88 | + var snp_bottomMargin: ConstraintItem { return self.snp.bottomMargin } | ||
89 | + | ||
90 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
91 | + @available(iOS 8.0, *) | ||
92 | + var snp_leadingMargin: ConstraintItem { return self.snp.leadingMargin } | ||
93 | + | ||
94 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
95 | + @available(iOS 8.0, *) | ||
96 | + var snp_trailingMargin: ConstraintItem { return self.snp.trailingMargin } | ||
97 | + | ||
98 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
99 | + @available(iOS 8.0, *) | ||
100 | + var snp_centerXWithinMargins: ConstraintItem { return self.snp.centerXWithinMargins } | ||
101 | + | ||
102 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
103 | + @available(iOS 8.0, *) | ||
104 | + var snp_centerYWithinMargins: ConstraintItem { return self.snp.centerYWithinMargins } | ||
105 | + | ||
106 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
107 | + var snp_edges: ConstraintItem { return self.snp.edges } | ||
108 | + | ||
109 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
110 | + var snp_size: ConstraintItem { return self.snp.size } | ||
111 | + | ||
112 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
113 | + var snp_center: ConstraintItem { return self.snp.center } | ||
114 | + | ||
115 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
116 | + @available(iOS 8.0, *) | ||
117 | + var snp_margins: ConstraintItem { return self.snp.margins } | ||
118 | + | ||
119 | + @available(iOS, deprecated, message:"Use newer snp.* syntax.") | ||
120 | + @available(iOS 8.0, *) | ||
121 | + var snp_centerWithinMargins: ConstraintItem { return self.snp.centerWithinMargins } | ||
122 | + | ||
123 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
124 | + func snp_prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { | ||
125 | + return self.snp.prepareConstraints(closure) | ||
126 | + } | ||
127 | + | ||
128 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
129 | + func snp_makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
130 | + self.snp.makeConstraints(closure) | ||
131 | + } | ||
132 | + | ||
133 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
134 | + func snp_remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
135 | + self.snp.remakeConstraints(closure) | ||
136 | + } | ||
137 | + | ||
138 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
139 | + func snp_updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
140 | + self.snp.updateConstraints(closure) | ||
141 | + } | ||
142 | + | ||
143 | + @available(*, deprecated, message:"Use newer snp.* syntax.") | ||
144 | + func snp_removeConstraints() { | ||
145 | + self.snp.removeConstraints() | ||
146 | + } | ||
147 | + | ||
148 | + var snp: ConstraintViewDSL { | ||
149 | + return ConstraintViewDSL(view: self) | ||
150 | + } | ||
151 | + | ||
152 | +} |
Pods/SnapKit/Source/ConstraintView.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 ConstraintView = UIView | ||
33 | +#else | ||
34 | + public typealias ConstraintView = NSView | ||
35 | +#endif |
Pods/SnapKit/Source/ConstraintViewDSL.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 struct ConstraintViewDSL: ConstraintAttributesDSL { | ||
32 | + | ||
33 | + @discardableResult | ||
34 | + public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { | ||
35 | + return ConstraintMaker.prepareConstraints(item: self.view, closure: closure) | ||
36 | + } | ||
37 | + | ||
38 | + public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
39 | + ConstraintMaker.makeConstraints(item: self.view, closure: closure) | ||
40 | + } | ||
41 | + | ||
42 | + public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
43 | + ConstraintMaker.remakeConstraints(item: self.view, closure: closure) | ||
44 | + } | ||
45 | + | ||
46 | + public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { | ||
47 | + ConstraintMaker.updateConstraints(item: self.view, closure: closure) | ||
48 | + } | ||
49 | + | ||
50 | + public func removeConstraints() { | ||
51 | + ConstraintMaker.removeConstraints(item: self.view) | ||
52 | + } | ||
53 | + | ||
54 | + public var contentHuggingHorizontalPriority: Float { | ||
55 | + get { | ||
56 | + return self.view.contentHuggingPriority(for: .horizontal).rawValue | ||
57 | + } | ||
58 | + nonmutating set { | ||
59 | + self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .horizontal) | ||
60 | + } | ||
61 | + } | ||
62 | + | ||
63 | + public var contentHuggingVerticalPriority: Float { | ||
64 | + get { | ||
65 | + return self.view.contentHuggingPriority(for: .vertical).rawValue | ||
66 | + } | ||
67 | + nonmutating set { | ||
68 | + self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .vertical) | ||
69 | + } | ||
70 | + } | ||
71 | + | ||
72 | + public var contentCompressionResistanceHorizontalPriority: Float { | ||
73 | + get { | ||
74 | + return self.view.contentCompressionResistancePriority(for: .horizontal).rawValue | ||
75 | + } | ||
76 | + nonmutating set { | ||
77 | + self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .horizontal) | ||
78 | + } | ||
79 | + } | ||
80 | + | ||
81 | + public var contentCompressionResistanceVerticalPriority: Float { | ||
82 | + get { | ||
83 | + return self.view.contentCompressionResistancePriority(for: .vertical).rawValue | ||
84 | + } | ||
85 | + nonmutating set { | ||
86 | + self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .vertical) | ||
87 | + } | ||
88 | + } | ||
89 | + | ||
90 | + public var target: AnyObject? { | ||
91 | + return self.view | ||
92 | + } | ||
93 | + | ||
94 | + internal let view: ConstraintView | ||
95 | + | ||
96 | + internal init(view: ConstraintView) { | ||
97 | + self.view = view | ||
98 | + | ||
99 | + } | ||
100 | + | ||
101 | +} |
Pods/SnapKit/Source/Debugging.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 extension LayoutConstraint { | ||
31 | + | ||
32 | + override var description: String { | ||
33 | + var description = "<" | ||
34 | + | ||
35 | + description += descriptionForObject(self) | ||
36 | + | ||
37 | + if let firstItem = conditionalOptional(from: self.firstItem) { | ||
38 | + description += " \(descriptionForObject(firstItem))" | ||
39 | + } | ||
40 | + | ||
41 | + if self.firstAttribute != .notAnAttribute { | ||
42 | + description += ".\(descriptionForAttribute(self.firstAttribute))" | ||
43 | + } | ||
44 | + | ||
45 | + description += " \(descriptionForRelation(self.relation))" | ||
46 | + | ||
47 | + if let secondItem = self.secondItem { | ||
48 | + description += " \(descriptionForObject(secondItem))" | ||
49 | + } | ||
50 | + | ||
51 | + if self.secondAttribute != .notAnAttribute { | ||
52 | + description += ".\(descriptionForAttribute(self.secondAttribute))" | ||
53 | + } | ||
54 | + | ||
55 | + if self.multiplier != 1.0 { | ||
56 | + description += " * \(self.multiplier)" | ||
57 | + } | ||
58 | + | ||
59 | + if self.secondAttribute == .notAnAttribute { | ||
60 | + description += " \(self.constant)" | ||
61 | + } else { | ||
62 | + if self.constant > 0.0 { | ||
63 | + description += " + \(self.constant)" | ||
64 | + } else if self.constant < 0.0 { | ||
65 | + description += " - \(abs(self.constant))" | ||
66 | + } | ||
67 | + } | ||
68 | + | ||
69 | + if self.priority.rawValue != 1000.0 { | ||
70 | + description += " ^\(self.priority)" | ||
71 | + } | ||
72 | + | ||
73 | + description += ">" | ||
74 | + | ||
75 | + return description | ||
76 | + } | ||
77 | + | ||
78 | +} | ||
79 | + | ||
80 | +private func descriptionForRelation(_ relation: LayoutRelation) -> String { | ||
81 | + switch relation { | ||
82 | + case .equal: return "==" | ||
83 | + case .greaterThanOrEqual: return ">=" | ||
84 | + case .lessThanOrEqual: return "<=" | ||
85 | + #if swift(>=5.0) | ||
86 | + @unknown default: return "unknown" | ||
87 | + #endif | ||
88 | + } | ||
89 | +} | ||
90 | + | ||
91 | +private func descriptionForAttribute(_ attribute: LayoutAttribute) -> String { | ||
92 | + #if os(iOS) || os(tvOS) | ||
93 | + switch attribute { | ||
94 | + case .notAnAttribute: return "notAnAttribute" | ||
95 | + case .top: return "top" | ||
96 | + case .left: return "left" | ||
97 | + case .bottom: return "bottom" | ||
98 | + case .right: return "right" | ||
99 | + case .leading: return "leading" | ||
100 | + case .trailing: return "trailing" | ||
101 | + case .width: return "width" | ||
102 | + case .height: return "height" | ||
103 | + case .centerX: return "centerX" | ||
104 | + case .centerY: return "centerY" | ||
105 | + case .lastBaseline: return "lastBaseline" | ||
106 | + case .firstBaseline: return "firstBaseline" | ||
107 | + case .topMargin: return "topMargin" | ||
108 | + case .leftMargin: return "leftMargin" | ||
109 | + case .bottomMargin: return "bottomMargin" | ||
110 | + case .rightMargin: return "rightMargin" | ||
111 | + case .leadingMargin: return "leadingMargin" | ||
112 | + case .trailingMargin: return "trailingMargin" | ||
113 | + case .centerXWithinMargins: return "centerXWithinMargins" | ||
114 | + case .centerYWithinMargins: return "centerYWithinMargins" | ||
115 | + #if swift(>=5.0) | ||
116 | + @unknown default: return "unknown" | ||
117 | + #endif | ||
118 | + } | ||
119 | + #else | ||
120 | + switch attribute { | ||
121 | + case .notAnAttribute: return "notAnAttribute" | ||
122 | + case .top: return "top" | ||
123 | + case .left: return "left" | ||
124 | + case .bottom: return "bottom" | ||
125 | + case .right: return "right" | ||
126 | + case .leading: return "leading" | ||
127 | + case .trailing: return "trailing" | ||
128 | + case .width: return "width" | ||
129 | + case .height: return "height" | ||
130 | + case .centerX: return "centerX" | ||
131 | + case .centerY: return "centerY" | ||
132 | + case .lastBaseline: return "lastBaseline" | ||
133 | + case .firstBaseline: return "firstBaseline" | ||
134 | + #if swift(>=5.0) | ||
135 | + @unknown default: return "unknown" | ||
136 | + #endif | ||
137 | + } | ||
138 | + #endif | ||
139 | +} | ||
140 | + | ||
141 | +private func conditionalOptional<T>(from object: Optional<T>) -> Optional<T> { | ||
142 | + return object | ||
143 | +} | ||
144 | + | ||
145 | +private func conditionalOptional<T>(from object: T) -> Optional<T> { | ||
146 | + return Optional.some(object) | ||
147 | +} | ||
148 | + | ||
149 | +private func descriptionForObject(_ object: AnyObject) -> String { | ||
150 | + let pointerDescription = String(format: "%p", UInt(bitPattern: ObjectIdentifier(object))) | ||
151 | + var desc = "" | ||
152 | + | ||
153 | + desc += type(of: object).description() | ||
154 | + | ||
155 | + if let object = object as? ConstraintView { | ||
156 | + desc += ":\(object.snp.label() ?? pointerDescription)" | ||
157 | + } else if let object = object as? LayoutConstraint { | ||
158 | + desc += ":\(object.label ?? pointerDescription)" | ||
159 | + } else { | ||
160 | + desc += ":\(pointerDescription)" | ||
161 | + } | ||
162 | + | ||
163 | + if let object = object as? LayoutConstraint, let file = object.constraint?.sourceLocation.0, let line = object.constraint?.sourceLocation.1 { | ||
164 | + desc += "@\((file as NSString).lastPathComponent)#\(line)" | ||
165 | + } | ||
166 | + | ||
167 | + desc += "" | ||
168 | + return desc | ||
169 | +} |
Pods/SnapKit/Source/LayoutConstraint.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 class LayoutConstraint : NSLayoutConstraint { | ||
32 | + | ||
33 | + public var label: String? { | ||
34 | + get { | ||
35 | + return self.identifier | ||
36 | + } | ||
37 | + set { | ||
38 | + self.identifier = newValue | ||
39 | + } | ||
40 | + } | ||
41 | + | ||
42 | + internal weak var constraint: Constraint? = nil | ||
43 | + | ||
44 | +} | ||
45 | + | ||
46 | +internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { | ||
47 | + // If firstItem or secondItem on either constraint has a dangling pointer | ||
48 | + // this comparison can cause a crash. The solution for this is to ensure | ||
49 | + // your layout code hold strong references to things like Views, LayoutGuides | ||
50 | + // and LayoutAnchors as SnapKit will not keep strong references to any of these. | ||
51 | + guard lhs.firstAttribute == rhs.firstAttribute && | ||
52 | + lhs.secondAttribute == rhs.secondAttribute && | ||
53 | + lhs.relation == rhs.relation && | ||
54 | + lhs.priority == rhs.priority && | ||
55 | + lhs.multiplier == rhs.multiplier && | ||
56 | + lhs.secondItem === rhs.secondItem && | ||
57 | + lhs.firstItem === rhs.firstItem else { | ||
58 | + return false | ||
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 | +#else | ||
27 | + import AppKit | ||
28 | +#endif | ||
29 | + | ||
30 | + | ||
31 | +public protocol LayoutConstraintItem: class { | ||
32 | +} | ||
33 | + | ||
34 | +@available(iOS 9.0, OSX 10.11, *) | ||
35 | +extension ConstraintLayoutGuide : LayoutConstraintItem { | ||
36 | +} | ||
37 | + | ||
38 | +extension ConstraintView : LayoutConstraintItem { | ||
39 | +} | ||
40 | + | ||
41 | + | ||
42 | +extension LayoutConstraintItem { | ||
43 | + | ||
44 | + internal func prepare() { | ||
45 | + if let view = self as? ConstraintView { | ||
46 | + view.translatesAutoresizingMaskIntoConstraints = false | ||
47 | + } | ||
48 | + } | ||
49 | + | ||
50 | + internal var superview: ConstraintView? { | ||
51 | + if let view = self as? ConstraintView { | ||
52 | + return view.superview | ||
53 | + } | ||
54 | + | ||
55 | + if #available(iOS 9.0, OSX 10.11, *), let guide = self as? ConstraintLayoutGuide { | ||
56 | + return guide.owningView | ||
57 | + } | ||
58 | + | ||
59 | + return nil | ||
60 | + } | ||
61 | + internal var constraints: [Constraint] { | ||
62 | + return self.constraintsSet.allObjects as! [Constraint] | ||
63 | + } | ||
64 | + | ||
65 | + internal func add(constraints: [Constraint]) { | ||
66 | + let constraintsSet = self.constraintsSet | ||
67 | + for constraint in constraints { | ||
68 | + constraintsSet.add(constraint) | ||
69 | + } | ||
70 | + } | ||
71 | + | ||
72 | + internal func remove(constraints: [Constraint]) { | ||
73 | + let constraintsSet = self.constraintsSet | ||
74 | + for constraint in constraints { | ||
75 | + constraintsSet.remove(constraint) | ||
76 | + } | ||
77 | + } | ||
78 | + | ||
79 | + private var constraintsSet: NSMutableSet { | ||
80 | + let constraintsSet: NSMutableSet | ||
81 | + | ||
82 | + if let existing = objc_getAssociatedObject(self, &constraintsKey) as? NSMutableSet { | ||
83 | + constraintsSet = existing | ||
84 | + } else { | ||
85 | + constraintsSet = NSMutableSet() | ||
86 | + objc_setAssociatedObject(self, &constraintsKey, constraintsSet, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
87 | + } | ||
88 | + return constraintsSet | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | +} | ||
93 | +private var constraintsKey: UInt8 = 0 |
Pods/SnapKit/Source/Typealiases.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 | +import Foundation | ||
25 | + | ||
26 | +#if os(iOS) || os(tvOS) | ||
27 | + import UIKit | ||
28 | +#if swift(>=4.2) | ||
29 | + typealias LayoutRelation = NSLayoutConstraint.Relation | ||
30 | + typealias LayoutAttribute = NSLayoutConstraint.Attribute | ||
31 | +#else | ||
32 | + typealias LayoutRelation = NSLayoutRelation | ||
33 | + typealias LayoutAttribute = NSLayoutAttribute | ||
34 | +#endif | ||
35 | + typealias LayoutPriority = UILayoutPriority | ||
36 | +#else | ||
37 | + import AppKit | ||
38 | + typealias LayoutRelation = NSLayoutConstraint.Relation | ||
39 | + typealias LayoutAttribute = NSLayoutConstraint.Attribute | ||
40 | + typealias LayoutPriority = NSLayoutConstraint.Priority | ||
41 | +#endif | ||
42 | + |
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 8.0, *) | ||
30 | +public extension ConstraintLayoutSupport { | ||
31 | + | ||
32 | + var snp: ConstraintLayoutSupportDSL { | ||
33 | + return ConstraintLayoutSupportDSL(support: self) | ||
34 | + } | ||
35 | + | ||
36 | +} |
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>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>${EXECUTABLE_NAME}</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>${PRODUCT_NAME}</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>FMWK</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0.0</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>${CURRENT_PROJECT_VERSION}</string> | ||
23 | + <key>NSPrincipalClass</key> | ||
24 | + <string></string> | ||
25 | +</dict> | ||
26 | +</plist> |
Pods/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-acknowledgements.markdown
0 → 100644
1 | +# Acknowledgements | ||
2 | +This application makes use of the following third party libraries: | ||
3 | + | ||
4 | +## SnapKit | ||
5 | + | ||
6 | +Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
7 | + | ||
8 | +Permission is hereby granted, free of charge, to any person obtaining a copy | ||
9 | +of this software and associated documentation files (the "Software"), to deal | ||
10 | +in the Software without restriction, including without limitation the rights | ||
11 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
12 | +copies of the Software, and to permit persons to whom the Software is | ||
13 | +furnished to do so, subject to the following conditions: | ||
14 | + | ||
15 | +The above copyright notice and this permission notice shall be included in | ||
16 | +all copies or substantial portions of the Software. | ||
17 | + | ||
18 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
19 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
20 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
21 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
22 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
23 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
24 | +THE SOFTWARE. | ||
25 | + | ||
26 | +Generated by CocoaPods - https://cocoapods.org |
Pods/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship-acknowledgements.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>PreferenceSpecifiers</key> | ||
6 | + <array> | ||
7 | + <dict> | ||
8 | + <key>FooterText</key> | ||
9 | + <string>This application makes use of the following third party libraries:</string> | ||
10 | + <key>Title</key> | ||
11 | + <string>Acknowledgements</string> | ||
12 | + <key>Type</key> | ||
13 | + <string>PSGroupSpecifier</string> | ||
14 | + </dict> | ||
15 | + <dict> | ||
16 | + <key>FooterText</key> | ||
17 | + <string>Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit | ||
18 | + | ||
19 | +Permission is hereby granted, free of charge, to any person obtaining a copy | ||
20 | +of this software and associated documentation files (the "Software"), to deal | ||
21 | +in the Software without restriction, including without limitation the rights | ||
22 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
23 | +copies of the Software, and to permit persons to whom the Software is | ||
24 | +furnished to do so, subject to the following conditions: | ||
25 | + | ||
26 | +The above copyright notice and this permission notice shall be included in | ||
27 | +all copies or substantial portions of the Software. | ||
28 | + | ||
29 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
30 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
31 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
32 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
33 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
34 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
35 | +THE SOFTWARE. | ||
36 | +</string> | ||
37 | + <key>License</key> | ||
38 | + <string>MIT</string> | ||
39 | + <key>Title</key> | ||
40 | + <string>SnapKit</string> | ||
41 | + <key>Type</key> | ||
42 | + <string>PSGroupSpecifier</string> | ||
43 | + </dict> | ||
44 | + <dict> | ||
45 | + <key>FooterText</key> | ||
46 | + <string>Generated by CocoaPods - https://cocoapods.org</string> | ||
47 | + <key>Title</key> | ||
48 | + <string></string> | ||
49 | + <key>Type</key> | ||
50 | + <string>PSGroupSpecifier</string> | ||
51 | + </dict> | ||
52 | + </array> | ||
53 | + <key>StringsTable</key> | ||
54 | + <string>Acknowledgements</string> | ||
55 | + <key>Title</key> | ||
56 | + <string>Acknowledgements</string> | ||
57 | +</dict> | ||
58 | +</plist> |
1 | +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework |
1 | +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework |
1 | +#!/bin/sh | ||
2 | +set -e | ||
3 | +set -u | ||
4 | +set -o pipefail | ||
5 | + | ||
6 | +function on_error { | ||
7 | + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" | ||
8 | +} | ||
9 | +trap 'on_error $LINENO' ERR | ||
10 | + | ||
11 | +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then | ||
12 | + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy | ||
13 | + # frameworks to, so exit 0 (signalling the script phase was successful). | ||
14 | + exit 0 | ||
15 | +fi | ||
16 | + | ||
17 | +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" | ||
18 | +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" | ||
19 | + | ||
20 | +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" | ||
21 | +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" | ||
22 | +BCSYMBOLMAP_DIR="BCSymbolMaps" | ||
23 | + | ||
24 | + | ||
25 | +# This protects against multiple targets copying the same framework dependency at the same time. The solution | ||
26 | +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html | ||
27 | +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") | ||
28 | + | ||
29 | +# Copies and strips a vendored framework | ||
30 | +install_framework() | ||
31 | +{ | ||
32 | + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then | ||
33 | + local source="${BUILT_PRODUCTS_DIR}/$1" | ||
34 | + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then | ||
35 | + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" | ||
36 | + elif [ -r "$1" ]; then | ||
37 | + local source="$1" | ||
38 | + fi | ||
39 | + | ||
40 | + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" | ||
41 | + | ||
42 | + if [ -L "${source}" ]; then | ||
43 | + echo "Symlinked..." | ||
44 | + source="$(readlink "${source}")" | ||
45 | + fi | ||
46 | + | ||
47 | + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then | ||
48 | + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied | ||
49 | + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do | ||
50 | + echo "Installing $f" | ||
51 | + install_bcsymbolmap "$f" "$destination" | ||
52 | + rm "$f" | ||
53 | + done | ||
54 | + rmdir "${source}/${BCSYMBOLMAP_DIR}" | ||
55 | + fi | ||
56 | + | ||
57 | + # Use filter instead of exclude so missing patterns don't throw errors. | ||
58 | + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" | ||
59 | + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" | ||
60 | + | ||
61 | + local basename | ||
62 | + basename="$(basename -s .framework "$1")" | ||
63 | + binary="${destination}/${basename}.framework/${basename}" | ||
64 | + | ||
65 | + if ! [ -r "$binary" ]; then | ||
66 | + binary="${destination}/${basename}" | ||
67 | + elif [ -L "${binary}" ]; then | ||
68 | + echo "Destination binary is symlinked..." | ||
69 | + dirname="$(dirname "${binary}")" | ||
70 | + binary="${dirname}/$(readlink "${binary}")" | ||
71 | + fi | ||
72 | + | ||
73 | + # Strip invalid architectures so "fat" simulator / device frameworks work on device | ||
74 | + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then | ||
75 | + strip_invalid_archs "$binary" | ||
76 | + fi | ||
77 | + | ||
78 | + # Resign the code if required by the build settings to avoid unstable apps | ||
79 | + code_sign_if_enabled "${destination}/$(basename "$1")" | ||
80 | + | ||
81 | + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. | ||
82 | + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then | ||
83 | + local swift_runtime_libs | ||
84 | + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) | ||
85 | + for lib in $swift_runtime_libs; do | ||
86 | + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" | ||
87 | + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" | ||
88 | + code_sign_if_enabled "${destination}/${lib}" | ||
89 | + done | ||
90 | + fi | ||
91 | +} | ||
92 | +# Copies and strips a vendored dSYM | ||
93 | +install_dsym() { | ||
94 | + local source="$1" | ||
95 | + warn_missing_arch=${2:-true} | ||
96 | + if [ -r "$source" ]; then | ||
97 | + # Copy the dSYM into the targets temp dir. | ||
98 | + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" | ||
99 | + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" | ||
100 | + | ||
101 | + local basename | ||
102 | + basename="$(basename -s .dSYM "$source")" | ||
103 | + binary_name="$(ls "$source/Contents/Resources/DWARF")" | ||
104 | + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" | ||
105 | + | ||
106 | + # Strip invalid architectures from the dSYM. | ||
107 | + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then | ||
108 | + strip_invalid_archs "$binary" "$warn_missing_arch" | ||
109 | + fi | ||
110 | + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then | ||
111 | + # Move the stripped file into its final destination. | ||
112 | + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" | ||
113 | + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" | ||
114 | + else | ||
115 | + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. | ||
116 | + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" | ||
117 | + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" | ||
118 | + fi | ||
119 | + fi | ||
120 | +} | ||
121 | + | ||
122 | +# Used as a return value for each invocation of `strip_invalid_archs` function. | ||
123 | +STRIP_BINARY_RETVAL=0 | ||
124 | + | ||
125 | +# Strip invalid architectures | ||
126 | +strip_invalid_archs() { | ||
127 | + binary="$1" | ||
128 | + warn_missing_arch=${2:-true} | ||
129 | + # Get architectures for current target binary | ||
130 | + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" | ||
131 | + # Intersect them with the architectures we are building for | ||
132 | + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" | ||
133 | + # If there are no archs supported by this binary then warn the user | ||
134 | + if [[ -z "$intersected_archs" ]]; then | ||
135 | + if [[ "$warn_missing_arch" == "true" ]]; then | ||
136 | + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." | ||
137 | + fi | ||
138 | + STRIP_BINARY_RETVAL=1 | ||
139 | + return | ||
140 | + fi | ||
141 | + stripped="" | ||
142 | + for arch in $binary_archs; do | ||
143 | + if ! [[ "${ARCHS}" == *"$arch"* ]]; then | ||
144 | + # Strip non-valid architectures in-place | ||
145 | + lipo -remove "$arch" -output "$binary" "$binary" | ||
146 | + stripped="$stripped $arch" | ||
147 | + fi | ||
148 | + done | ||
149 | + if [[ "$stripped" ]]; then | ||
150 | + echo "Stripped $binary of architectures:$stripped" | ||
151 | + fi | ||
152 | + STRIP_BINARY_RETVAL=0 | ||
153 | +} | ||
154 | + | ||
155 | +# Copies the bcsymbolmap files of a vendored framework | ||
156 | +install_bcsymbolmap() { | ||
157 | + local bcsymbolmap_path="$1" | ||
158 | + local destination="${BUILT_PRODUCTS_DIR}" | ||
159 | + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" | ||
160 | + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" | ||
161 | +} | ||
162 | + | ||
163 | +# Signs a framework with the provided identity | ||
164 | +code_sign_if_enabled() { | ||
165 | + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then | ||
166 | + # Use the current code_sign_identity | ||
167 | + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" | ||
168 | + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" | ||
169 | + | ||
170 | + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then | ||
171 | + code_sign_cmd="$code_sign_cmd &" | ||
172 | + fi | ||
173 | + echo "$code_sign_cmd" | ||
174 | + eval "$code_sign_cmd" | ||
175 | + fi | ||
176 | +} | ||
177 | + | ||
178 | +if [[ "$CONFIGURATION" == "Debug" ]]; then | ||
179 | + install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" | ||
180 | +fi | ||
181 | +if [[ "$CONFIGURATION" == "Release" ]]; then | ||
182 | + install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" | ||
183 | +fi | ||
184 | +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then | ||
185 | + wait | ||
186 | +fi |
1 | +#ifdef __OBJC__ | ||
2 | +#import <UIKit/UIKit.h> | ||
3 | +#else | ||
4 | +#ifndef FOUNDATION_EXPORT | ||
5 | +#if defined(__cplusplus) | ||
6 | +#define FOUNDATION_EXPORT extern "C" | ||
7 | +#else | ||
8 | +#define FOUNDATION_EXPORT extern | ||
9 | +#endif | ||
10 | +#endif | ||
11 | +#endif | ||
12 | + | ||
13 | + | ||
14 | +FOUNDATION_EXPORT double Pods_InterQR_InternshipVersionNumber; | ||
15 | +FOUNDATION_EXPORT const unsigned char Pods_InterQR_InternshipVersionString[]; | ||
16 | + |
1 | +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES | ||
2 | +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO | ||
3 | +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" | ||
4 | +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 | ||
5 | +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" | ||
6 | +LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' | ||
7 | +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift | ||
8 | +OTHER_LDFLAGS = $(inherited) -framework "SnapKit" | ||
9 | +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS | ||
10 | +PODS_BUILD_DIR = ${BUILD_DIR} | ||
11 | +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) | ||
12 | +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. | ||
13 | +PODS_ROOT = ${SRCROOT}/Pods | ||
14 | +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates | ||
15 | +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
Pods/Target Support Files/Pods-InterQR-Internship/Pods-InterQR-Internship.release.xcconfig
0 → 100644
1 | +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES | ||
2 | +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO | ||
3 | +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" | ||
4 | +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 | ||
5 | +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" | ||
6 | +LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' | ||
7 | +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift | ||
8 | +OTHER_LDFLAGS = $(inherited) -framework "SnapKit" | ||
9 | +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS | ||
10 | +PODS_BUILD_DIR = ${BUILD_DIR} | ||
11 | +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) | ||
12 | +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. | ||
13 | +PODS_ROOT = ${SRCROOT}/Pods | ||
14 | +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates | ||
15 | +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
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>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>${EXECUTABLE_NAME}</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>${PRODUCT_NAME}</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>FMWK</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>5.0.1</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>${CURRENT_PROJECT_VERSION}</string> | ||
23 | + <key>NSPrincipalClass</key> | ||
24 | + <string></string> | ||
25 | +</dict> | ||
26 | +</plist> |
1 | +#ifdef __OBJC__ | ||
2 | +#import <UIKit/UIKit.h> | ||
3 | +#else | ||
4 | +#ifndef FOUNDATION_EXPORT | ||
5 | +#if defined(__cplusplus) | ||
6 | +#define FOUNDATION_EXPORT extern "C" | ||
7 | +#else | ||
8 | +#define FOUNDATION_EXPORT extern | ||
9 | +#endif | ||
10 | +#endif | ||
11 | +#endif | ||
12 | + | ||
13 | + | ||
14 | +FOUNDATION_EXPORT double SnapKitVersionNumber; | ||
15 | +FOUNDATION_EXPORT const unsigned char SnapKitVersionString[]; | ||
16 | + |
1 | +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO | ||
2 | +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit | ||
3 | +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 | ||
4 | +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift | ||
5 | +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS | ||
6 | +PODS_BUILD_DIR = ${BUILD_DIR} | ||
7 | +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) | ||
8 | +PODS_ROOT = ${SRCROOT} | ||
9 | +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit | ||
10 | +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates | ||
11 | +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} | ||
12 | +SKIP_INSTALL = YES | ||
13 | +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
1 | +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO | ||
2 | +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit | ||
3 | +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 | ||
4 | +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift | ||
5 | +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS | ||
6 | +PODS_BUILD_DIR = ${BUILD_DIR} | ||
7 | +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) | ||
8 | +PODS_ROOT = ${SRCROOT} | ||
9 | +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit | ||
10 | +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates | ||
11 | +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} | ||
12 | +SKIP_INSTALL = YES | ||
13 | +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
Resources/Fonts/Sk-Modernist-Bold.otf
0 → 100755
No preview for this file type
Resources/Fonts/Sk-Modernist-Mono.otf
0 → 100755
No preview for this file type
Resources/Fonts/Sk-Modernist-Regular.otf
0 → 100755
No preview for this file type
Resources/Fonts/fontsme.com.url
0 → 100644
Resources/Fonts/license.txt
0 → 100755
1 | +Sk-Modernist | ||
2 | + | ||
3 | +seankanedesign.com | ||
4 | + | ||
5 | +LICENSING AGREEMENT | ||
6 | + | ||
7 | +YOU MAY: | ||
8 | + | ||
9 | +1) USE THIS FONT IN COMMERCIAL DESIGN | ||
10 | + | ||
11 | +2) USE THIS FONT IN PERSONAL DESIGN | ||
12 | + | ||
13 | +YOU MAY NOT: | ||
14 | + | ||
15 | +1) RE-DISTRIBUTE THIS FONT BY ANY MEANS, FOR FREE, OR FOR A FEE. | ||
16 | + | ||
17 | +2) ALTER THIS FONT FOR RE-DISTRIBUTION | ||
18 | + | ||
19 | +FOR ALL OTHER MATTERS, EMAIL US AT: | ||
20 | + | ||
21 | +mail@seankanedesign.com |
Please
register
or
login
to post a comment