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
1 | +# Uncomment the next line to define a global platform for your project | |
2 | +# platform :ios, '9.0' | |
3 | + | |
4 | +target 'InterQR-Internship' do | |
5 | + # Comment the next line if you don't want to use dynamic frameworks | |
6 | + use_frameworks! | |
7 | + | |
8 | + # Pods for InterQR-Internship | |
9 | +pod 'SnapKit' | |
10 | +end | ... | ... |
Podfile.lock
0 → 100644
Pods/Manifest.lock
0 → 100644
Pods/Pods.xcodeproj/project.pbxproj
0 → 100644
1 | +// !$*UTF8*$! | |
2 | +{ | |
3 | + archiveVersion = 1; | |
4 | + classes = { | |
5 | + }; | |
6 | + objectVersion = 55; | |
7 | + objects = { | |
8 | + | |
9 | +/* Begin PBXBuildFile section */ | |
10 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */; }; | |
11 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */; }; | |
12 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */; }; | |
13 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */; }; | |
14 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */; }; | |
15 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */; }; | |
16 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */; }; | |
17 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */; }; | |
18 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */; }; | |
19 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */; }; | |
20 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */; }; | |
21 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */; }; | |
22 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */; }; | |
23 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */; }; | |
24 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */; }; | |
25 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */; }; | |
26 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */; }; | |
27 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */; }; | |
28 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */; }; | |
29 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */; }; | |
30 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */; }; | |
31 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */; }; | |
32 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | |
33 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */; }; | |
34 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | |
35 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */; }; | |
36 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */; }; | |
37 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */; }; | |
38 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */; }; | |
39 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */; }; | |
40 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */; }; | |
41 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; | |
42 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */; }; | |
43 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */; }; | |
44 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; | |
45 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */; }; | |
46 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */; }; | |
47 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */; }; | |
48 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */; }; | |
49 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */; }; | |
50 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */; }; | |
51 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */; }; | |
52 | +/* End PBXBuildFile section */ | |
53 | + | |
54 | +/* Begin PBXContainerItemProxy section */ | |
55 | + 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */ = { | |
56 | + isa = PBXContainerItemProxy; | |
57 | + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; | |
58 | + proxyType = 1; | |
59 | + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; | |
60 | + remoteInfo = SnapKit; | |
61 | + }; | |
62 | +/* End PBXContainerItemProxy section */ | |
63 | + | |
64 | +/* Begin PBXFileReference section */ | |
65 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = "<group>"; }; | |
66 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = "<group>"; }; | |
67 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = "<group>"; }; | |
68 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = "<group>"; }; | |
69 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = "<group>"; }; | |
70 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-InterQR-Internship-umbrella.h"; sourceTree = "<group>"; }; | |
71 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = "<group>"; }; | |
72 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = "<group>"; }; | |
73 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = "<group>"; }; | |
74 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = "<group>"; }; | |
75 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = "<group>"; }; | |
76 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = "<group>"; }; | |
77 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = "<group>"; }; | |
78 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = "<group>"; }; | |
79 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-InterQR-Internship-frameworks.sh"; sourceTree = "<group>"; }; | |
80 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = "<group>"; }; | |
81 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = "<group>"; }; | |
82 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = "<group>"; }; | |
83 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-acknowledgements.plist"; sourceTree = "<group>"; }; | |
84 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = "<group>"; }; | |
85 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = "<group>"; }; | |
86 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = "<group>"; }; | |
87 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = "<group>"; }; | |
88 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; | |
89 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = "<group>"; }; | |
90 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = "<group>"; }; | |
91 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = "<group>"; }; | |
92 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = "<group>"; }; | |
93 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-InterQR-Internship-acknowledgements.markdown"; sourceTree = "<group>"; }; | |
94 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-InterQR-Internship-Info.plist"; sourceTree = "<group>"; }; | |
95 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Source/ConstraintDirectionalInsets.swift; sourceTree = "<group>"; }; | |
96 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = "<group>"; }; | |
97 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = "<group>"; }; | |
98 | + 979486118B3E90C08386079D57962701 /* SnapKit */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | |
99 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.release.xcconfig"; sourceTree = "<group>"; }; | |
100 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; | |
101 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = "<group>"; }; | |
102 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = "<group>"; }; | |
103 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Source/ConstraintDirectionalInsetTarget.swift; sourceTree = "<group>"; }; | |
104 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-InterQR-Internship"; path = Pods_InterQR_Internship.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | |
105 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = "<group>"; }; | |
106 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = "<group>"; }; | |
107 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = "<group>"; }; | |
108 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = "<group>"; }; | |
109 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-InterQR-Internship-dummy.m"; sourceTree = "<group>"; }; | |
110 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = "<group>"; }; | |
111 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = "<group>"; }; | |
112 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = "<group>"; }; | |
113 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = "<group>"; }; | |
114 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = "<group>"; }; | |
115 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = "<group>"; }; | |
116 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-InterQR-Internship.debug.xcconfig"; sourceTree = "<group>"; }; | |
117 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = "<group>"; }; | |
118 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = "<group>"; }; | |
119 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-InterQR-Internship.modulemap"; sourceTree = "<group>"; }; | |
120 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = "<group>"; }; | |
121 | +/* End PBXFileReference section */ | |
122 | + | |
123 | +/* Begin PBXFrameworksBuildPhase section */ | |
124 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */ = { | |
125 | + isa = PBXFrameworksBuildPhase; | |
126 | + buildActionMask = 2147483647; | |
127 | + files = ( | |
128 | + B23550BBD6A6025B9B319F5981F5ABF4 /* Foundation.framework in Frameworks */, | |
129 | + ); | |
130 | + runOnlyForDeploymentPostprocessing = 0; | |
131 | + }; | |
132 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */ = { | |
133 | + isa = PBXFrameworksBuildPhase; | |
134 | + buildActionMask = 2147483647; | |
135 | + files = ( | |
136 | + CCA22C9F421C9E8C13009947816D8C82 /* Foundation.framework in Frameworks */, | |
137 | + ); | |
138 | + runOnlyForDeploymentPostprocessing = 0; | |
139 | + }; | |
140 | +/* End PBXFrameworksBuildPhase section */ | |
141 | + | |
142 | +/* Begin PBXGroup section */ | |
143 | + 578452D2E740E91742655AC8F1636D1F /* iOS */ = { | |
144 | + isa = PBXGroup; | |
145 | + children = ( | |
146 | + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, | |
147 | + ); | |
148 | + name = iOS; | |
149 | + sourceTree = "<group>"; | |
150 | + }; | |
151 | + 6CD2077814608664B890545761124450 /* Targets Support Files */ = { | |
152 | + isa = PBXGroup; | |
153 | + children = ( | |
154 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */, | |
155 | + ); | |
156 | + name = "Targets Support Files"; | |
157 | + sourceTree = "<group>"; | |
158 | + }; | |
159 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */ = { | |
160 | + isa = PBXGroup; | |
161 | + children = ( | |
162 | + 50380F281EC3EE769C85035CCEA77226 /* Constraint.swift */, | |
163 | + 13F460233F2A555D41511B6CCA66A124 /* ConstraintAttributes.swift */, | |
164 | + 250E41DBB680A3A2ECDDD2210311B230 /* ConstraintConfig.swift */, | |
165 | + 6D990E0FED5B41C1F13AC6B08208A99B /* ConstraintConstantTarget.swift */, | |
166 | + CB1D9F6F4E2364DFAF158E04AF5D5EAA /* ConstraintDescription.swift */, | |
167 | + 91164BE769DA144776663FBF46785561 /* ConstraintDirectionalInsets.swift */, | |
168 | + A7D358AA1606C7B2CDC8555485807E9E /* ConstraintDirectionalInsetTarget.swift */, | |
169 | + 7AE00ECC24C5CC6DC938204FF42AD0E5 /* ConstraintDSL.swift */, | |
170 | + 549471CD1FE3A1E1865DD172864918D3 /* ConstraintInsets.swift */, | |
171 | + 7C2EC377264B25FB0E67D150E37E87CD /* ConstraintInsetTarget.swift */, | |
172 | + 474AFC560A8B414B467174737DBC891A /* ConstraintItem.swift */, | |
173 | + 66C5188AE61F0E667CD9E7ED28CDD61C /* ConstraintLayoutGuide.swift */, | |
174 | + 09BF299D2EEB87E7DD02630E87B96224 /* ConstraintLayoutGuide+Extensions.swift */, | |
175 | + BE0BE9F3D55FDB29EF516F6D6B1B6BCA /* ConstraintLayoutGuideDSL.swift */, | |
176 | + 3D705690D879064ED84970813189D8D4 /* ConstraintLayoutSupport.swift */, | |
177 | + C4A46A8054577838D49C60142EB88B13 /* ConstraintLayoutSupportDSL.swift */, | |
178 | + 141BC33167429B9926FB24A17F01568C /* ConstraintMaker.swift */, | |
179 | + E2C3B0B200350EAC8F42EF635FF31BD1 /* ConstraintMakerEditable.swift */, | |
180 | + E43F10DE451FED17810D9B5C237324A5 /* ConstraintMakerExtendable.swift */, | |
181 | + 11D02329E74D733C03BF6BAE1F564481 /* ConstraintMakerFinalizable.swift */, | |
182 | + 91A53CAF547D71AEFABE49D91B4E6816 /* ConstraintMakerPriortizable.swift */, | |
183 | + 724FB64349F5678CE1709979CF0DD952 /* ConstraintMakerRelatable.swift */, | |
184 | + F7AB9BB47A2175181386A432C07253AE /* ConstraintMultiplierTarget.swift */, | |
185 | + 47B200BD964F52F6693D4168248B8645 /* ConstraintOffsetTarget.swift */, | |
186 | + F0BD95F32F2E57D6B9100B77B93F013C /* ConstraintPriority.swift */, | |
187 | + 9716AD15FADF38A93170E034F2BCE457 /* ConstraintPriorityTarget.swift */, | |
188 | + 2975CA5A0D26BC84F3EE9912FEBDA795 /* ConstraintRelatableTarget.swift */, | |
189 | + 25479F58B67AA43E092C7B156C1B5C1B /* ConstraintRelation.swift */, | |
190 | + A51E99894F75F00A281BE6A32FBDE495 /* ConstraintView.swift */, | |
191 | + EE9055CEA7890517265589BD23D73A49 /* ConstraintView+Extensions.swift */, | |
192 | + 56006AA49A060CA2830F32CD6F394823 /* ConstraintViewDSL.swift */, | |
193 | + D038D2FAA2F6B073D1B64B8635F4E3E6 /* Debugging.swift */, | |
194 | + F44C5B72775F6AF0891BF331F32FE10D /* LayoutConstraint.swift */, | |
195 | + 464C01543F3BCEDEE51ABAA696513D0B /* LayoutConstraintItem.swift */, | |
196 | + D4E066869A95E00B949CBA4D2284C35F /* Typealiases.swift */, | |
197 | + 6A9341666EAC154422A032092A7DC2D7 /* UILayoutSupport+Extensions.swift */, | |
198 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */, | |
199 | + ); | |
200 | + name = SnapKit; | |
201 | + path = SnapKit; | |
202 | + sourceTree = "<group>"; | |
203 | + }; | |
204 | + 843EFF0C650682C304D518A9092EE9FD /* Support Files */ = { | |
205 | + isa = PBXGroup; | |
206 | + children = ( | |
207 | + 7889131C1139F96BBDA94CEE2E694763 /* SnapKit.modulemap */, | |
208 | + E13B89FFD81AACB7530769CA05EEA26B /* SnapKit-dummy.m */, | |
209 | + 391A6F8B42D2CD885F8F3C4CE6859439 /* SnapKit-Info.plist */, | |
210 | + E14A09DC3AD8CA84464FEC37F0FC99D1 /* SnapKit-prefix.pch */, | |
211 | + 0116B84A6773B75FCBFCB479E740F0F3 /* SnapKit-umbrella.h */, | |
212 | + 7C21E0C93A1141A1E2EB51575500E27D /* SnapKit.debug.xcconfig */, | |
213 | + A1CD432F32277BB93DEAADA626ECEC5B /* SnapKit.release.xcconfig */, | |
214 | + ); | |
215 | + name = "Support Files"; | |
216 | + path = "../Target Support Files/SnapKit"; | |
217 | + sourceTree = "<group>"; | |
218 | + }; | |
219 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */ = { | |
220 | + isa = PBXGroup; | |
221 | + children = ( | |
222 | + BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */, | |
223 | + 979486118B3E90C08386079D57962701 /* SnapKit */, | |
224 | + ); | |
225 | + name = Products; | |
226 | + sourceTree = "<group>"; | |
227 | + }; | |
228 | + AB6A1FAB8184004FBB23A49ECB702D8D /* Pods-InterQR-Internship */ = { | |
229 | + isa = PBXGroup; | |
230 | + children = ( | |
231 | + F504EA106E2EAFCABF948E2429753957 /* Pods-InterQR-Internship.modulemap */, | |
232 | + 80955AA4A40A9133A80DA09E1E44ACA3 /* Pods-InterQR-Internship-acknowledgements.markdown */, | |
233 | + 5EB91B045230D31E6646927758B02E79 /* Pods-InterQR-Internship-acknowledgements.plist */, | |
234 | + D0E35E51BBC4431F93FF23D69BFEDAEB /* Pods-InterQR-Internship-dummy.m */, | |
235 | + 49312D807F40C233BB30CFEEB9EFC3C1 /* Pods-InterQR-Internship-frameworks.sh */, | |
236 | + 8AB15D54D42F3F112190CEB6EA262F77 /* Pods-InterQR-Internship-Info.plist */, | |
237 | + 21963A6A321FAB871AA9A109572D2FBC /* Pods-InterQR-Internship-umbrella.h */, | |
238 | + EF88D6AF5E18A624B2BBDC50D49C7534 /* Pods-InterQR-Internship.debug.xcconfig */, | |
239 | + 9AFE619CFFABED07F15D3C2B1C1B48F6 /* Pods-InterQR-Internship.release.xcconfig */, | |
240 | + ); | |
241 | + name = "Pods-InterQR-Internship"; | |
242 | + path = "Target Support Files/Pods-InterQR-Internship"; | |
243 | + sourceTree = "<group>"; | |
244 | + }; | |
245 | + BA22F08D059965C9A09F78196176CEDB /* Pods */ = { | |
246 | + isa = PBXGroup; | |
247 | + children = ( | |
248 | + 7F02E3862C6E84203E8324D9D0088797 /* SnapKit */, | |
249 | + ); | |
250 | + name = Pods; | |
251 | + sourceTree = "<group>"; | |
252 | + }; | |
253 | + CF1408CF629C7361332E53B88F7BD30C = { | |
254 | + isa = PBXGroup; | |
255 | + children = ( | |
256 | + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, | |
257 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, | |
258 | + BA22F08D059965C9A09F78196176CEDB /* Pods */, | |
259 | + A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */, | |
260 | + 6CD2077814608664B890545761124450 /* Targets Support Files */, | |
261 | + ); | |
262 | + sourceTree = "<group>"; | |
263 | + }; | |
264 | + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { | |
265 | + isa = PBXGroup; | |
266 | + children = ( | |
267 | + 578452D2E740E91742655AC8F1636D1F /* iOS */, | |
268 | + ); | |
269 | + name = Frameworks; | |
270 | + sourceTree = "<group>"; | |
271 | + }; | |
272 | +/* End PBXGroup section */ | |
273 | + | |
274 | +/* Begin PBXHeadersBuildPhase section */ | |
275 | + 3B921547E999920F44EBD58F955423CC /* Headers */ = { | |
276 | + isa = PBXHeadersBuildPhase; | |
277 | + buildActionMask = 2147483647; | |
278 | + files = ( | |
279 | + A4467357581E8345DD348683CC4111AF /* SnapKit-umbrella.h in Headers */, | |
280 | + ); | |
281 | + runOnlyForDeploymentPostprocessing = 0; | |
282 | + }; | |
283 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */ = { | |
284 | + isa = PBXHeadersBuildPhase; | |
285 | + buildActionMask = 2147483647; | |
286 | + files = ( | |
287 | + DABB59FFCCEFA43B2311DC3523722688 /* Pods-InterQR-Internship-umbrella.h in Headers */, | |
288 | + ); | |
289 | + runOnlyForDeploymentPostprocessing = 0; | |
290 | + }; | |
291 | +/* End PBXHeadersBuildPhase section */ | |
292 | + | |
293 | +/* Begin PBXNativeTarget section */ | |
294 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { | |
295 | + isa = PBXNativeTarget; | |
296 | + buildConfigurationList = 4949A940CD53B7E293859B71C91C88F3 /* Build configuration list for PBXNativeTarget "SnapKit" */; | |
297 | + buildPhases = ( | |
298 | + 3B921547E999920F44EBD58F955423CC /* Headers */, | |
299 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */, | |
300 | + 9B30433E568C40FCE04D5188A9715448 /* Frameworks */, | |
301 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */, | |
302 | + ); | |
303 | + buildRules = ( | |
304 | + ); | |
305 | + dependencies = ( | |
306 | + ); | |
307 | + name = SnapKit; | |
308 | + productName = SnapKit; | |
309 | + productReference = 979486118B3E90C08386079D57962701 /* SnapKit */; | |
310 | + productType = "com.apple.product-type.framework"; | |
311 | + }; | |
312 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */ = { | |
313 | + isa = PBXNativeTarget; | |
314 | + buildConfigurationList = D8D8A2B883726AC5D3A57DEBA6C81808 /* Build configuration list for PBXNativeTarget "Pods-InterQR-Internship" */; | |
315 | + buildPhases = ( | |
316 | + FF3F375D2A6C27224B693BE653D1BE1D /* Headers */, | |
317 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */, | |
318 | + 8903CC697923B02B1E7383E453A91481 /* Frameworks */, | |
319 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */, | |
320 | + ); | |
321 | + buildRules = ( | |
322 | + ); | |
323 | + dependencies = ( | |
324 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */, | |
325 | + ); | |
326 | + name = "Pods-InterQR-Internship"; | |
327 | + productName = Pods_InterQR_Internship; | |
328 | + productReference = BC2FF22E595805C1E70DAF47C4A27774 /* Pods-InterQR-Internship */; | |
329 | + productType = "com.apple.product-type.framework"; | |
330 | + }; | |
331 | +/* End PBXNativeTarget section */ | |
332 | + | |
333 | +/* Begin PBXProject section */ | |
334 | + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { | |
335 | + isa = PBXProject; | |
336 | + attributes = { | |
337 | + LastSwiftUpdateCheck = 1240; | |
338 | + LastUpgradeCheck = 1240; | |
339 | + }; | |
340 | + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; | |
341 | + compatibilityVersion = "Xcode 13.0"; | |
342 | + developmentRegion = en; | |
343 | + hasScannedForEncodings = 0; | |
344 | + knownRegions = ( | |
345 | + Base, | |
346 | + en, | |
347 | + ); | |
348 | + mainGroup = CF1408CF629C7361332E53B88F7BD30C; | |
349 | + productRefGroup = A1321E8B354EADA9A5DA2454DCD9B0B5 /* Products */; | |
350 | + projectDirPath = ""; | |
351 | + projectRoot = ""; | |
352 | + targets = ( | |
353 | + 9BAF824ED8B046DCC6AEAC3D645548EE /* Pods-InterQR-Internship */, | |
354 | + 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */, | |
355 | + ); | |
356 | + }; | |
357 | +/* End PBXProject section */ | |
358 | + | |
359 | +/* Begin PBXResourcesBuildPhase section */ | |
360 | + C2EA05FC2666CA72F48FA357F269DD6B /* Resources */ = { | |
361 | + isa = PBXResourcesBuildPhase; | |
362 | + buildActionMask = 2147483647; | |
363 | + files = ( | |
364 | + ); | |
365 | + runOnlyForDeploymentPostprocessing = 0; | |
366 | + }; | |
367 | + DBFBC99C6F5D9B1D57CC9D1C6E9209EB /* Resources */ = { | |
368 | + isa = PBXResourcesBuildPhase; | |
369 | + buildActionMask = 2147483647; | |
370 | + files = ( | |
371 | + ); | |
372 | + runOnlyForDeploymentPostprocessing = 0; | |
373 | + }; | |
374 | +/* End PBXResourcesBuildPhase section */ | |
375 | + | |
376 | +/* Begin PBXSourcesBuildPhase section */ | |
377 | + 06A02EF810C9B8F84BA558BBDB9E5D6E /* Sources */ = { | |
378 | + isa = PBXSourcesBuildPhase; | |
379 | + buildActionMask = 2147483647; | |
380 | + files = ( | |
381 | + 51A4A1046676D304410544EB56732A49 /* Constraint.swift in Sources */, | |
382 | + 7580FAAB1BDA52F5A969E5571D1A5973 /* ConstraintAttributes.swift in Sources */, | |
383 | + B543FD108C1C6AF6129CB4991553218B /* ConstraintConfig.swift in Sources */, | |
384 | + C61D3BC32A28A405C934C00039AD2583 /* ConstraintConstantTarget.swift in Sources */, | |
385 | + 8FD9CD608C4EAAFDE6AC7B8B9EF0FF5E /* ConstraintDescription.swift in Sources */, | |
386 | + A0F754C88A64972A40A9008B0AD52109 /* ConstraintDirectionalInsets.swift in Sources */, | |
387 | + 7764AA5F6BBFC6ECE43959923DD007D3 /* ConstraintDirectionalInsetTarget.swift in Sources */, | |
388 | + 90FD5AE525E138A473723FD79AF73273 /* ConstraintDSL.swift in Sources */, | |
389 | + 8C6546C1EF4F153DF3795CC6FE189E5B /* ConstraintInsets.swift in Sources */, | |
390 | + BEBF920FEB959B46A76BAADF22E5CD15 /* ConstraintInsetTarget.swift in Sources */, | |
391 | + BD333CDBCF5D2FD55920336FC271DF33 /* ConstraintItem.swift in Sources */, | |
392 | + EE6C364198A763EBBF49237035D86439 /* ConstraintLayoutGuide.swift in Sources */, | |
393 | + 3DEDFA52B3A196F6D3E1F0937617628A /* ConstraintLayoutGuide+Extensions.swift in Sources */, | |
394 | + 8449EB1DFD43E222D687D5A8D2088D2D /* ConstraintLayoutGuideDSL.swift in Sources */, | |
395 | + 3B60C02F6E42FD06B128473E00A94224 /* ConstraintLayoutSupport.swift in Sources */, | |
396 | + 274DF0E2BF04F6F4F9F1E70CF513A4F2 /* ConstraintLayoutSupportDSL.swift in Sources */, | |
397 | + CB194156C900B767B0160AF72EDF354D /* ConstraintMaker.swift in Sources */, | |
398 | + A53D3AF15CE8D348306EF11619C5D166 /* ConstraintMakerEditable.swift in Sources */, | |
399 | + 825062025906CE93C5D124E1FD9A811E /* ConstraintMakerExtendable.swift in Sources */, | |
400 | + D13D417B236E736EEAE7217B5CE3EC5C /* ConstraintMakerFinalizable.swift in Sources */, | |
401 | + F2C817C166B2DE613222C41015A586C9 /* ConstraintMakerPriortizable.swift in Sources */, | |
402 | + CB8E4BF0D710970BE2CB4C87ED1043E4 /* ConstraintMakerRelatable.swift in Sources */, | |
403 | + 17BE0F4E51B0FB968125F1A520607FD8 /* ConstraintMultiplierTarget.swift in Sources */, | |
404 | + 62F299B4704A7C95FB5866C6CDE2E2FD /* ConstraintOffsetTarget.swift in Sources */, | |
405 | + F343BA4E457FFDB0165492AECAEF0BCC /* ConstraintPriority.swift in Sources */, | |
406 | + E36244E8BF4AC941E82DAF16DDF4BBC2 /* ConstraintPriorityTarget.swift in Sources */, | |
407 | + E8EAADACF3BAE33BDECBC7214EAE9CD2 /* ConstraintRelatableTarget.swift in Sources */, | |
408 | + D59C2826AD288ECFF576B2AFA312716C /* ConstraintRelation.swift in Sources */, | |
409 | + F24D06C23DAB2F52A30C886A7A8177C7 /* ConstraintView.swift in Sources */, | |
410 | + 1E9EEA756F2774D73347F1660EEFE3E9 /* ConstraintView+Extensions.swift in Sources */, | |
411 | + 5E8BA529DFB4529006967624044FEC1C /* ConstraintViewDSL.swift in Sources */, | |
412 | + F10586462FB54CEA169A1A7A469A926D /* Debugging.swift in Sources */, | |
413 | + 43863B6D6A0E47B6648BB7B469736EDD /* LayoutConstraint.swift in Sources */, | |
414 | + 4CA13A0527BC57DE2C54A0F3B5ED8652 /* LayoutConstraintItem.swift in Sources */, | |
415 | + 968B4874A9F12D67C8B901136C9C8157 /* SnapKit-dummy.m in Sources */, | |
416 | + 3CD5FAFC746A76D73C3F501734199DFF /* Typealiases.swift in Sources */, | |
417 | + 144DA93A55A598F5197F10C729FBDD69 /* UILayoutSupport+Extensions.swift in Sources */, | |
418 | + ); | |
419 | + runOnlyForDeploymentPostprocessing = 0; | |
420 | + }; | |
421 | + 6753A70EC97EA6377506948C78A9F4A2 /* Sources */ = { | |
422 | + isa = PBXSourcesBuildPhase; | |
423 | + buildActionMask = 2147483647; | |
424 | + files = ( | |
425 | + 90E5A3F8520D447ACD72A9F7C1DDAD47 /* Pods-InterQR-Internship-dummy.m in Sources */, | |
426 | + ); | |
427 | + runOnlyForDeploymentPostprocessing = 0; | |
428 | + }; | |
429 | +/* End PBXSourcesBuildPhase section */ | |
430 | + | |
431 | +/* Begin PBXTargetDependency section */ | |
432 | + F6A140FDF6958E137BBA33A7A61790C1 /* PBXTargetDependency */ = { | |
433 | + isa = PBXTargetDependency; | |
434 | + name = SnapKit; | |
435 | + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; | |
436 | + targetProxy = 7168F679A13DA87B24C148E3B8BDBAC5 /* PBXContainerItemProxy */; | |
437 | + }; | |
438 | +/* End PBXTargetDependency section */ | |
439 | + | |
440 | +/* Begin XCBuildConfiguration section */ | |
441 | + 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 | |
\ No newline at end of file | ... | ... |
1 | +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework | |
\ No newline at end of file | ... | ... |
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 | |
\ No newline at end of file | ... | ... |
Please
register
or
login
to post a comment