\()'
312 | name: "Singleton Shared Single Object"
313 | message: "Singletons with a `shared` object (real Singletons) should not have other static let properties. Use `default` instead (if needed)."
314 | severity: warning
315 | switch_associated_value_style:
316 | included: ".*.swift"
317 | regex: 'case\s+[^\(][^\n]*(?:\(let |[^\)], let)'
318 | name: "Switch Associated Value Style"
319 | message: "Always put the `let` in front of case – even if only one associated value captured."
320 | severity: warning
321 | todo_format:
322 | included: ".*.swift"
323 | regex: '\/\/ TODO: [^\n]{0,14}\n|\/\/ TODO: \[\S{1,12}\]|\/\/ TODO: [^\[]|\/\/ TODO: \[.{13}[^\]]|\/\/ TODO: \[[^a-z]{2}|\/\/ TODO: \[.{2}[^_]|\/\/ TODO: \[.{7}[^-]|\/\/ TODO: \[.{10}[^-]'
324 | name: "Todo Date"
325 | message: "All TODOs should have a format with creator credentials & date of their creation documented like this: `// TODO: [cg_YYYY-MM-DD] `."
326 | severity: warning
327 | todo_uppercase:
328 | included: ".*.swift"
329 | regex: '\/\/ ?tODO|\/\/ ?ToDO|\/\/ ?TOdO|\/\/ ?TODo|\/\/ ?todo|\/\/ ?Todo|\/\/ ?ToDo|\/\/ ?toDo'
330 | name: "Todo Uppercase"
331 | message: "All TODOs should be all-uppercased like this: `// TODO: [cg_YYYY-MM-DD] `."
332 | severity: warning
333 | todo_whitespacing:
334 | included: ".*.swift"
335 | regex: '\/\/TODO|\/\/ TODO\s|\/\/ TODO:[^ ]|\/\/ TODO: |\/\/ TODO: \[[^\s]{0,10}\][^ ]'
336 | name: "Todo Whitespace"
337 | message: "All TODOs should exactly start like this (mind the whitespacing): `// TODO: [cg_YYYY-MM-DD] `."
338 | severity: warning
339 | tuple_index:
340 | included: ".*.swift"
341 | regex: '(\$\d|\w*[^\d \(\[\{])\.\d'
342 | name: "Tuple Index"
343 | message: "Prevent unwraping tuples by their index – define a typealias with named components instead."
344 | severity: warning
345 | unnecessary_case_break:
346 | included: ".*.swift"
347 | regex: '(case |default)(?:[^\n\}]+\n){2,}\s*break *\n|\n *\n *break(?:\n *\n|\n *\})'
348 | name: "Unnecessary Case Break"
349 | message: "Don't use break in switch cases – Swift breaks by default."
350 | severity: warning
351 | unnecessary_nil_assignment:
352 | included: ".*.swift"
353 | regex: 'var \S+\s*:\s*[^\s]+\?\s*=\s*nil'
354 | name: "Unnecessary Nil Assignment"
355 | message: "Don't assign nil as a value when defining an optional type – it's nil by default."
356 | severity: warning
357 | vertical_whitespaces_around_mark:
358 | included: ".*.swift"
359 | regex: '\/\/\s*MARK:[^\n]*(\n\n)|(\n\n\n)[ \t]*\/\/\s*MARK:|[^\s{]\n[^\n\/]*\/\/\s*MARK:'
360 | name: "Vertical Whitespaces Around MARK:"
361 | message: "Include a single vertical whitespace (empty line) before and none after MARK: comments."
362 | severity: warning
363 | view_controller_variable_naming:
364 | included: ".*.swift"
365 | regex: '(?:let|var) +\w*(?:vc|VC|Vc|viewC|viewController|ViewController) *='
366 | name: "View Controller Variable Naming"
367 | message: "Always name your view controller variables with the suffix `ViewCtrl`."
368 | severity: warning
369 | whitespace_around_range_operators:
370 | included: ".*.swift"
371 | regex: '\w\.\.[<\.]\w'
372 | name: "Whitespace around Range Operators"
373 | message: "A range operator should be surrounded by a single whitespace."
374 | severity: warning
375 | whitespace_comment_start:
376 | included: ".*.swift"
377 | regex: '[^:#\]\}\)][^:#\]\}\)]\/\/[^\s\/]'
378 | name: "Whitespace Comment Start"
379 | message: "A comment should always start with a whitespace."
380 | severity: warning
381 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
14 |
15 |
16 |
18 |
19 |
21 |
23 |
24 |
26 |
27 |
28 |
29 |
31 |
32 |
33 |
35 |
36 |
37 |
39 |
40 |
41 |
42 |
43 | Installation
44 | • Usage
45 | • Donation
46 | • Issues
47 | • Contributing
48 | • License
49 |
50 |
51 |
52 | # HandyUIKit
53 |
54 | The goal of this library is to provide **handy UI related features** that we feel like they should have been part of the UIKit frameworks themselves. Therefore this library is intended to inherit solutions for common tasks that appear in daily programming and tries to comply to the same naming conventions as already used in the Apple frameworks.
55 |
56 | If you like this, please also checkout [HandySwift](https://github.com/FlineDev/HandySwift) for handy features that didn't make it into the Swift standard library. It includes additions that are not UI related.
57 |
58 | ## Installation
59 |
60 | Currently the recommended way of installing this library is via [Carthage](https://github.com/Carthage/Carthage). [Cocoapods](https://github.com/CocoaPods/CocoaPods) might work, too, but is not tested.
61 |
62 | You can of course also just include this framework manually into your project by downloading it or by using git submodules.
63 |
64 |
65 | ## Usage
66 |
67 | Please have a look at the UsageExamples.playground for a complete list of features provided.
68 | Open the Playground from within the `.xcworkspace` in order for it to work.
69 |
70 | ---
71 | #### Feature Overview
72 |
73 | - **Extensions**
74 | - [UIColor](#uicolorextension)
75 | - [UIView](#uiviewextension)
76 | - [CoreGraphics](#coregraphicsextensions)
77 | - [StringExtension](#stringextension)
78 | - [UIImageExtension](#uiimageextension)
79 | - [UITableViewExtension](#uitableviewextension)
80 | - [UIWindowExtension](#uiwindowextension)
81 | - [NibLoadable](#nibloadable)
82 | - **IBDesignables**
83 | - [RoundableView](#roundableview)
84 | - [TemplateButton](#templatebutton)
85 | - [TemplateImageView](#templateimageview)
86 |
87 | ---
88 |
89 | ### UIColorExtension
90 |
91 | > If you are using the RGB color system to define your colors, you definitely should checkout **[this great blog post](https://medium.com/@erikdkennedy/color-in-ui-design-a-practical-framework-e18cacd97f9e#.krfv78qsm)** on **why RGB is a bad choice** for most projects (not all, of course). And if you think you found the perfect way of changing the brightness of a color using the HSB system, you'll be proved wrong there, too. Honestly, it's worth a read. If you don't want though: "Luminance" is the keyword here and it is the single most important reason why HandyUIKit integrates **native support for the HLC** (or sometimes called LCh) color system to the `UIColor` class. HLC is a more human-understandable transformation of the LAB color space and shares its great advantage of having a single value that you need to change to **correctly change the perceived brightness** of any given color: The `luminance` value. And changing the brightness can save you a lot of time when working with colors in apps, as described in the blog post.
92 |
93 | #### init(hue:luminance:chroma:)
94 | Initializes a UIColor with given HLC (LCh) colors normed to ranges from 0 to 1.
95 |
96 | ``` Swift
97 | let hlcaColor = UIColor(hue: 180/360, luminance: 30/100, chroma: 125/128, alpha: 1)
98 | ```
99 |
100 | #### .hlca
101 | Returns a tuple with named HLCA parameters for easy access.
102 |
103 | ``` Swift
104 | hlcaColor.hlca.hue // => 0.5
105 | hlcaColor.hlca.luminance // => 0.3
106 | hlcaColor.hlca.chroma // => 0.97
107 | hlcaColor.hlca.alpha // => 1.0
108 | ```
109 |
110 | #### .rgba
111 | Returns a tuple with named RGBA parameters for easy access.
112 |
113 | ``` Swift
114 | let rgbaColor = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.4)
115 | rgbaColor.rgba.red // => 0.1
116 | rgbaColor.rgba.green // => 0.2
117 | rgbaColor.rgba.blue // => 0.3
118 | rgbaColor.rgba.alpha // => 0.4
119 | ```
120 |
121 | #### .hsba
122 | Returns a tuple with named HSBA parameters for easy access.
123 |
124 | ``` Swift
125 | let hsbaColor = UIColor(hue: 0.1, saturation: 0.2, brightness: 0.3, alpha: 0.4)
126 | hsbaColor.hsba.hue // => 0.1
127 | hsbaColor.hsba.saturation // => 0.2
128 | hsbaColor.hsba.brightness // => 0.3
129 | hsbaColor.hsba.alpha // => 0.4
130 | ```
131 |
132 |
133 | #### .change(ChangeableAttribute, by:)
134 | Creates a new `UIColor` object with a single attribute changed by a given difference using addition.
135 |
136 | ``` Swift
137 | color.rgba.blue // => 0.3
138 | let newColor = color.change(.blue, by: 0.2)
139 | newColor.rgba.blue // => 0.5
140 | ```
141 |
142 | #### .change(ChangeableAttribute, to:)
143 | Creates a new `UIColor` object with the value of a single attribute set to a given value.
144 |
145 | ``` Swift
146 | color.hlca.luminance // => 0.3
147 | let newColor = color.change(.luminance, to: 0.8)
148 | newColor.hlca.luminance // => 0.8
149 | ```
150 |
151 | ### UIViewExtension
152 |
153 | #### .toImage(size:)
154 | Takes a screenshot of the UIView's content optionally resizing the result to a given size.
155 |
156 | ``` Swift
157 | let view = UIView(frame: CGRect(width: 500, height: 500))
158 | let subview = UIView(frame: CGRect(width: 200, height: 200))
159 | view.addSubview(subview)
160 |
161 | view.backgroundColor = .blue
162 | subview.backgroundColor = .red
163 |
164 | let fullSizeContent = view.toImage() // =>
165 | let downSizedContent = view.toImage(size: CGSize(width: 80, height: 80))
166 | // =>
167 | ```
168 |
169 | #### .bindEdgesToSuperview()
170 | Adds constraints to the subview so it always has the same size and position as the superview.
171 |
172 | ``` Swift
173 | view.frame // => {x: 0, y: 0, w: 500, h: 500}
174 | subview.frame // => {x: 150, y: 150, w: 200, h: 200}
175 | subview.bindEdgesToSuperview()
176 | view.layoutIfNeeded()
177 | subview.frame // => {x: 0, y: 0, w: 500, h: 500}
178 | ```
179 |
180 |
181 | ### CoreGraphicsExtensions
182 |
183 | #### CGSize.inPixels / CGSize.inPixels(screen:)
184 | Returns a new CGSize object with the width and height converted to true pixels on screen.
185 |
186 | ``` Swift
187 | let size = CGSize(width: 100, height: 50)
188 | size.inPixels // test this with a Retina screen target
189 | // => {w 200 h 100}
190 | size.inPixels(UIScreen.screens.last!) // pass a different screen
191 | // => {w 50 h 25}
192 | ```
193 |
194 | #### CGPoint.inPixels / CGPoint.inPixels(screen:)
195 | Returns a new CGPoint object with the x and y converted to true pixels on screen.
196 |
197 | ``` Swift
198 | let point = CGPoint(x: 100, y: 50)
199 | point.inPixels // test this with a Retina screen target
200 | // => {x 200 y 100}
201 | let someScreen = UIScreen.screens.last!
202 | point.inPixels(someScreen) // pass a different screen
203 | // => {x 50 y 25}
204 | ```
205 |
206 | #### CGRect.inPixels / CGRect.inPixels(screen:)
207 | Returns a new CGRect object with the origin and size converted to true pixels on screen.
208 |
209 | ``` Swift
210 | let rect = CGRect(x: 10, y: 20, width: 100, height: 50)
211 | rect.inPixels // test this with a Retina screen target
212 | // => {x 20 y 40 w 200 h 100}
213 | let someScreen = UIScreen.screens.last!
214 | rect.inPixels(someScreen) // pass a different screen
215 | // => {x 5 y 10 w 50 h 25}
216 | ```
217 |
218 | #### CGRect.init(size:) / CGRect.init(width:height:)
219 | Creates a new CGRect object from origin zero with given size.
220 |
221 | ``` Swift
222 | let someSize = CGSize(width: 100, height: 50)
223 |
224 | let originZeroRect1 = CGRect(size: someSize)
225 | let originZeroRect2 = CGRect(width: 100, height: 50)
226 | ```
227 |
228 |
229 | ### StringExtension
230 | #### .height(forFixedWidth:font:)
231 | Calculates and returns the height needed to fit the text into a width-constrained rect.
232 |
233 | ``` Swift
234 | let loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
235 |
236 | loremIpsum.height(forFixedWidth: 300, font: UIFont.systemFont(ofSize: 14, weight: UIFontWeightBold))
237 | // => 183.77734375
238 | ```
239 |
240 | #### .width(forFixedHeight:font:)
241 | Calculates and returns the width needed to fit the text into a height-constrained rect.
242 |
243 | ``` Swift
244 | loremIpsum.width(forFixedHeight: 21, font: UIFont.systemFont(ofSize: 12, weight: UIFontWeightUltraLight))
245 | // => 2351.0390625
246 | ```
247 |
248 | #### .hyphenated()
249 | A hyphenated NSAttributedString with justified alignment and word wrapping line break mode.
250 |
251 | ``` Swift
252 | loremIpsum.hyphenated() // => a justified & hyphenated NSAttributedString object
253 | ```
254 |
255 | #### .superscripted(font:) / .subscripted(font:) / .superAndSubscripted(font:)
256 | Superscript and/or subscript part of your strings with the structures `^{superscripted text}` and `_{subscripted text}`.
257 |
258 | ``` Swift
259 | "x^{2}".superscripted(font: UIFont.systemFont(ofSize: 20, weight: .medium))
260 | ```
261 | Result: x2
262 |
263 | ``` Swift
264 | "CO_{2}".subscripted(font: UIFont.systemFont(ofSize: 20, weight: .medium))
265 | ```
266 | Result: CO2
267 |
268 | ``` Swift
269 | "_{20}Ca^{1,0}".superAndSubscripted(font: UIFont.systemFont(ofSize: 20, weight: .regular))
270 | ```
271 | Result: 20Ca1,0
272 |
273 | ### UIImageExtension
274 | #### .toGrayscale()
275 | Creates a grayscale version of the image.
276 |
277 | ``` Swift
278 | let image = UIImage(named: "someImage")!
279 | let grayscaleImage = image.toGrayscale()
280 | ```
281 |
282 | ### UITableViewExtension
283 | #### dequeueCell(ofType:, for:)
284 | Returns a reusable table view cell of type `cellType` with the name of its type as reuse identifier and adds it to the table.
285 |
286 | ```swift
287 | let cell = tableView.dequeueCell(ofType: MyUITableViewCell.self, for: indexPath)
288 | ```
289 |
290 | #### dequeueHeaderFooterView(ofType:)
291 | Returns a reusable header or footer view of type `viewType` with the name of its type as reuse identifier and adds it to the table.
292 |
293 | ```swift
294 | let view = tableView.dequeueHeaderFooterView(ofType: MyUITableHeaderFooterView.self)
295 | ```
296 |
297 | #### registerCell(ofType:)
298 | Registers a nib with the name of `cellType` if it exists or registers the class of type `cellType` as reusable cell.
299 |
300 | ```swift
301 | tableView.registerCell(ofType: MyUITableViewCell.self)
302 | ```
303 |
304 | #### registerHeaderFooterView(ofType:)
305 | Registers a nib with the name of `viewType` if it exists or registers the class of type `viewType` as reusable header footer view.
306 |
307 | ```swift
308 | tableView.registerHeaderFooterView(ofType: MyUITableHeaderFooterView.self)
309 | ```
310 |
311 | ### UIWindowExtension
312 | #### visibleViewController
313 |
314 | Returns the currently visible view controller if any reachable within the window.
315 |
316 | #### visibleViewController(from:)
317 |
318 | Recursively follows navigation controllers, tab bar controllers and modal presented view controllers starting from the given view controller to find the currently visible view controller.
319 |
320 | ### NibLoadable
321 |
322 | This is a protocol helper you can make any `UIView` subclass conform to. The situation where you might want to do this is when you want to design a `UIView` subclass in a XIB file. In this case, just make your view type conform to `NibLoadable` like this:
323 |
324 | ```swift
325 | class MyTableViewCell: UITableViewCell, NibLoadable {
326 | // your code
327 | }
328 | ```
329 |
330 | By default `NibLoadable` will search for a file named like your type, for example `MyTableViewCell.xib` within the project and load it. You can override `static var nibName: String` to change this behavior if you need to.
331 |
332 | Your view must be set as the `Files owner` within the XIB file, also there must be only one root `UIView` object (which should just be of type `UIView`, not your subclass).
333 |
334 | Now you can add `IBOutlets` and `IBActions` to your subclass and connect them within the XIB file to the `Files owner`.
335 |
336 | In order to make loading work from both code and Storyboards, call `loadFromNib()` from within your init methods like so:
337 |
338 | ```swift
339 | required init?(coder aDecoder: NSCoder) {
340 | super.init(coder: aDecoder)
341 | loadFromNib()
342 | }
343 |
344 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
345 | super.init(style: style, reuseIdentifier: reuseIdentifier)
346 | loadFromNib()
347 | }
348 | ```
349 |
350 | That's it, now you should be able to load your custom view types designed within XIBs from code & in Storyboards. For Storyboard usage, simply add a `UIView` object and change it's type to your view subclass and everything should work when running your app. To see your custom view within Interface Builder, add `@IBDesignable` in front of the class declaration.
351 |
352 | If you need to do any setup steps after the IBOutlets are loaded, you can override `nibDidLoad` which can be seen as the analogous to `viewDidLoad` in view controller in this perspective.
353 |
354 | ### RoundableView
355 |
356 | This is an `IBDesignable` subclass of `UIView` which provides the `cornerRadius` to be set right from within Interface Builder. Simply add a `UIView` object to your IB file and change it's type to `RoundableView` and you should see `cornerRadius` within the property inspector.
357 |
358 | ### TemplateButton
359 |
360 | This is an `IBDesignable` subclass of `UIButton` which will automatically make the `image` a mask for the `tintColor` value by setting the image rendering mode to `.alwaysTemplate` automatically.
361 |
362 | ### TemplateImageView
363 |
364 | This is an `IBDesignable` subclass of `UIImageView` which will automatically make the `image` a mask for the `tintColor` value by setting the image rendering mode to `.alwaysTemplate` automatically.
365 |
366 |
367 | ## Donation
368 |
369 | BartyCrouch was brought to you by [Cihat Gündüz](https://github.com/Jeehut) in his free time. If you want to thank me and support the development of this project, please **make a small donation on [PayPal](https://paypal.me/Dschee/5EUR)**. In case you also like my other [open source contributions](https://github.com/FlineDev) and [articles](https://medium.com/@Jeehut), please consider motivating me by **becoming a sponsor on [GitHub](https://github.com/sponsors/Jeehut)** or a **patron on [Patreon](https://www.patreon.com/Jeehut)**.
370 |
371 | Thank you very much for any donation, it really helps out a lot! 💯
372 |
373 |
374 | ## Contributing
375 |
376 | See the file [CONTRIBUTING.md](https://github.com/FlineDev/HandyUIKit/blob/stable/CONTRIBUTING.md).
377 |
378 |
379 | ## License
380 |
381 | This library is released under the [MIT License](http://opensource.org/licenses/MIT). See LICENSE for details.
382 |
--------------------------------------------------------------------------------
/HandyUIKit.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 2E1DABDE20790C1700627CC2 /* UIImageExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E1DABDD20790C1700627CC2 /* UIImageExtTests.swift */; };
11 | 2E1DABDF20790C1700627CC2 /* UIImageExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E1DABDD20790C1700627CC2 /* UIImageExtTests.swift */; };
12 | 2E1DABE520790F5900627CC2 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2E1DABE420790F5900627CC2 /* Images.xcassets */; };
13 | 2E1DABE620790F5900627CC2 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2E1DABE420790F5900627CC2 /* Images.xcassets */; };
14 | 2E71660A207904A200135F39 /* UIImageExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E716609207904A200135F39 /* UIImageExt.swift */; };
15 | 2E71660B207904A200135F39 /* UIImageExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E716609207904A200135F39 /* UIImageExt.swift */; };
16 | 8218E4C92211BE3B007AAAF3 /* RoundableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4C82211BE3B007AAAF3 /* RoundableView.swift */; };
17 | 8218E4CA2211BE3B007AAAF3 /* RoundableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4C82211BE3B007AAAF3 /* RoundableView.swift */; };
18 | 8218E4CC2211BE8A007AAAF3 /* TemplateButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4CB2211BE8A007AAAF3 /* TemplateButton.swift */; };
19 | 8218E4CD2211BE8A007AAAF3 /* TemplateButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4CB2211BE8A007AAAF3 /* TemplateButton.swift */; };
20 | 8218E4CF2211BEA8007AAAF3 /* TemplateImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4CE2211BEA8007AAAF3 /* TemplateImageView.swift */; };
21 | 8218E4D02211BEA8007AAAF3 /* TemplateImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4CE2211BEA8007AAAF3 /* TemplateImageView.swift */; };
22 | 8218E4D22211BEDC007AAAF3 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4D12211BEDC007AAAF3 /* NibLoadable.swift */; };
23 | 8218E4D32211BEDC007AAAF3 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4D12211BEDC007AAAF3 /* NibLoadable.swift */; };
24 | 8218E4E12211D972007AAAF3 /* UIWindowExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4E02211D972007AAAF3 /* UIWindowExt.swift */; };
25 | 8218E4E22211D972007AAAF3 /* UIWindowExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8218E4E02211D972007AAAF3 /* UIWindowExt.swift */; };
26 | 8242F0A42189FE230075FDF3 /* CGSizeExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A32189FE230075FDF3 /* CGSizeExt.swift */; };
27 | 8242F0A52189FE230075FDF3 /* CGSizeExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A32189FE230075FDF3 /* CGSizeExt.swift */; };
28 | 8242F0A72189FE410075FDF3 /* CGPointExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A62189FE410075FDF3 /* CGPointExt.swift */; };
29 | 8242F0A82189FE410075FDF3 /* CGPointExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A62189FE410075FDF3 /* CGPointExt.swift */; };
30 | 8242F0AA2189FE500075FDF3 /* CGRectExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A92189FE500075FDF3 /* CGRectExt.swift */; };
31 | 8242F0AB2189FE500075FDF3 /* CGRectExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8242F0A92189FE500075FDF3 /* CGRectExt.swift */; };
32 | A11830F31E5996FD00CBE087 /* StringExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11830F21E5996FD00CBE087 /* StringExt.swift */; };
33 | A11830F41E5996FD00CBE087 /* StringExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11830F21E5996FD00CBE087 /* StringExt.swift */; };
34 | A11830F61E599BF600CBE087 /* StringExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11830F51E599BF600CBE087 /* StringExtTests.swift */; };
35 | A11830F71E599BF600CBE087 /* StringExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11830F51E599BF600CBE087 /* StringExtTests.swift */; };
36 | A14E0AC61E1F986A00DFC788 /* HandyUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A14E0ABC1E1F986A00DFC788 /* HandyUIKit.framework */; };
37 | A14E0AE41E1F987C00DFC788 /* HandyUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A14E0ADB1E1F987C00DFC788 /* HandyUIKit.framework */; };
38 | A14E0B111E1F9B3100DFC788 /* UIViewExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14E0B0E1E1F9B3100DFC788 /* UIViewExt.swift */; };
39 | A14E0B121E1F9B3100DFC788 /* UIViewExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14E0B0E1E1F9B3100DFC788 /* UIViewExt.swift */; };
40 | A1D4453C1E59C9370014A250 /* NSAttributedStringExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D4453B1E59C9370014A250 /* NSAttributedStringExt.swift */; };
41 | A1D4453D1E59C9370014A250 /* NSAttributedStringExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D4453B1E59C9370014A250 /* NSAttributedStringExt.swift */; };
42 | A1F221681E3E07DD00419B06 /* UIColorExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F221671E3E07DD00419B06 /* UIColorExt.swift */; };
43 | A1F221691E3E07DD00419B06 /* UIColorExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F221671E3E07DD00419B06 /* UIColorExt.swift */; };
44 | A1F221701E3E0B8400419B06 /* ColorExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2216D1E3E0B7700419B06 /* ColorExtTests.swift */; };
45 | A1F221711E3E0B8500419B06 /* ColorExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2216D1E3E0B7700419B06 /* ColorExtTests.swift */; };
46 | A1F2217C1E3E2C5500419B06 /* CoreGraphicsExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2217B1E3E2C5500419B06 /* CoreGraphicsExtTests.swift */; };
47 | A1F2217D1E3E2C5500419B06 /* CoreGraphicsExtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2217B1E3E2C5500419B06 /* CoreGraphicsExtTests.swift */; };
48 | A1F221801E3E778F00419B06 /* ColorSpaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2217F1E3E778F00419B06 /* ColorSpaces.swift */; };
49 | A1F221811E3E778F00419B06 /* ColorSpaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1F2217F1E3E778F00419B06 /* ColorSpaces.swift */; };
50 | C5C8A2482181F7BE00D12F8E /* UITableViewExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5C8A2472181F7BE00D12F8E /* UITableViewExt.swift */; };
51 | C5C8A2492181F7BE00D12F8E /* UITableViewExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5C8A2472181F7BE00D12F8E /* UITableViewExt.swift */; };
52 | /* End PBXBuildFile section */
53 |
54 | /* Begin PBXContainerItemProxy section */
55 | A14E0AC71E1F986A00DFC788 /* PBXContainerItemProxy */ = {
56 | isa = PBXContainerItemProxy;
57 | containerPortal = A14E0AB31E1F986A00DFC788 /* Project object */;
58 | proxyType = 1;
59 | remoteGlobalIDString = A14E0ABB1E1F986A00DFC788;
60 | remoteInfo = HandyUIKit;
61 | };
62 | A14E0AE51E1F987C00DFC788 /* PBXContainerItemProxy */ = {
63 | isa = PBXContainerItemProxy;
64 | containerPortal = A14E0AB31E1F986A00DFC788 /* Project object */;
65 | proxyType = 1;
66 | remoteGlobalIDString = A14E0ADA1E1F987C00DFC788;
67 | remoteInfo = "HandyUIKit-tvOS";
68 | };
69 | /* End PBXContainerItemProxy section */
70 |
71 | /* Begin PBXFileReference section */
72 | 2E1DABDD20790C1700627CC2 /* UIImageExtTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageExtTests.swift; sourceTree = ""; };
73 | 2E1DABE420790F5900627CC2 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
74 | 2E716609207904A200135F39 /* UIImageExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageExt.swift; sourceTree = ""; };
75 | 8218E4C82211BE3B007AAAF3 /* RoundableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundableView.swift; sourceTree = ""; };
76 | 8218E4CB2211BE8A007AAAF3 /* TemplateButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateButton.swift; sourceTree = ""; };
77 | 8218E4CE2211BEA8007AAAF3 /* TemplateImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateImageView.swift; sourceTree = ""; };
78 | 8218E4D12211BEDC007AAAF3 /* NibLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NibLoadable.swift; sourceTree = ""; };
79 | 8218E4E02211D972007AAAF3 /* UIWindowExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIWindowExt.swift; sourceTree = ""; };
80 | 8242F09C2189F59F0075FDF3 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; };
81 | 8242F09D2189F6FD0075FDF3 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = ""; };
82 | 8242F09F2189F7190075FDF3 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; };
83 | 8242F0A32189FE230075FDF3 /* CGSizeExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGSizeExt.swift; sourceTree = ""; };
84 | 8242F0A62189FE410075FDF3 /* CGPointExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGPointExt.swift; sourceTree = ""; };
85 | 8242F0A92189FE500075FDF3 /* CGRectExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGRectExt.swift; sourceTree = ""; };
86 | A11830F21E5996FD00CBE087 /* StringExt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExt.swift; sourceTree = ""; };
87 | A11830F51E599BF600CBE087 /* StringExtTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtTests.swift; sourceTree = ""; };
88 | A14E0ABC1E1F986A00DFC788 /* HandyUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HandyUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
89 | A14E0AC51E1F986A00DFC788 /* HandyUIKit-iOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HandyUIKit-iOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
90 | A14E0ADB1E1F987C00DFC788 /* HandyUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HandyUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
91 | A14E0AE31E1F987C00DFC788 /* HandyUIKit-tvOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HandyUIKit-tvOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
92 | A14E0AF61E1F98E400DFC788 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
93 | A14E0AFB1E1F98E400DFC788 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
94 | A14E0B0E1E1F9B3100DFC788 /* UIViewExt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewExt.swift; sourceTree = ""; };
95 | A1D4453B1E59C9370014A250 /* NSAttributedStringExt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSAttributedStringExt.swift; sourceTree = ""; };
96 | A1F221671E3E07DD00419B06 /* UIColorExt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExt.swift; sourceTree = ""; };
97 | A1F2216D1E3E0B7700419B06 /* ColorExtTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorExtTests.swift; sourceTree = ""; };
98 | A1F221791E3E15FA00419B06 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
99 | A1F2217B1E3E2C5500419B06 /* CoreGraphicsExtTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreGraphicsExtTests.swift; sourceTree = ""; };
100 | A1F2217F1E3E778F00419B06 /* ColorSpaces.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorSpaces.swift; sourceTree = ""; };
101 | A1F221821E3FEDD600419B06 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .swiftlint.yml; sourceTree = ""; };
102 | A1F221831E3FEDF300419B06 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; };
103 | A1F221841E3FEE1C00419B06 /* HandyUIKit.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = HandyUIKit.podspec; sourceTree = ""; };
104 | A1F221861E3FEE8B00419B06 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; };
105 | C5C8A2472181F7BE00D12F8E /* UITableViewExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewExt.swift; sourceTree = ""; };
106 | /* End PBXFileReference section */
107 |
108 | /* Begin PBXFrameworksBuildPhase section */
109 | A14E0AB81E1F986A00DFC788 /* Frameworks */ = {
110 | isa = PBXFrameworksBuildPhase;
111 | buildActionMask = 2147483647;
112 | files = (
113 | );
114 | runOnlyForDeploymentPostprocessing = 0;
115 | };
116 | A14E0AC21E1F986A00DFC788 /* Frameworks */ = {
117 | isa = PBXFrameworksBuildPhase;
118 | buildActionMask = 2147483647;
119 | files = (
120 | A14E0AC61E1F986A00DFC788 /* HandyUIKit.framework in Frameworks */,
121 | );
122 | runOnlyForDeploymentPostprocessing = 0;
123 | };
124 | A14E0AD71E1F987C00DFC788 /* Frameworks */ = {
125 | isa = PBXFrameworksBuildPhase;
126 | buildActionMask = 2147483647;
127 | files = (
128 | );
129 | runOnlyForDeploymentPostprocessing = 0;
130 | };
131 | A14E0AE01E1F987C00DFC788 /* Frameworks */ = {
132 | isa = PBXFrameworksBuildPhase;
133 | buildActionMask = 2147483647;
134 | files = (
135 | A14E0AE41E1F987C00DFC788 /* HandyUIKit.framework in Frameworks */,
136 | );
137 | runOnlyForDeploymentPostprocessing = 0;
138 | };
139 | /* End PBXFrameworksBuildPhase section */
140 |
141 | /* Begin PBXGroup section */
142 | 2E1DABE020790DC300627CC2 /* Resources */ = {
143 | isa = PBXGroup;
144 | children = (
145 | 2E1DABE420790F5900627CC2 /* Images.xcassets */,
146 | );
147 | path = Resources;
148 | sourceTree = "";
149 | };
150 | 8218E4C72211BE28007AAAF3 /* IBDesignables */ = {
151 | isa = PBXGroup;
152 | children = (
153 | 8218E4C82211BE3B007AAAF3 /* RoundableView.swift */,
154 | 8218E4CB2211BE8A007AAAF3 /* TemplateButton.swift */,
155 | 8218E4CE2211BEA8007AAAF3 /* TemplateImageView.swift */,
156 | );
157 | path = IBDesignables;
158 | sourceTree = "";
159 | };
160 | 8218E4D42211C17F007AAAF3 /* Extensions */ = {
161 | isa = PBXGroup;
162 | children = (
163 | A1F2216D1E3E0B7700419B06 /* ColorExtTests.swift */,
164 | A1F2217B1E3E2C5500419B06 /* CoreGraphicsExtTests.swift */,
165 | A11830F51E599BF600CBE087 /* StringExtTests.swift */,
166 | 2E1DABDD20790C1700627CC2 /* UIImageExtTests.swift */,
167 | );
168 | path = Extensions;
169 | sourceTree = "";
170 | };
171 | A14E0AB21E1F986A00DFC788 = {
172 | isa = PBXGroup;
173 | children = (
174 | A14E0AF21E1F98E400DFC788 /* Frameworks */,
175 | A14E0AF71E1F98E400DFC788 /* Tests */,
176 | A1F221781E3E15E500419B06 /* RootFiles */,
177 | A14E0ABD1E1F986A00DFC788 /* Products */,
178 | );
179 | sourceTree = "";
180 | };
181 | A14E0ABD1E1F986A00DFC788 /* Products */ = {
182 | isa = PBXGroup;
183 | children = (
184 | A14E0ABC1E1F986A00DFC788 /* HandyUIKit.framework */,
185 | A14E0AC51E1F986A00DFC788 /* HandyUIKit-iOS_Tests.xctest */,
186 | A14E0ADB1E1F987C00DFC788 /* HandyUIKit.framework */,
187 | A14E0AE31E1F987C00DFC788 /* HandyUIKit-tvOS_Tests.xctest */,
188 | );
189 | name = Products;
190 | sourceTree = "";
191 | };
192 | A14E0AF21E1F98E400DFC788 /* Frameworks */ = {
193 | isa = PBXGroup;
194 | children = (
195 | A14E0AF31E1F98E400DFC788 /* HandyUIKit */,
196 | A14E0AF51E1F98E400DFC788 /* SupportingFiles */,
197 | );
198 | path = Frameworks;
199 | sourceTree = "";
200 | };
201 | A14E0AF31E1F98E400DFC788 /* HandyUIKit */ = {
202 | isa = PBXGroup;
203 | children = (
204 | A1F2217F1E3E778F00419B06 /* ColorSpaces.swift */,
205 | A14E0B0C1E1F9B3100DFC788 /* Extensions */,
206 | 8218E4C72211BE28007AAAF3 /* IBDesignables */,
207 | 8218E4D12211BEDC007AAAF3 /* NibLoadable.swift */,
208 | );
209 | path = HandyUIKit;
210 | sourceTree = "";
211 | };
212 | A14E0AF51E1F98E400DFC788 /* SupportingFiles */ = {
213 | isa = PBXGroup;
214 | children = (
215 | A14E0AF61E1F98E400DFC788 /* Info.plist */,
216 | );
217 | path = SupportingFiles;
218 | sourceTree = "";
219 | };
220 | A14E0AF71E1F98E400DFC788 /* Tests */ = {
221 | isa = PBXGroup;
222 | children = (
223 | A14E0AF81E1F98E400DFC788 /* HandyUIKitTests */,
224 | A14E0AFA1E1F98E400DFC788 /* SupportingFiles */,
225 | );
226 | path = Tests;
227 | sourceTree = "";
228 | };
229 | A14E0AF81E1F98E400DFC788 /* HandyUIKitTests */ = {
230 | isa = PBXGroup;
231 | children = (
232 | 8218E4D42211C17F007AAAF3 /* Extensions */,
233 | 2E1DABE020790DC300627CC2 /* Resources */,
234 | );
235 | path = HandyUIKitTests;
236 | sourceTree = "";
237 | };
238 | A14E0AFA1E1F98E400DFC788 /* SupportingFiles */ = {
239 | isa = PBXGroup;
240 | children = (
241 | A14E0AFB1E1F98E400DFC788 /* Info.plist */,
242 | );
243 | path = SupportingFiles;
244 | sourceTree = "";
245 | };
246 | A14E0B0C1E1F9B3100DFC788 /* Extensions */ = {
247 | isa = PBXGroup;
248 | children = (
249 | 8242F0A62189FE410075FDF3 /* CGPointExt.swift */,
250 | 8242F0A92189FE500075FDF3 /* CGRectExt.swift */,
251 | 8242F0A32189FE230075FDF3 /* CGSizeExt.swift */,
252 | A1D4453B1E59C9370014A250 /* NSAttributedStringExt.swift */,
253 | A11830F21E5996FD00CBE087 /* StringExt.swift */,
254 | A1F221671E3E07DD00419B06 /* UIColorExt.swift */,
255 | 2E716609207904A200135F39 /* UIImageExt.swift */,
256 | C5C8A2472181F7BE00D12F8E /* UITableViewExt.swift */,
257 | A14E0B0E1E1F9B3100DFC788 /* UIViewExt.swift */,
258 | 8218E4E02211D972007AAAF3 /* UIWindowExt.swift */,
259 | );
260 | path = Extensions;
261 | sourceTree = "";
262 | };
263 | A1F221781E3E15E500419B06 /* RootFiles */ = {
264 | isa = PBXGroup;
265 | children = (
266 | A1F221821E3FEDD600419B06 /* .swiftlint.yml */,
267 | 8242F09C2189F59F0075FDF3 /* CHANGELOG.md */,
268 | 8242F09D2189F6FD0075FDF3 /* CODE_OF_CONDUCT.md */,
269 | 8242F09F2189F7190075FDF3 /* CONTRIBUTING.md */,
270 | A1F221841E3FEE1C00419B06 /* HandyUIKit.podspec */,
271 | A1F221861E3FEE8B00419B06 /* LICENSE */,
272 | A1F221831E3FEDF300419B06 /* Package.swift */,
273 | A1F221791E3E15FA00419B06 /* README.md */,
274 | );
275 | name = RootFiles;
276 | sourceTree = "";
277 | };
278 | /* End PBXGroup section */
279 |
280 | /* Begin PBXHeadersBuildPhase section */
281 | A14E0AB91E1F986A00DFC788 /* Headers */ = {
282 | isa = PBXHeadersBuildPhase;
283 | buildActionMask = 2147483647;
284 | files = (
285 | );
286 | runOnlyForDeploymentPostprocessing = 0;
287 | };
288 | A14E0AD81E1F987C00DFC788 /* Headers */ = {
289 | isa = PBXHeadersBuildPhase;
290 | buildActionMask = 2147483647;
291 | files = (
292 | );
293 | runOnlyForDeploymentPostprocessing = 0;
294 | };
295 | /* End PBXHeadersBuildPhase section */
296 |
297 | /* Begin PBXNativeTarget section */
298 | A14E0ABB1E1F986A00DFC788 /* HandyUIKit-iOS */ = {
299 | isa = PBXNativeTarget;
300 | buildConfigurationList = A14E0AD01E1F986A00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-iOS" */;
301 | buildPhases = (
302 | A14E0AB71E1F986A00DFC788 /* Sources */,
303 | A14E0AB81E1F986A00DFC788 /* Frameworks */,
304 | A14E0AB91E1F986A00DFC788 /* Headers */,
305 | A14E0ABA1E1F986A00DFC788 /* Resources */,
306 | A1F2218C1E3FEF2800419B06 /* SwiftLint */,
307 | );
308 | buildRules = (
309 | );
310 | dependencies = (
311 | );
312 | name = "HandyUIKit-iOS";
313 | productName = HandyUIKit;
314 | productReference = A14E0ABC1E1F986A00DFC788 /* HandyUIKit.framework */;
315 | productType = "com.apple.product-type.framework";
316 | };
317 | A14E0AC41E1F986A00DFC788 /* HandyUIKit-iOS_Tests */ = {
318 | isa = PBXNativeTarget;
319 | buildConfigurationList = A14E0AD31E1F986A00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-iOS_Tests" */;
320 | buildPhases = (
321 | A14E0AC11E1F986A00DFC788 /* Sources */,
322 | A14E0AC21E1F986A00DFC788 /* Frameworks */,
323 | A14E0AC31E1F986A00DFC788 /* Resources */,
324 | );
325 | buildRules = (
326 | );
327 | dependencies = (
328 | A14E0AC81E1F986A00DFC788 /* PBXTargetDependency */,
329 | );
330 | name = "HandyUIKit-iOS_Tests";
331 | productName = HandyUIKitTests;
332 | productReference = A14E0AC51E1F986A00DFC788 /* HandyUIKit-iOS_Tests.xctest */;
333 | productType = "com.apple.product-type.bundle.unit-test";
334 | };
335 | A14E0ADA1E1F987C00DFC788 /* HandyUIKit-tvOS */ = {
336 | isa = PBXNativeTarget;
337 | buildConfigurationList = A14E0AEC1E1F987C00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-tvOS" */;
338 | buildPhases = (
339 | A14E0AD61E1F987C00DFC788 /* Sources */,
340 | A14E0AD71E1F987C00DFC788 /* Frameworks */,
341 | A14E0AD81E1F987C00DFC788 /* Headers */,
342 | A14E0AD91E1F987C00DFC788 /* Resources */,
343 | A1F2218A1E3FEF1300419B06 /* SwiftLint */,
344 | );
345 | buildRules = (
346 | );
347 | dependencies = (
348 | );
349 | name = "HandyUIKit-tvOS";
350 | productName = "HandyUIKit-tvOS";
351 | productReference = A14E0ADB1E1F987C00DFC788 /* HandyUIKit.framework */;
352 | productType = "com.apple.product-type.framework";
353 | };
354 | A14E0AE21E1F987C00DFC788 /* HandyUIKit-tvOS_Tests */ = {
355 | isa = PBXNativeTarget;
356 | buildConfigurationList = A14E0AEF1E1F987C00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-tvOS_Tests" */;
357 | buildPhases = (
358 | A14E0ADF1E1F987C00DFC788 /* Sources */,
359 | A14E0AE01E1F987C00DFC788 /* Frameworks */,
360 | A14E0AE11E1F987C00DFC788 /* Resources */,
361 | );
362 | buildRules = (
363 | );
364 | dependencies = (
365 | A14E0AE61E1F987C00DFC788 /* PBXTargetDependency */,
366 | );
367 | name = "HandyUIKit-tvOS_Tests";
368 | productName = "HandyUIKit-tvOSTests";
369 | productReference = A14E0AE31E1F987C00DFC788 /* HandyUIKit-tvOS_Tests.xctest */;
370 | productType = "com.apple.product-type.bundle.unit-test";
371 | };
372 | /* End PBXNativeTarget section */
373 |
374 | /* Begin PBXProject section */
375 | A14E0AB31E1F986A00DFC788 /* Project object */ = {
376 | isa = PBXProject;
377 | attributes = {
378 | LastSwiftUpdateCheck = 0820;
379 | LastUpgradeCheck = 1300;
380 | ORGANIZATIONNAME = Flinesoft;
381 | TargetAttributes = {
382 | A14E0ABB1E1F986A00DFC788 = {
383 | CreatedOnToolsVersion = 8.2.1;
384 | LastSwiftMigration = 1140;
385 | ProvisioningStyle = Automatic;
386 | };
387 | A14E0AC41E1F986A00DFC788 = {
388 | CreatedOnToolsVersion = 8.2.1;
389 | DevelopmentTeam = 767S6EFMJ8;
390 | LastSwiftMigration = 1140;
391 | ProvisioningStyle = Automatic;
392 | };
393 | A14E0ADA1E1F987C00DFC788 = {
394 | CreatedOnToolsVersion = 8.2.1;
395 | LastSwiftMigration = 1300;
396 | ProvisioningStyle = Automatic;
397 | };
398 | A14E0AE21E1F987C00DFC788 = {
399 | CreatedOnToolsVersion = 8.2.1;
400 | DevelopmentTeam = 767S6EFMJ8;
401 | LastSwiftMigration = 1300;
402 | ProvisioningStyle = Automatic;
403 | };
404 | };
405 | };
406 | buildConfigurationList = A14E0AB61E1F986A00DFC788 /* Build configuration list for PBXProject "HandyUIKit" */;
407 | compatibilityVersion = "Xcode 3.2";
408 | developmentRegion = en;
409 | hasScannedForEncodings = 0;
410 | knownRegions = (
411 | en,
412 | Base,
413 | );
414 | mainGroup = A14E0AB21E1F986A00DFC788;
415 | productRefGroup = A14E0ABD1E1F986A00DFC788 /* Products */;
416 | projectDirPath = "";
417 | projectRoot = "";
418 | targets = (
419 | A14E0ABB1E1F986A00DFC788 /* HandyUIKit-iOS */,
420 | A14E0AC41E1F986A00DFC788 /* HandyUIKit-iOS_Tests */,
421 | A14E0ADA1E1F987C00DFC788 /* HandyUIKit-tvOS */,
422 | A14E0AE21E1F987C00DFC788 /* HandyUIKit-tvOS_Tests */,
423 | );
424 | };
425 | /* End PBXProject section */
426 |
427 | /* Begin PBXResourcesBuildPhase section */
428 | A14E0ABA1E1F986A00DFC788 /* Resources */ = {
429 | isa = PBXResourcesBuildPhase;
430 | buildActionMask = 2147483647;
431 | files = (
432 | );
433 | runOnlyForDeploymentPostprocessing = 0;
434 | };
435 | A14E0AC31E1F986A00DFC788 /* Resources */ = {
436 | isa = PBXResourcesBuildPhase;
437 | buildActionMask = 2147483647;
438 | files = (
439 | 2E1DABE520790F5900627CC2 /* Images.xcassets in Resources */,
440 | );
441 | runOnlyForDeploymentPostprocessing = 0;
442 | };
443 | A14E0AD91E1F987C00DFC788 /* Resources */ = {
444 | isa = PBXResourcesBuildPhase;
445 | buildActionMask = 2147483647;
446 | files = (
447 | );
448 | runOnlyForDeploymentPostprocessing = 0;
449 | };
450 | A14E0AE11E1F987C00DFC788 /* Resources */ = {
451 | isa = PBXResourcesBuildPhase;
452 | buildActionMask = 2147483647;
453 | files = (
454 | 2E1DABE620790F5900627CC2 /* Images.xcassets in Resources */,
455 | );
456 | runOnlyForDeploymentPostprocessing = 0;
457 | };
458 | /* End PBXResourcesBuildPhase section */
459 |
460 | /* Begin PBXShellScriptBuildPhase section */
461 | A1F2218A1E3FEF1300419B06 /* SwiftLint */ = {
462 | isa = PBXShellScriptBuildPhase;
463 | buildActionMask = 2147483647;
464 | files = (
465 | );
466 | inputPaths = (
467 | );
468 | name = SwiftLint;
469 | outputPaths = (
470 | );
471 | runOnlyForDeploymentPostprocessing = 0;
472 | shellPath = /bin/sh;
473 | shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n if which swiftlint > /dev/null; then\n swiftlint --quiet\n else\n echo \"warning: SwiftLint not installed, download it from https://github.com/realm/SwiftLint\"\n fi\nfi\n";
474 | };
475 | A1F2218C1E3FEF2800419B06 /* SwiftLint */ = {
476 | isa = PBXShellScriptBuildPhase;
477 | buildActionMask = 2147483647;
478 | files = (
479 | );
480 | inputPaths = (
481 | );
482 | name = SwiftLint;
483 | outputPaths = (
484 | );
485 | runOnlyForDeploymentPostprocessing = 0;
486 | shellPath = /bin/sh;
487 | shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n if which swiftlint > /dev/null; then\n swiftlint --quiet\n else\n echo \"warning: SwiftLint not installed, download it from https://github.com/realm/SwiftLint\"\n fi\nfi\n";
488 | };
489 | /* End PBXShellScriptBuildPhase section */
490 |
491 | /* Begin PBXSourcesBuildPhase section */
492 | A14E0AB71E1F986A00DFC788 /* Sources */ = {
493 | isa = PBXSourcesBuildPhase;
494 | buildActionMask = 2147483647;
495 | files = (
496 | A1F221801E3E778F00419B06 /* ColorSpaces.swift in Sources */,
497 | A1F221681E3E07DD00419B06 /* UIColorExt.swift in Sources */,
498 | 8242F0A72189FE410075FDF3 /* CGPointExt.swift in Sources */,
499 | 8242F0A42189FE230075FDF3 /* CGSizeExt.swift in Sources */,
500 | 2E71660A207904A200135F39 /* UIImageExt.swift in Sources */,
501 | C5C8A2482181F7BE00D12F8E /* UITableViewExt.swift in Sources */,
502 | 8218E4E12211D972007AAAF3 /* UIWindowExt.swift in Sources */,
503 | A11830F31E5996FD00CBE087 /* StringExt.swift in Sources */,
504 | 8218E4CF2211BEA8007AAAF3 /* TemplateImageView.swift in Sources */,
505 | 8218E4C92211BE3B007AAAF3 /* RoundableView.swift in Sources */,
506 | 8218E4D22211BEDC007AAAF3 /* NibLoadable.swift in Sources */,
507 | A1D4453C1E59C9370014A250 /* NSAttributedStringExt.swift in Sources */,
508 | A14E0B111E1F9B3100DFC788 /* UIViewExt.swift in Sources */,
509 | 8242F0AA2189FE500075FDF3 /* CGRectExt.swift in Sources */,
510 | 8218E4CC2211BE8A007AAAF3 /* TemplateButton.swift in Sources */,
511 | );
512 | runOnlyForDeploymentPostprocessing = 0;
513 | };
514 | A14E0AC11E1F986A00DFC788 /* Sources */ = {
515 | isa = PBXSourcesBuildPhase;
516 | buildActionMask = 2147483647;
517 | files = (
518 | A1F2217C1E3E2C5500419B06 /* CoreGraphicsExtTests.swift in Sources */,
519 | A1F221701E3E0B8400419B06 /* ColorExtTests.swift in Sources */,
520 | A11830F61E599BF600CBE087 /* StringExtTests.swift in Sources */,
521 | 2E1DABDE20790C1700627CC2 /* UIImageExtTests.swift in Sources */,
522 | );
523 | runOnlyForDeploymentPostprocessing = 0;
524 | };
525 | A14E0AD61E1F987C00DFC788 /* Sources */ = {
526 | isa = PBXSourcesBuildPhase;
527 | buildActionMask = 2147483647;
528 | files = (
529 | A1F221811E3E778F00419B06 /* ColorSpaces.swift in Sources */,
530 | A1F221691E3E07DD00419B06 /* UIColorExt.swift in Sources */,
531 | 8242F0A82189FE410075FDF3 /* CGPointExt.swift in Sources */,
532 | 8242F0A52189FE230075FDF3 /* CGSizeExt.swift in Sources */,
533 | 2E71660B207904A200135F39 /* UIImageExt.swift in Sources */,
534 | C5C8A2492181F7BE00D12F8E /* UITableViewExt.swift in Sources */,
535 | 8218E4E22211D972007AAAF3 /* UIWindowExt.swift in Sources */,
536 | A11830F41E5996FD00CBE087 /* StringExt.swift in Sources */,
537 | 8218E4D02211BEA8007AAAF3 /* TemplateImageView.swift in Sources */,
538 | 8218E4CA2211BE3B007AAAF3 /* RoundableView.swift in Sources */,
539 | 8218E4D32211BEDC007AAAF3 /* NibLoadable.swift in Sources */,
540 | A1D4453D1E59C9370014A250 /* NSAttributedStringExt.swift in Sources */,
541 | A14E0B121E1F9B3100DFC788 /* UIViewExt.swift in Sources */,
542 | 8242F0AB2189FE500075FDF3 /* CGRectExt.swift in Sources */,
543 | 8218E4CD2211BE8A007AAAF3 /* TemplateButton.swift in Sources */,
544 | );
545 | runOnlyForDeploymentPostprocessing = 0;
546 | };
547 | A14E0ADF1E1F987C00DFC788 /* Sources */ = {
548 | isa = PBXSourcesBuildPhase;
549 | buildActionMask = 2147483647;
550 | files = (
551 | A1F2217D1E3E2C5500419B06 /* CoreGraphicsExtTests.swift in Sources */,
552 | A1F221711E3E0B8500419B06 /* ColorExtTests.swift in Sources */,
553 | A11830F71E599BF600CBE087 /* StringExtTests.swift in Sources */,
554 | 2E1DABDF20790C1700627CC2 /* UIImageExtTests.swift in Sources */,
555 | );
556 | runOnlyForDeploymentPostprocessing = 0;
557 | };
558 | /* End PBXSourcesBuildPhase section */
559 |
560 | /* Begin PBXTargetDependency section */
561 | A14E0AC81E1F986A00DFC788 /* PBXTargetDependency */ = {
562 | isa = PBXTargetDependency;
563 | target = A14E0ABB1E1F986A00DFC788 /* HandyUIKit-iOS */;
564 | targetProxy = A14E0AC71E1F986A00DFC788 /* PBXContainerItemProxy */;
565 | };
566 | A14E0AE61E1F987C00DFC788 /* PBXTargetDependency */ = {
567 | isa = PBXTargetDependency;
568 | target = A14E0ADA1E1F987C00DFC788 /* HandyUIKit-tvOS */;
569 | targetProxy = A14E0AE51E1F987C00DFC788 /* PBXContainerItemProxy */;
570 | };
571 | /* End PBXTargetDependency section */
572 |
573 | /* Begin XCBuildConfiguration section */
574 | A14E0ACE1E1F986A00DFC788 /* Debug */ = {
575 | isa = XCBuildConfiguration;
576 | buildSettings = {
577 | ALWAYS_SEARCH_USER_PATHS = NO;
578 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
579 | CLANG_ANALYZER_NONNULL = YES;
580 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
581 | CLANG_CXX_LIBRARY = "libc++";
582 | CLANG_ENABLE_MODULES = YES;
583 | CLANG_ENABLE_OBJC_ARC = YES;
584 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
585 | CLANG_WARN_BOOL_CONVERSION = YES;
586 | CLANG_WARN_COMMA = YES;
587 | CLANG_WARN_CONSTANT_CONVERSION = YES;
588 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
589 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
590 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
591 | CLANG_WARN_EMPTY_BODY = YES;
592 | CLANG_WARN_ENUM_CONVERSION = YES;
593 | CLANG_WARN_INFINITE_RECURSION = YES;
594 | CLANG_WARN_INT_CONVERSION = YES;
595 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
596 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
597 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
598 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
599 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
600 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
601 | CLANG_WARN_STRICT_PROTOTYPES = YES;
602 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
603 | CLANG_WARN_UNREACHABLE_CODE = YES;
604 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
605 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
606 | COPY_PHASE_STRIP = NO;
607 | CURRENT_PROJECT_VERSION = 1;
608 | DEBUG_INFORMATION_FORMAT = dwarf;
609 | ENABLE_STRICT_OBJC_MSGSEND = YES;
610 | ENABLE_TESTABILITY = YES;
611 | GCC_C_LANGUAGE_STANDARD = gnu99;
612 | GCC_DYNAMIC_NO_PIC = NO;
613 | GCC_NO_COMMON_BLOCKS = YES;
614 | GCC_OPTIMIZATION_LEVEL = 0;
615 | GCC_PREPROCESSOR_DEFINITIONS = (
616 | "DEBUG=1",
617 | "$(inherited)",
618 | );
619 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
620 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
621 | GCC_WARN_UNDECLARED_SELECTOR = YES;
622 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
623 | GCC_WARN_UNUSED_FUNCTION = YES;
624 | GCC_WARN_UNUSED_VARIABLE = YES;
625 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
626 | MTL_ENABLE_DEBUG_INFO = YES;
627 | ONLY_ACTIVE_ARCH = YES;
628 | SDKROOT = iphoneos;
629 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
630 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
631 | SWIFT_SWIFT3_OBJC_INFERENCE = Off;
632 | SWIFT_VERSION = 4.2;
633 | VERSIONING_SYSTEM = "apple-generic";
634 | VERSION_INFO_PREFIX = "";
635 | };
636 | name = Debug;
637 | };
638 | A14E0ACF1E1F986A00DFC788 /* Release */ = {
639 | isa = XCBuildConfiguration;
640 | buildSettings = {
641 | ALWAYS_SEARCH_USER_PATHS = NO;
642 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
643 | CLANG_ANALYZER_NONNULL = YES;
644 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
645 | CLANG_CXX_LIBRARY = "libc++";
646 | CLANG_ENABLE_MODULES = YES;
647 | CLANG_ENABLE_OBJC_ARC = YES;
648 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
649 | CLANG_WARN_BOOL_CONVERSION = YES;
650 | CLANG_WARN_COMMA = YES;
651 | CLANG_WARN_CONSTANT_CONVERSION = YES;
652 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
653 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
654 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
655 | CLANG_WARN_EMPTY_BODY = YES;
656 | CLANG_WARN_ENUM_CONVERSION = YES;
657 | CLANG_WARN_INFINITE_RECURSION = YES;
658 | CLANG_WARN_INT_CONVERSION = YES;
659 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
660 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
661 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
662 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
663 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
664 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
665 | CLANG_WARN_STRICT_PROTOTYPES = YES;
666 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
667 | CLANG_WARN_UNREACHABLE_CODE = YES;
668 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
669 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
670 | COPY_PHASE_STRIP = NO;
671 | CURRENT_PROJECT_VERSION = 1;
672 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
673 | ENABLE_NS_ASSERTIONS = NO;
674 | ENABLE_STRICT_OBJC_MSGSEND = YES;
675 | GCC_C_LANGUAGE_STANDARD = gnu99;
676 | GCC_NO_COMMON_BLOCKS = YES;
677 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
678 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
679 | GCC_WARN_UNDECLARED_SELECTOR = YES;
680 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
681 | GCC_WARN_UNUSED_FUNCTION = YES;
682 | GCC_WARN_UNUSED_VARIABLE = YES;
683 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
684 | MTL_ENABLE_DEBUG_INFO = NO;
685 | SDKROOT = iphoneos;
686 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
687 | SWIFT_SWIFT3_OBJC_INFERENCE = Off;
688 | SWIFT_VERSION = 4.2;
689 | VALIDATE_PRODUCT = YES;
690 | VERSIONING_SYSTEM = "apple-generic";
691 | VERSION_INFO_PREFIX = "";
692 | };
693 | name = Release;
694 | };
695 | A14E0AD11E1F986A00DFC788 /* Debug */ = {
696 | isa = XCBuildConfiguration;
697 | buildSettings = {
698 | CLANG_ENABLE_MODULES = YES;
699 | CODE_SIGN_IDENTITY = "";
700 | DEFINES_MODULE = YES;
701 | DEVELOPMENT_TEAM = "";
702 | DYLIB_COMPATIBILITY_VERSION = 1;
703 | DYLIB_CURRENT_VERSION = 1;
704 | DYLIB_INSTALL_NAME_BASE = "@rpath";
705 | INFOPLIST_FILE = Frameworks/SupportingFiles/Info.plist;
706 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
707 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
708 | OTHER_SWIFT_FLAGS = "-D IOS";
709 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKit;
710 | PRODUCT_NAME = HandyUIKit;
711 | SKIP_INSTALL = YES;
712 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
713 | SWIFT_VERSION = 5.0;
714 | TARGETED_DEVICE_FAMILY = "1,2";
715 | };
716 | name = Debug;
717 | };
718 | A14E0AD21E1F986A00DFC788 /* Release */ = {
719 | isa = XCBuildConfiguration;
720 | buildSettings = {
721 | CLANG_ENABLE_MODULES = YES;
722 | CODE_SIGN_IDENTITY = "";
723 | DEFINES_MODULE = YES;
724 | DEVELOPMENT_TEAM = "";
725 | DYLIB_COMPATIBILITY_VERSION = 1;
726 | DYLIB_CURRENT_VERSION = 1;
727 | DYLIB_INSTALL_NAME_BASE = "@rpath";
728 | INFOPLIST_FILE = Frameworks/SupportingFiles/Info.plist;
729 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
730 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
731 | OTHER_SWIFT_FLAGS = "-D IOS";
732 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKit;
733 | PRODUCT_NAME = HandyUIKit;
734 | SKIP_INSTALL = YES;
735 | SWIFT_VERSION = 5.0;
736 | TARGETED_DEVICE_FAMILY = "1,2";
737 | };
738 | name = Release;
739 | };
740 | A14E0AD41E1F986A00DFC788 /* Debug */ = {
741 | isa = XCBuildConfiguration;
742 | buildSettings = {
743 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
744 | DEVELOPMENT_TEAM = 767S6EFMJ8;
745 | INFOPLIST_FILE = Tests/SupportingFiles/Info.plist;
746 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
747 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKitTests;
748 | PRODUCT_NAME = "$(TARGET_NAME)";
749 | SWIFT_VERSION = 5.0;
750 | TARGETED_DEVICE_FAMILY = "1,2";
751 | };
752 | name = Debug;
753 | };
754 | A14E0AD51E1F986A00DFC788 /* Release */ = {
755 | isa = XCBuildConfiguration;
756 | buildSettings = {
757 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
758 | DEVELOPMENT_TEAM = 767S6EFMJ8;
759 | INFOPLIST_FILE = Tests/SupportingFiles/Info.plist;
760 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
761 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKitTests;
762 | PRODUCT_NAME = "$(TARGET_NAME)";
763 | SWIFT_VERSION = 5.0;
764 | TARGETED_DEVICE_FAMILY = "1,2";
765 | };
766 | name = Release;
767 | };
768 | A14E0AED1E1F987C00DFC788 /* Debug */ = {
769 | isa = XCBuildConfiguration;
770 | buildSettings = {
771 | CLANG_ENABLE_MODULES = YES;
772 | CODE_SIGN_IDENTITY = "";
773 | DEFINES_MODULE = YES;
774 | DEVELOPMENT_TEAM = "";
775 | DYLIB_COMPATIBILITY_VERSION = 1;
776 | DYLIB_CURRENT_VERSION = 1;
777 | DYLIB_INSTALL_NAME_BASE = "@rpath";
778 | INFOPLIST_FILE = Frameworks/SupportingFiles/Info.plist;
779 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
780 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
781 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKit;
782 | PRODUCT_NAME = HandyUIKit;
783 | SDKROOT = appletvos;
784 | SKIP_INSTALL = YES;
785 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
786 | SWIFT_VERSION = 5.0;
787 | TARGETED_DEVICE_FAMILY = 3;
788 | TVOS_DEPLOYMENT_TARGET = 9.0;
789 | };
790 | name = Debug;
791 | };
792 | A14E0AEE1E1F987C00DFC788 /* Release */ = {
793 | isa = XCBuildConfiguration;
794 | buildSettings = {
795 | CLANG_ENABLE_MODULES = YES;
796 | CODE_SIGN_IDENTITY = "";
797 | DEFINES_MODULE = YES;
798 | DEVELOPMENT_TEAM = "";
799 | DYLIB_COMPATIBILITY_VERSION = 1;
800 | DYLIB_CURRENT_VERSION = 1;
801 | DYLIB_INSTALL_NAME_BASE = "@rpath";
802 | INFOPLIST_FILE = Frameworks/SupportingFiles/Info.plist;
803 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
804 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
805 | PRODUCT_BUNDLE_IDENTIFIER = com.flinesoft.HandyUIKit;
806 | PRODUCT_NAME = HandyUIKit;
807 | SDKROOT = appletvos;
808 | SKIP_INSTALL = YES;
809 | SWIFT_VERSION = 5.0;
810 | TARGETED_DEVICE_FAMILY = 3;
811 | TVOS_DEPLOYMENT_TARGET = 9.0;
812 | };
813 | name = Release;
814 | };
815 | A14E0AF01E1F987C00DFC788 /* Debug */ = {
816 | isa = XCBuildConfiguration;
817 | buildSettings = {
818 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
819 | DEVELOPMENT_TEAM = 767S6EFMJ8;
820 | INFOPLIST_FILE = Tests/SupportingFiles/Info.plist;
821 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
822 | PRODUCT_BUNDLE_IDENTIFIER = "com.flinesoft.HandyUIKit-tvOSTests";
823 | PRODUCT_NAME = "$(TARGET_NAME)";
824 | SDKROOT = appletvos;
825 | SWIFT_VERSION = 5.0;
826 | TARGETED_DEVICE_FAMILY = 3;
827 | TVOS_DEPLOYMENT_TARGET = 12.0;
828 | };
829 | name = Debug;
830 | };
831 | A14E0AF11E1F987C00DFC788 /* Release */ = {
832 | isa = XCBuildConfiguration;
833 | buildSettings = {
834 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
835 | DEVELOPMENT_TEAM = 767S6EFMJ8;
836 | INFOPLIST_FILE = Tests/SupportingFiles/Info.plist;
837 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
838 | PRODUCT_BUNDLE_IDENTIFIER = "com.flinesoft.HandyUIKit-tvOSTests";
839 | PRODUCT_NAME = "$(TARGET_NAME)";
840 | SDKROOT = appletvos;
841 | SWIFT_VERSION = 5.0;
842 | TARGETED_DEVICE_FAMILY = 3;
843 | TVOS_DEPLOYMENT_TARGET = 12.0;
844 | };
845 | name = Release;
846 | };
847 | /* End XCBuildConfiguration section */
848 |
849 | /* Begin XCConfigurationList section */
850 | A14E0AB61E1F986A00DFC788 /* Build configuration list for PBXProject "HandyUIKit" */ = {
851 | isa = XCConfigurationList;
852 | buildConfigurations = (
853 | A14E0ACE1E1F986A00DFC788 /* Debug */,
854 | A14E0ACF1E1F986A00DFC788 /* Release */,
855 | );
856 | defaultConfigurationIsVisible = 0;
857 | defaultConfigurationName = Release;
858 | };
859 | A14E0AD01E1F986A00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-iOS" */ = {
860 | isa = XCConfigurationList;
861 | buildConfigurations = (
862 | A14E0AD11E1F986A00DFC788 /* Debug */,
863 | A14E0AD21E1F986A00DFC788 /* Release */,
864 | );
865 | defaultConfigurationIsVisible = 0;
866 | defaultConfigurationName = Release;
867 | };
868 | A14E0AD31E1F986A00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-iOS_Tests" */ = {
869 | isa = XCConfigurationList;
870 | buildConfigurations = (
871 | A14E0AD41E1F986A00DFC788 /* Debug */,
872 | A14E0AD51E1F986A00DFC788 /* Release */,
873 | );
874 | defaultConfigurationIsVisible = 0;
875 | defaultConfigurationName = Release;
876 | };
877 | A14E0AEC1E1F987C00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-tvOS" */ = {
878 | isa = XCConfigurationList;
879 | buildConfigurations = (
880 | A14E0AED1E1F987C00DFC788 /* Debug */,
881 | A14E0AEE1E1F987C00DFC788 /* Release */,
882 | );
883 | defaultConfigurationIsVisible = 0;
884 | defaultConfigurationName = Release;
885 | };
886 | A14E0AEF1E1F987C00DFC788 /* Build configuration list for PBXNativeTarget "HandyUIKit-tvOS_Tests" */ = {
887 | isa = XCConfigurationList;
888 | buildConfigurations = (
889 | A14E0AF01E1F987C00DFC788 /* Debug */,
890 | A14E0AF11E1F987C00DFC788 /* Release */,
891 | );
892 | defaultConfigurationIsVisible = 0;
893 | defaultConfigurationName = Release;
894 | };
895 | /* End XCConfigurationList section */
896 | };
897 | rootObject = A14E0AB31E1F986A00DFC788 /* Project object */;
898 | }
899 |
--------------------------------------------------------------------------------