From 7bd2e033c706758e98bf5524e01fda200fe9f476 Mon Sep 17 00:00:00 2001 From: Ryazapov Date: Tue, 7 Jun 2016 20:23:12 +0300 Subject: [PATCH 1/2] complete task --- Film.h | 10 + Film.m | 12 +- Lesson20.xcodeproj/project.pbxproj | 52 +- .../xcschemes/Lesson20.xcscheme | 91 + .../xcschemes/xcschememanagement.plist | 22 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24610 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 17 + .../AppIcon.appiconset/Contents.json | 5 + Lesson20/Base.lproj/LaunchScreen.storyboard | 6 +- Lesson20/Base.lproj/Main.storyboard | 122 +- Lesson20/DetailViewController.h | 3 + Lesson20/DetailViewController.m | 51 +- Lesson20/FilmsTableViewCell.m | 4 +- Lesson20/FilmsTableViewCell.xib | 40 +- Lesson20/ViewController.m | 35 +- Podfile | 7 +- Podfile.lock | 7 +- .../Private/MBProgressHUD/MBProgressHUD.h | 1 + .../Public/MBProgressHUD/MBProgressHUD.h | 1 + Pods/MBProgressHUD/LICENSE | 19 + Pods/MBProgressHUD/MBProgressHUD.h | 521 +++ Pods/MBProgressHUD/MBProgressHUD.m | 1033 +++++ Pods/MBProgressHUD/README.mdown | 101 + Pods/Manifest.lock | 7 +- Pods/Pods.xcodeproj/project.pbxproj | 4110 ++++------------- .../xcschemes/MBProgressHUD.xcscheme} | 6 +- .../xcschemes/Mantle.xcscheme | 2 +- .../xcschemes/Pods-Lesson20.xcscheme | 60 + .../xcschemes/SDWebImage.xcscheme | 2 +- .../xcschemes/xcschememanagement.plist | 24 +- .../MBProgressHUD/MBProgressHUD-dummy.m | 5 + .../MBProgressHUD/MBProgressHUD-prefix.pch | 4 + .../MBProgressHUD/MBProgressHUD.xcconfig | 9 + .../Mantle/Mantle.xcconfig | 8 +- .../Pods-Lesson20-acknowledgements.markdown} | 24 +- .../Pods-Lesson20-acknowledgements.plist} | 28 +- .../Pods-Lesson20/Pods-Lesson20-dummy.m | 5 + .../Pods-Lesson20-frameworks.sh} | 6 +- .../Pods-Lesson20/Pods-Lesson20-resources.sh | 102 + .../Pods-Lesson20.debug.xcconfig | 8 + .../Pods-Lesson20.release.xcconfig | 8 + Pods/Target Support Files/Pods/Pods-dummy.m | 5 - .../Pods/Pods-resources.sh | 95 - .../Pods/Pods.debug.xcconfig | 5 - .../Pods/Pods.release.xcconfig | 5 - .../SDWebImage/SDWebImage.xcconfig | 8 +- 46 files changed, 3381 insertions(+), 3315 deletions(-) create mode 100644 Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Lesson20.xcscheme create mode 100644 Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 120000 Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h create mode 120000 Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h create mode 100644 Pods/MBProgressHUD/LICENSE create mode 100644 Pods/MBProgressHUD/MBProgressHUD.h create mode 100644 Pods/MBProgressHUD/MBProgressHUD.m create mode 100644 Pods/MBProgressHUD/README.mdown rename Pods/Pods.xcodeproj/xcuserdata/{azat.xcuserdatad/xcschemes/Pods.xcscheme => eduard.xcuserdatad/xcschemes/MBProgressHUD.xcscheme} (91%) rename Pods/Pods.xcodeproj/xcuserdata/{azat.xcuserdatad => eduard.xcuserdatad}/xcschemes/Mantle.xcscheme (96%) create mode 100644 Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Pods-Lesson20.xcscheme rename Pods/Pods.xcodeproj/xcuserdata/{azat.xcuserdatad => eduard.xcuserdatad}/xcschemes/SDWebImage.xcscheme (96%) rename Pods/Pods.xcodeproj/xcuserdata/{azat.xcuserdatad => eduard.xcuserdatad}/xcschemes/xcschememanagement.plist (58%) create mode 100644 Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m create mode 100644 Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch create mode 100644 Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig rename Pods/Target Support Files/{Pods/Pods-acknowledgements.markdown => Pods-Lesson20/Pods-Lesson20-acknowledgements.markdown} (76%) rename Pods/Target Support Files/{Pods/Pods-acknowledgements.plist => Pods-Lesson20/Pods-Lesson20-acknowledgements.plist} (77%) create mode 100644 Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-dummy.m rename Pods/Target Support Files/{Pods/Pods-frameworks.sh => Pods-Lesson20/Pods-Lesson20-frameworks.sh} (93%) create mode 100755 Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-resources.sh create mode 100644 Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.debug.xcconfig create mode 100644 Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig delete mode 100644 Pods/Target Support Files/Pods/Pods-dummy.m delete mode 100755 Pods/Target Support Files/Pods/Pods-resources.sh delete mode 100644 Pods/Target Support Files/Pods/Pods.debug.xcconfig delete mode 100644 Pods/Target Support Files/Pods/Pods.release.xcconfig diff --git a/Film.h b/Film.h index 8f5c98f..ebe8879 100644 --- a/Film.h +++ b/Film.h @@ -9,7 +9,17 @@ #import @interface Film : MTLModel + +@property (nonatomic, strong) NSString *ID; @property (nonatomic, strong) NSString *name; @property (nonatomic, strong) NSString *imageURL; +@property (nonatomic, strong) NSString *rating; @property (nonatomic, strong) NSString *premiereDate; +@property (nonatomic, strong) NSString *country; +@property (nonatomic, strong) NSString *ratingMPAA; +@property (nonatomic, strong) NSString *filmLength; +@property (nonatomic, strong) NSString *filmDescription; +@property (nonatomic, strong) NSString *genre; +@property (nonatomic, strong) NSString *slogan; + @end diff --git a/Film.m b/Film.m index 76aed7d..ac7d48f 100644 --- a/Film.m +++ b/Film.m @@ -11,9 +11,17 @@ @implementation Film + (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ @"name" : @"nameRU", + return @{ @"ID" : @"id", + @"name" : @"nameRU", @"imageURL" : @"posterURL", - @"premiereDate" : @"premiereRU" }; + @"premiereDate" : @"premiereRU", + @"rating" : @"ratingData.rating", + @"country" : @"country", + @"filmLength" : @"filmLength", + @"ratingMPAA" : @"ratingMPAA", + @"filmDescription" : @"description", + @"genre" : @"genre", + @"slogan" : @"slogan" }; } + (NSValueTransformer *)premiereDateJSONTransformer { diff --git a/Lesson20.xcodeproj/project.pbxproj b/Lesson20.xcodeproj/project.pbxproj index 3f03c2a..7818690 100644 --- a/Lesson20.xcodeproj/project.pbxproj +++ b/Lesson20.xcodeproj/project.pbxproj @@ -18,12 +18,12 @@ AA2557F51CD106AB0085836C /* FilmsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AA2557F31CD106AB0085836C /* FilmsTableViewCell.m */; }; AA2557F61CD106AB0085836C /* FilmsTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA2557F41CD106AB0085836C /* FilmsTableViewCell.xib */; }; AA2557F91CD10A750085836C /* Film.m in Sources */ = {isa = PBXBuildFile; fileRef = AA2557F81CD10A750085836C /* Film.m */; }; - E928E344D3A24C7C6783E040 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9714A66A325A9BD59BEC7260 /* libPods.a */; }; + CCFB3886B4F4360BE8F1AF50 /* libPods-Lesson20.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E7C3DBE12049E2FC1E846B2 /* libPods-Lesson20.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 53CD6597CE7DBEE54F5C7F13 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; - 9714A66A325A9BD59BEC7260 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E7C3DBE12049E2FC1E846B2 /* libPods-Lesson20.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lesson20.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3BDCB65A70E7C9819517DDC0 /* Pods-Lesson20.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lesson20.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig"; sourceTree = ""; }; AA2557D21CD0FF3A0085836C /* Lesson20.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Lesson20.app; sourceTree = BUILT_PRODUCTS_DIR; }; AA2557D61CD0FF3A0085836C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; AA2557D81CD0FF3A0085836C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -43,7 +43,7 @@ AA2557F41CD106AB0085836C /* FilmsTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilmsTableViewCell.xib; sourceTree = ""; }; AA2557F71CD10A750085836C /* Film.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Film.h; path = ../Film.h; sourceTree = ""; }; AA2557F81CD10A750085836C /* Film.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Film.m; path = ../Film.m; sourceTree = ""; }; - C1F34E95972618A100292669 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + ED411FA70849A23A02DED167 /* Pods-Lesson20.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lesson20.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -51,26 +51,26 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E928E344D3A24C7C6783E040 /* libPods.a in Frameworks */, + CCFB3886B4F4360BE8F1AF50 /* libPods-Lesson20.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1464E63E6AEE28BCBFB67086 /* Frameworks */ = { + 01A51946582338788C22779A /* Frameworks */ = { isa = PBXGroup; children = ( - 9714A66A325A9BD59BEC7260 /* libPods.a */, + 1E7C3DBE12049E2FC1E846B2 /* libPods-Lesson20.a */, ); name = Frameworks; sourceTree = ""; }; - 5A4F0337AFC3DADBB5CD3C5E /* Pods */ = { + 10BAA2C200D556298982DE3C /* Pods */ = { isa = PBXGroup; children = ( - C1F34E95972618A100292669 /* Pods.debug.xcconfig */, - 53CD6597CE7DBEE54F5C7F13 /* Pods.release.xcconfig */, + ED411FA70849A23A02DED167 /* Pods-Lesson20.debug.xcconfig */, + 3BDCB65A70E7C9819517DDC0 /* Pods-Lesson20.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -80,8 +80,8 @@ children = ( AA2557D41CD0FF3A0085836C /* Lesson20 */, AA2557D31CD0FF3A0085836C /* Products */, - 5A4F0337AFC3DADBB5CD3C5E /* Pods */, - 1464E63E6AEE28BCBFB67086 /* Frameworks */, + 10BAA2C200D556298982DE3C /* Pods */, + 01A51946582338788C22779A /* Frameworks */, ); sourceTree = ""; }; @@ -133,12 +133,12 @@ isa = PBXNativeTarget; buildConfigurationList = AA2557E91CD0FF3A0085836C /* Build configuration list for PBXNativeTarget "Lesson20" */; buildPhases = ( - 35185BF72085ED99F77833F9 /* Check Pods Manifest.lock */, + 5C81BD7F077D58AF60E5E43D /* 📦 Check Pods Manifest.lock */, AA2557CE1CD0FF3A0085836C /* Sources */, AA2557CF1CD0FF3A0085836C /* Frameworks */, AA2557D01CD0FF3A0085836C /* Resources */, - FCAF9372F095E6DA4EB5F759 /* Embed Pods Frameworks */, - 1E1A3090F60603283FD73924 /* Copy Pods Resources */, + 3A57390F323E77899FB0E44D /* 📦 Embed Pods Frameworks */, + 3F50709B3D600CF7B06A7FF9 /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -196,49 +196,49 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 1E1A3090F60603283FD73924 /* Copy Pods Resources */ = { + 3A57390F323E77899FB0E44D /* 📦 Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "📦 Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 35185BF72085ED99F77833F9 /* Check Pods Manifest.lock */ = { + 3F50709B3D600CF7B06A7FF9 /* 📦 Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "📦 Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-resources.sh\"\n"; showEnvVarsInLog = 0; }; - FCAF9372F095E6DA4EB5F759 /* Embed Pods Frameworks */ = { + 5C81BD7F077D58AF60E5E43D /* 📦 Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Embed Pods Frameworks"; + name = "📦 Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -366,7 +366,7 @@ }; AA2557EA1CD0FF3A0085836C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1F34E95972618A100292669 /* Pods.debug.xcconfig */; + baseConfigurationReference = ED411FA70849A23A02DED167 /* Pods-Lesson20.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = Lesson20/Info.plist; @@ -379,7 +379,7 @@ }; AA2557EB1CD0FF3A0085836C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 53CD6597CE7DBEE54F5C7F13 /* Pods.release.xcconfig */; + baseConfigurationReference = 3BDCB65A70E7C9819517DDC0 /* Pods-Lesson20.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = Lesson20/Info.plist; diff --git a/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Lesson20.xcscheme b/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Lesson20.xcscheme new file mode 100644 index 0000000..3ae92ff --- /dev/null +++ b/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Lesson20.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist b/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..c8543ea --- /dev/null +++ b/Lesson20.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Lesson20.xcscheme + + orderHint + 4 + + + SuppressBuildableAutocreation + + AA2557D11CD0FF3A0085836C + + primary + + + + + diff --git a/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/UserInterfaceState.xcuserstate b/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2a521d95fe8345e22e2dfface2d4d75a8d2b2304 GIT binary patch literal 24610 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 literal 0 HcmV?d00001 diff --git a/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..e2573a5 --- /dev/null +++ b/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/Lesson20/Assets.xcassets/AppIcon.appiconset/Contents.json b/Lesson20/Assets.xcassets/AppIcon.appiconset/Contents.json index 36d2c80..eeea76c 100644 --- a/Lesson20/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Lesson20/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -59,6 +59,11 @@ "idiom" : "ipad", "size" : "76x76", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" } ], "info" : { diff --git a/Lesson20/Base.lproj/LaunchScreen.storyboard b/Lesson20/Base.lproj/LaunchScreen.storyboard index 2e721e1..f4fc7f7 100644 --- a/Lesson20/Base.lproj/LaunchScreen.storyboard +++ b/Lesson20/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,8 @@ - + - + + @@ -15,7 +16,6 @@ - diff --git a/Lesson20/Base.lproj/Main.storyboard b/Lesson20/Base.lproj/Main.storyboard index e3f5df0..b38ec65 100644 --- a/Lesson20/Base.lproj/Main.storyboard +++ b/Lesson20/Base.lproj/Main.storyboard @@ -1,8 +1,9 @@ - + + @@ -55,7 +56,7 @@ - + @@ -87,7 +88,7 @@ - + @@ -117,7 +118,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -126,6 +230,16 @@ + + + + + + + + + + @@ -171,6 +285,6 @@ - + diff --git a/Lesson20/DetailViewController.h b/Lesson20/DetailViewController.h index e954638..2813f38 100644 --- a/Lesson20/DetailViewController.h +++ b/Lesson20/DetailViewController.h @@ -7,7 +7,10 @@ // #import +#import "Film.h" @interface DetailViewController : UIViewController +@property Film *film; + @end diff --git a/Lesson20/DetailViewController.m b/Lesson20/DetailViewController.m index c163f62..461bd5b 100644 --- a/Lesson20/DetailViewController.m +++ b/Lesson20/DetailViewController.m @@ -7,8 +7,19 @@ // #import "DetailViewController.h" +#import +#import "MBProgressHUD.h" +#import "NetManager.h" @interface DetailViewController () +@property (weak, nonatomic) IBOutlet UIImageView *posterImageView; +@property (weak, nonatomic) IBOutlet UINavigationItem *filmNameNavigationItem; +@property (weak, nonatomic) IBOutlet UILabel *ratingLabel; +@property (weak, nonatomic) IBOutlet UILabel *PGratingLabel; +@property (weak, nonatomic) IBOutlet UILabel *countryLabel; +@property (weak, nonatomic) IBOutlet UILabel *genreLabel; +@property (weak, nonatomic) IBOutlet UILabel *sloganLabel; +@property (weak, nonatomic) IBOutlet UITextView *descriptionTextView; @end @@ -16,30 +27,30 @@ @implementation DetailViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; + dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ + [[NetManager sharedInstance] loadRequestWithPath:[NSString stringWithFormat:@"%@%@", @"http://api.kinopoisk.cf/getFilm?filmID=", self.film.ID] completion:^(id data, NSError *error) { + if (data) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.film = [MTLJSONAdapter modelOfClass:[Film class] fromJSONDictionary:data error:nil]; + NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://st.kp.yandex.net/images/%@", self.film.imageURL]]; + [self.posterImageView sd_setImageWithURL:url]; + self.filmNameNavigationItem.title = self.film.name; + self.ratingLabel.text = self.film.rating; + self.PGratingLabel.text = self.film.ratingMPAA; + self.countryLabel.text = self.film.country; + self.sloganLabel.text = self.film.slogan; + self.genreLabel.text = self.film.genre; + self.descriptionTextView.text = self.film.filmDescription; + [hud hide:YES]; + }); + } + }]; + }); } - (IBAction)doneButtonDidClick:(id)sender { // [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -//- (void)dealloc { -// NSLog(@"Detail view controller did dealloc"); -//} - -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - @end diff --git a/Lesson20/FilmsTableViewCell.m b/Lesson20/FilmsTableViewCell.m index 772b0d2..42ac451 100644 --- a/Lesson20/FilmsTableViewCell.m +++ b/Lesson20/FilmsTableViewCell.m @@ -27,8 +27,8 @@ - (void)setModel:(Film *)model { self.premiereLabel.text = model.premiereDate; NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://st.kp.yandex.net/images/%@", model.imageURL]]; [self.posterImage sd_setImageWithURL:url]; -// Film *model2; -// [model mergeValuesForKeysFromModel:model2]; + self.ratingLabel.text = model.rating; + self.lengthLabel.text = model.filmLength; } @end diff --git a/Lesson20/FilmsTableViewCell.xib b/Lesson20/FilmsTableViewCell.xib index 94e9070..96c526f 100644 --- a/Lesson20/FilmsTableViewCell.xib +++ b/Lesson20/FilmsTableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -12,35 +12,35 @@ - + - + - - + - - + + - + + + + + + + + + + + + + - + - + diff --git a/Lesson20/ViewController.m b/Lesson20/ViewController.m index ba967ec..7189bce 100644 --- a/Lesson20/ViewController.m +++ b/Lesson20/ViewController.m @@ -9,10 +9,15 @@ #import "ViewController.h" #import "NetManager.h" #import "FilmsTableViewCell.h" +#import "DetailViewController.h" #import "Film.h" +#import "MBProgressHUD.h" @interface ViewController () + @property (nonatomic, strong) NSArray *films; +@property NSInteger selectedItem; + @end @implementation ViewController @@ -20,12 +25,18 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerNib:[UINib nibWithNibName:@"FilmsTableViewCell" bundle:nil] forCellReuseIdentifier:@"FilmsTableViewCell"]; - [[NetManager sharedInstance] loadRequestWithPath:@"http://api.kinopoisk.cf/getTodayFilms" completion:^(id data, NSError *error) { - if (data) { - self.films = [MTLJSONAdapter modelsOfClass:[Film class] fromJSONArray:[data valueForKeyPath:@"filmsData"] error:nil]; - [self.tableView reloadData]; - } - }]; + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; + dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ + [[NetManager sharedInstance] loadRequestWithPath:@"http://api.kinopoisk.cf/getTodayFilms" completion:^(id data, NSError *error) { + if (data) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.films = [MTLJSONAdapter modelsOfClass:[Film class] fromJSONArray:[data valueForKeyPath:@"filmsData"] error:nil]; + [self.tableView reloadData]; + [hud hide:YES]; + }); + } + }]; + }); } - (IBAction)returnToListVC:(UIStoryboardSegue *)sender { @@ -52,4 +63,16 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath [self performSegueWithIdentifier:@"ShowDetail" sender:self]; } + +- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { + self.selectedItem = indexPath.row; + return indexPath; +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + UINavigationController *nvc = [segue destinationViewController]; + DetailViewController *vc = [[nvc viewControllers] firstObject]; + vc.film = self.films[self.selectedItem]; +} + @end diff --git a/Podfile b/Podfile index e26deab..7e90104 100644 --- a/Podfile +++ b/Podfile @@ -1,2 +1,5 @@ -pod 'Mantle' -pod 'SDWebImage' \ No newline at end of file +target ‘Lesson20’ do + pod 'Mantle' + pod 'SDWebImage’ + pod 'MBProgressHUD' +end \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock index 2607753..cec9706 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -2,16 +2,21 @@ PODS: - Mantle (2.0.7): - Mantle/extobjc (= 2.0.7) - Mantle/extobjc (2.0.7) + - MBProgressHUD (0.9.2) - SDWebImage (3.7.5): - SDWebImage/Core (= 3.7.5) - SDWebImage/Core (3.7.5) DEPENDENCIES: - Mantle + - MBProgressHUD - SDWebImage SPEC CHECKSUMS: Mantle: bc40bb061d8c2c6fb48d5083e04d928c3b7f73d9 + MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1 SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461 -COCOAPODS: 0.39.0 +PODFILE CHECKSUM: 3fa150c16d70eb02295eff6a529039c3c5b2e083 + +COCOAPODS: 1.0.0 diff --git a/Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h b/Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h new file mode 120000 index 0000000..19ed4db --- /dev/null +++ b/Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h @@ -0,0 +1 @@ +../../../MBProgressHUD/MBProgressHUD.h \ No newline at end of file diff --git a/Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h b/Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h new file mode 120000 index 0000000..19ed4db --- /dev/null +++ b/Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h @@ -0,0 +1 @@ +../../../MBProgressHUD/MBProgressHUD.h \ No newline at end of file diff --git a/Pods/MBProgressHUD/LICENSE b/Pods/MBProgressHUD/LICENSE new file mode 100644 index 0000000..0e357d1 --- /dev/null +++ b/Pods/MBProgressHUD/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2009-2015 Matej Bukovinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Pods/MBProgressHUD/MBProgressHUD.h b/Pods/MBProgressHUD/MBProgressHUD.h new file mode 100644 index 0000000..40e71a9 --- /dev/null +++ b/Pods/MBProgressHUD/MBProgressHUD.h @@ -0,0 +1,521 @@ +// +// MBProgressHUD.h +// Version 0.9.2 +// Created by Matej Bukovinski on 2.4.09. +// + +// This code is distributed under the terms and conditions of the MIT license. + +// Copyright (c) 2009-2015 Matej Bukovinski +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import +#import + +@protocol MBProgressHUDDelegate; + + +typedef NS_ENUM(NSInteger, MBProgressHUDMode) { + /** Progress is shown using an UIActivityIndicatorView. This is the default. */ + MBProgressHUDModeIndeterminate, + /** Progress is shown using a round, pie-chart like, progress view. */ + MBProgressHUDModeDeterminate, + /** Progress is shown using a horizontal progress bar */ + MBProgressHUDModeDeterminateHorizontalBar, + /** Progress is shown using a ring-shaped progress view. */ + MBProgressHUDModeAnnularDeterminate, + /** Shows a custom view */ + MBProgressHUDModeCustomView, + /** Shows only labels */ + MBProgressHUDModeText +}; + +typedef NS_ENUM(NSInteger, MBProgressHUDAnimation) { + /** Opacity animation */ + MBProgressHUDAnimationFade, + /** Opacity + scale animation */ + MBProgressHUDAnimationZoom, + MBProgressHUDAnimationZoomOut = MBProgressHUDAnimationZoom, + MBProgressHUDAnimationZoomIn +}; + + +#ifndef MB_INSTANCETYPE +#if __has_feature(objc_instancetype) + #define MB_INSTANCETYPE instancetype +#else + #define MB_INSTANCETYPE id +#endif +#endif + +#ifndef MB_STRONG +#if __has_feature(objc_arc) + #define MB_STRONG strong +#else + #define MB_STRONG retain +#endif +#endif + +#ifndef MB_WEAK +#if __has_feature(objc_arc_weak) + #define MB_WEAK weak +#elif __has_feature(objc_arc) + #define MB_WEAK unsafe_unretained +#else + #define MB_WEAK assign +#endif +#endif + +#if NS_BLOCKS_AVAILABLE +typedef void (^MBProgressHUDCompletionBlock)(); +#endif + + +/** + * Displays a simple HUD window containing a progress indicator and two optional labels for short messages. + * + * This is a simple drop-in class for displaying a progress HUD view similar to Apple's private UIProgressHUD class. + * The MBProgressHUD window spans over the entire space given to it by the initWithFrame constructor and catches all + * user input on this region, thereby preventing the user operations on components below the view. The HUD itself is + * drawn centered as a rounded semi-transparent view which resizes depending on the user specified content. + * + * This view supports four modes of operation: + * - MBProgressHUDModeIndeterminate - shows a UIActivityIndicatorView + * - MBProgressHUDModeDeterminate - shows a custom round progress indicator + * - MBProgressHUDModeAnnularDeterminate - shows a custom annular progress indicator + * - MBProgressHUDModeCustomView - shows an arbitrary, user specified view (see `customView`) + * + * All three modes can have optional labels assigned: + * - If the labelText property is set and non-empty then a label containing the provided content is placed below the + * indicator view. + * - If also the detailsLabelText property is set then another label is placed below the first label. + */ +@interface MBProgressHUD : UIView + +/** + * Creates a new HUD, adds it to provided view and shows it. The counterpart to this method is hideHUDForView:animated:. + * + * @note This method sets `removeFromSuperViewOnHide`. The HUD will automatically be removed from the view hierarchy when hidden. + * + * @param view The view that the HUD will be added to + * @param animated If set to YES the HUD will appear using the current animationType. If set to NO the HUD will not use + * animations while appearing. + * @return A reference to the created HUD. + * + * @see hideHUDForView:animated: + * @see animationType + */ ++ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view animated:(BOOL)animated; + +/** + * Finds the top-most HUD subview and hides it. The counterpart to this method is showHUDAddedTo:animated:. + * + * @note This method sets `removeFromSuperViewOnHide`. The HUD will automatically be removed from the view hierarchy when hidden. + * + * @param view The view that is going to be searched for a HUD subview. + * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use + * animations while disappearing. + * @return YES if a HUD was found and removed, NO otherwise. + * + * @see showHUDAddedTo:animated: + * @see animationType + */ ++ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated; + +/** + * Finds all the HUD subviews and hides them. + * + * @note This method sets `removeFromSuperViewOnHide`. The HUDs will automatically be removed from the view hierarchy when hidden. + * + * @param view The view that is going to be searched for HUD subviews. + * @param animated If set to YES the HUDs will disappear using the current animationType. If set to NO the HUDs will not use + * animations while disappearing. + * @return the number of HUDs found and removed. + * + * @see hideHUDForView:animated: + * @see animationType + */ ++ (NSUInteger)hideAllHUDsForView:(UIView *)view animated:(BOOL)animated; + +/** + * Finds the top-most HUD subview and returns it. + * + * @param view The view that is going to be searched. + * @return A reference to the last HUD subview discovered. + */ ++ (MB_INSTANCETYPE)HUDForView:(UIView *)view; + +/** + * Finds all HUD subviews and returns them. + * + * @param view The view that is going to be searched. + * @return All found HUD views (array of MBProgressHUD objects). + */ ++ (NSArray *)allHUDsForView:(UIView *)view; + +/** + * A convenience constructor that initializes the HUD with the window's bounds. Calls the designated constructor with + * window.bounds as the parameter. + * + * @param window The window instance that will provide the bounds for the HUD. Should be the same instance as + * the HUD's superview (i.e., the window that the HUD will be added to). + */ +- (id)initWithWindow:(UIWindow *)window; + +/** + * A convenience constructor that initializes the HUD with the view's bounds. Calls the designated constructor with + * view.bounds as the parameter + * + * @param view The view instance that will provide the bounds for the HUD. Should be the same instance as + * the HUD's superview (i.e., the view that the HUD will be added to). + */ +- (id)initWithView:(UIView *)view; + +/** + * Display the HUD. You need to make sure that the main thread completes its run loop soon after this method call so + * the user interface can be updated. Call this method when your task is already set-up to be executed in a new thread + * (e.g., when using something like NSOperation or calling an asynchronous call like NSURLRequest). + * + * @param animated If set to YES the HUD will appear using the current animationType. If set to NO the HUD will not use + * animations while appearing. + * + * @see animationType + */ +- (void)show:(BOOL)animated; + +/** + * Hide the HUD. This still calls the hudWasHidden: delegate. This is the counterpart of the show: method. Use it to + * hide the HUD when your task completes. + * + * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use + * animations while disappearing. + * + * @see animationType + */ +- (void)hide:(BOOL)animated; + +/** + * Hide the HUD after a delay. This still calls the hudWasHidden: delegate. This is the counterpart of the show: method. Use it to + * hide the HUD when your task completes. + * + * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use + * animations while disappearing. + * @param delay Delay in seconds until the HUD is hidden. + * + * @see animationType + */ +- (void)hide:(BOOL)animated afterDelay:(NSTimeInterval)delay; + +/** + * Shows the HUD while a background task is executing in a new thread, then hides the HUD. + * + * This method also takes care of autorelease pools so your method does not have to be concerned with setting up a + * pool. + * + * @param method The method to be executed while the HUD is shown. This method will be executed in a new thread. + * @param target The object that the target method belongs to. + * @param object An optional object to be passed to the method. + * @param animated If set to YES the HUD will (dis)appear using the current animationType. If set to NO the HUD will not use + * animations while (dis)appearing. + */ +- (void)showWhileExecuting:(SEL)method onTarget:(id)target withObject:(id)object animated:(BOOL)animated; + +#if NS_BLOCKS_AVAILABLE + +/** + * Shows the HUD while a block is executing on a background queue, then hides the HUD. + * + * @see showAnimated:whileExecutingBlock:onQueue:completionBlock: + */ +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block; + +/** + * Shows the HUD while a block is executing on a background queue, then hides the HUD. + * + * @see showAnimated:whileExecutingBlock:onQueue:completionBlock: + */ +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block completionBlock:(MBProgressHUDCompletionBlock)completion; + +/** + * Shows the HUD while a block is executing on the specified dispatch queue, then hides the HUD. + * + * @see showAnimated:whileExecutingBlock:onQueue:completionBlock: + */ +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue; + +/** + * Shows the HUD while a block is executing on the specified dispatch queue, executes completion block on the main queue, and then hides the HUD. + * + * @param animated If set to YES the HUD will (dis)appear using the current animationType. If set to NO the HUD will + * not use animations while (dis)appearing. + * @param block The block to be executed while the HUD is shown. + * @param queue The dispatch queue on which the block should be executed. + * @param completion The block to be executed on completion. + * + * @see completionBlock + */ +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue + completionBlock:(MBProgressHUDCompletionBlock)completion; + +/** + * A block that gets called after the HUD was completely hidden. + */ +@property (copy) MBProgressHUDCompletionBlock completionBlock; + +#endif + +/** + * MBProgressHUD operation mode. The default is MBProgressHUDModeIndeterminate. + * + * @see MBProgressHUDMode + */ +@property (assign) MBProgressHUDMode mode; + +/** + * The animation type that should be used when the HUD is shown and hidden. + * + * @see MBProgressHUDAnimation + */ +@property (assign) MBProgressHUDAnimation animationType; + +/** + * The UIView (e.g., a UIImageView) to be shown when the HUD is in MBProgressHUDModeCustomView. + * For best results use a 37 by 37 pixel view (so the bounds match the built in indicator bounds). + */ +@property (MB_STRONG) UIView *customView; + +/** + * The HUD delegate object. + * + * @see MBProgressHUDDelegate + */ +@property (MB_WEAK) id delegate; + +/** + * An optional short message to be displayed below the activity indicator. The HUD is automatically resized to fit + * the entire text. If the text is too long it will get clipped by displaying "..." at the end. If left unchanged or + * set to @"", then no message is displayed. + */ +@property (copy) NSString *labelText; + +/** + * An optional details message displayed below the labelText message. This message is displayed only if the labelText + * property is also set and is different from an empty string (@""). The details text can span multiple lines. + */ +@property (copy) NSString *detailsLabelText; + +/** + * The opacity of the HUD window. Defaults to 0.8 (80% opacity). + */ +@property (assign) float opacity; + +/** + * The color of the HUD window. Defaults to black. If this property is set, color is set using + * this UIColor and the opacity property is not used. using retain because performing copy on + * UIColor base colors (like [UIColor greenColor]) cause problems with the copyZone. + */ +@property (MB_STRONG) UIColor *color; + +/** + * The x-axis offset of the HUD relative to the centre of the superview. + */ +@property (assign) float xOffset; + +/** + * The y-axis offset of the HUD relative to the centre of the superview. + */ +@property (assign) float yOffset; + +/** + * The amount of space between the HUD edge and the HUD elements (labels, indicators or custom views). + * Defaults to 20.0 + */ +@property (assign) float margin; + +/** + * The corner radius for the HUD + * Defaults to 10.0 + */ +@property (assign) float cornerRadius; + +/** + * Cover the HUD background view with a radial gradient. + */ +@property (assign) BOOL dimBackground; + +/* + * Grace period is the time (in seconds) that the invoked method may be run without + * showing the HUD. If the task finishes before the grace time runs out, the HUD will + * not be shown at all. + * This may be used to prevent HUD display for very short tasks. + * Defaults to 0 (no grace time). + * Grace time functionality is only supported when the task status is known! + * @see taskInProgress + */ +@property (assign) float graceTime; + +/** + * The minimum time (in seconds) that the HUD is shown. + * This avoids the problem of the HUD being shown and than instantly hidden. + * Defaults to 0 (no minimum show time). + */ +@property (assign) float minShowTime; + +/** + * Indicates that the executed operation is in progress. Needed for correct graceTime operation. + * If you don't set a graceTime (different than 0.0) this does nothing. + * This property is automatically set when using showWhileExecuting:onTarget:withObject:animated:. + * When threading is done outside of the HUD (i.e., when the show: and hide: methods are used directly), + * you need to set this property when your task starts and completes in order to have normal graceTime + * functionality. + */ +@property (assign) BOOL taskInProgress; + +/** + * Removes the HUD from its parent view when hidden. + * Defaults to NO. + */ +@property (assign) BOOL removeFromSuperViewOnHide; + +/** + * Font to be used for the main label. Set this property if the default is not adequate. + */ +@property (MB_STRONG) UIFont* labelFont; + +/** + * Color to be used for the main label. Set this property if the default is not adequate. + */ +@property (MB_STRONG) UIColor* labelColor; + +/** + * Font to be used for the details label. Set this property if the default is not adequate. + */ +@property (MB_STRONG) UIFont* detailsLabelFont; + +/** + * Color to be used for the details label. Set this property if the default is not adequate. + */ +@property (MB_STRONG) UIColor* detailsLabelColor; + +/** + * The color of the activity indicator. Defaults to [UIColor whiteColor] + * Does nothing on pre iOS 5. + */ +@property (MB_STRONG) UIColor *activityIndicatorColor; + +/** + * The progress of the progress indicator, from 0.0 to 1.0. Defaults to 0.0. + */ +@property (assign) float progress; + +/** + * The minimum size of the HUD bezel. Defaults to CGSizeZero (no minimum size). + */ +@property (assign) CGSize minSize; + + +/** + * The actual size of the HUD bezel. + * You can use this to limit touch handling on the bezel area only. + * @see https://github.com/jdg/MBProgressHUD/pull/200 + */ +@property (atomic, assign, readonly) CGSize size; + + +/** + * Force the HUD dimensions to be equal if possible. + */ +@property (assign, getter = isSquare) BOOL square; + +@end + + +@protocol MBProgressHUDDelegate + +@optional + +/** + * Called after the HUD was fully hidden from the screen. + */ +- (void)hudWasHidden:(MBProgressHUD *)hud; + +@end + + +/** + * A progress view for showing definite progress by filling up a circle (pie chart). + */ +@interface MBRoundProgressView : UIView + +/** + * Progress (0.0 to 1.0) + */ +@property (nonatomic, assign) float progress; + +/** + * Indicator progress color. + * Defaults to white [UIColor whiteColor] + */ +@property (nonatomic, MB_STRONG) UIColor *progressTintColor; + +/** + * Indicator background (non-progress) color. + * Defaults to translucent white (alpha 0.1) + */ +@property (nonatomic, MB_STRONG) UIColor *backgroundTintColor; + +/* + * Display mode - NO = round or YES = annular. Defaults to round. + */ +@property (nonatomic, assign, getter = isAnnular) BOOL annular; + +@end + + +/** + * A flat bar progress view. + */ +@interface MBBarProgressView : UIView + +/** + * Progress (0.0 to 1.0) + */ +@property (nonatomic, assign) float progress; + +/** + * Bar border line color. + * Defaults to white [UIColor whiteColor]. + */ +@property (nonatomic, MB_STRONG) UIColor *lineColor; + +/** + * Bar background color. + * Defaults to clear [UIColor clearColor]; + */ +@property (nonatomic, MB_STRONG) UIColor *progressRemainingColor; + +/** + * Bar progress color. + * Defaults to white [UIColor whiteColor]. + */ +@property (nonatomic, MB_STRONG) UIColor *progressColor; + +@end diff --git a/Pods/MBProgressHUD/MBProgressHUD.m b/Pods/MBProgressHUD/MBProgressHUD.m new file mode 100644 index 0000000..bf5f7ff --- /dev/null +++ b/Pods/MBProgressHUD/MBProgressHUD.m @@ -0,0 +1,1033 @@ +// +// MBProgressHUD.m +// Version 0.9.2 +// Created by Matej Bukovinski on 2.4.09. +// + +#import "MBProgressHUD.h" +#import + + +#if __has_feature(objc_arc) + #define MB_AUTORELEASE(exp) exp + #define MB_RELEASE(exp) exp + #define MB_RETAIN(exp) exp +#else + #define MB_AUTORELEASE(exp) [exp autorelease] + #define MB_RELEASE(exp) [exp release] + #define MB_RETAIN(exp) [exp retain] +#endif + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000 + #define MBLabelAlignmentCenter NSTextAlignmentCenter +#else + #define MBLabelAlignmentCenter UITextAlignmentCenter +#endif + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 + #define MB_TEXTSIZE(text, font) [text length] > 0 ? [text \ + sizeWithAttributes:@{NSFontAttributeName:font}] : CGSizeZero; +#else + #define MB_TEXTSIZE(text, font) [text length] > 0 ? [text sizeWithFont:font] : CGSizeZero; +#endif + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 + #define MB_MULTILINE_TEXTSIZE(text, font, maxSize, mode) [text length] > 0 ? [text \ + boundingRectWithSize:maxSize options:(NSStringDrawingUsesLineFragmentOrigin) \ + attributes:@{NSFontAttributeName:font} context:nil].size : CGSizeZero; +#else + #define MB_MULTILINE_TEXTSIZE(text, font, maxSize, mode) [text length] > 0 ? [text \ + sizeWithFont:font constrainedToSize:maxSize lineBreakMode:mode] : CGSizeZero; +#endif + +#ifndef kCFCoreFoundationVersionNumber_iOS_7_0 + #define kCFCoreFoundationVersionNumber_iOS_7_0 847.20 +#endif + +#ifndef kCFCoreFoundationVersionNumber_iOS_8_0 + #define kCFCoreFoundationVersionNumber_iOS_8_0 1129.15 +#endif + + +static const CGFloat kPadding = 4.f; +static const CGFloat kLabelFontSize = 16.f; +static const CGFloat kDetailsLabelFontSize = 12.f; + + +@interface MBProgressHUD () { + BOOL useAnimation; + SEL methodForExecution; + id targetForExecution; + id objectForExecution; + UILabel *label; + UILabel *detailsLabel; + BOOL isFinished; + CGAffineTransform rotationTransform; +} + +@property (atomic, MB_STRONG) UIView *indicator; +@property (atomic, MB_STRONG) NSTimer *graceTimer; +@property (atomic, MB_STRONG) NSTimer *minShowTimer; +@property (atomic, MB_STRONG) NSDate *showStarted; + +@end + + +@implementation MBProgressHUD + +#pragma mark - Properties + +@synthesize animationType; +@synthesize delegate; +@synthesize opacity; +@synthesize color; +@synthesize labelFont; +@synthesize labelColor; +@synthesize detailsLabelFont; +@synthesize detailsLabelColor; +@synthesize indicator; +@synthesize xOffset; +@synthesize yOffset; +@synthesize minSize; +@synthesize square; +@synthesize margin; +@synthesize dimBackground; +@synthesize graceTime; +@synthesize minShowTime; +@synthesize graceTimer; +@synthesize minShowTimer; +@synthesize taskInProgress; +@synthesize removeFromSuperViewOnHide; +@synthesize customView; +@synthesize showStarted; +@synthesize mode; +@synthesize labelText; +@synthesize detailsLabelText; +@synthesize progress; +@synthesize size; +@synthesize activityIndicatorColor; +#if NS_BLOCKS_AVAILABLE +@synthesize completionBlock; +#endif + +#pragma mark - Class methods + ++ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view animated:(BOOL)animated { + MBProgressHUD *hud = [[self alloc] initWithView:view]; + hud.removeFromSuperViewOnHide = YES; + [view addSubview:hud]; + [hud show:animated]; + return MB_AUTORELEASE(hud); +} + ++ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated { + MBProgressHUD *hud = [self HUDForView:view]; + if (hud != nil) { + hud.removeFromSuperViewOnHide = YES; + [hud hide:animated]; + return YES; + } + return NO; +} + ++ (NSUInteger)hideAllHUDsForView:(UIView *)view animated:(BOOL)animated { + NSArray *huds = [MBProgressHUD allHUDsForView:view]; + for (MBProgressHUD *hud in huds) { + hud.removeFromSuperViewOnHide = YES; + [hud hide:animated]; + } + return [huds count]; +} + ++ (MB_INSTANCETYPE)HUDForView:(UIView *)view { + NSEnumerator *subviewsEnum = [view.subviews reverseObjectEnumerator]; + for (UIView *subview in subviewsEnum) { + if ([subview isKindOfClass:self]) { + return (MBProgressHUD *)subview; + } + } + return nil; +} + ++ (NSArray *)allHUDsForView:(UIView *)view { + NSMutableArray *huds = [NSMutableArray array]; + NSArray *subviews = view.subviews; + for (UIView *aView in subviews) { + if ([aView isKindOfClass:self]) { + [huds addObject:aView]; + } + } + return [NSArray arrayWithArray:huds]; +} + +#pragma mark - Lifecycle + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // Set default values for properties + self.animationType = MBProgressHUDAnimationFade; + self.mode = MBProgressHUDModeIndeterminate; + self.labelText = nil; + self.detailsLabelText = nil; + self.opacity = 0.8f; + self.color = nil; + self.labelFont = [UIFont boldSystemFontOfSize:kLabelFontSize]; + self.labelColor = [UIColor whiteColor]; + self.detailsLabelFont = [UIFont boldSystemFontOfSize:kDetailsLabelFontSize]; + self.detailsLabelColor = [UIColor whiteColor]; + self.activityIndicatorColor = [UIColor whiteColor]; + self.xOffset = 0.0f; + self.yOffset = 0.0f; + self.dimBackground = NO; + self.margin = 20.0f; + self.cornerRadius = 10.0f; + self.graceTime = 0.0f; + self.minShowTime = 0.0f; + self.removeFromSuperViewOnHide = NO; + self.minSize = CGSizeZero; + self.square = NO; + self.contentMode = UIViewContentModeCenter; + self.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin + | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; + + // Transparent background + self.opaque = NO; + self.backgroundColor = [UIColor clearColor]; + // Make it invisible for now + self.alpha = 0.0f; + + taskInProgress = NO; + rotationTransform = CGAffineTransformIdentity; + + [self setupLabels]; + [self updateIndicators]; + [self registerForKVO]; + [self registerForNotifications]; + } + return self; +} + +- (id)initWithView:(UIView *)view { + NSAssert(view, @"View must not be nil."); + return [self initWithFrame:view.bounds]; +} + +- (id)initWithWindow:(UIWindow *)window { + return [self initWithView:window]; +} + +- (void)dealloc { + [self unregisterFromNotifications]; + [self unregisterFromKVO]; +#if !__has_feature(objc_arc) + [color release]; + [indicator release]; + [label release]; + [detailsLabel release]; + [labelText release]; + [detailsLabelText release]; + [graceTimer release]; + [minShowTimer release]; + [showStarted release]; + [customView release]; + [labelFont release]; + [labelColor release]; + [detailsLabelFont release]; + [detailsLabelColor release]; +#if NS_BLOCKS_AVAILABLE + [completionBlock release]; +#endif + [super dealloc]; +#endif +} + +#pragma mark - Show & hide + +- (void)show:(BOOL)animated { + NSAssert([NSThread isMainThread], @"MBProgressHUD needs to be accessed on the main thread."); + useAnimation = animated; + // If the grace time is set postpone the HUD display + if (self.graceTime > 0.0) { + NSTimer *newGraceTimer = [NSTimer timerWithTimeInterval:self.graceTime target:self selector:@selector(handleGraceTimer:) userInfo:nil repeats:NO]; + [[NSRunLoop currentRunLoop] addTimer:newGraceTimer forMode:NSRunLoopCommonModes]; + self.graceTimer = newGraceTimer; + } + // ... otherwise show the HUD imediately + else { + [self showUsingAnimation:useAnimation]; + } +} + +- (void)hide:(BOOL)animated { + NSAssert([NSThread isMainThread], @"MBProgressHUD needs to be accessed on the main thread."); + useAnimation = animated; + // If the minShow time is set, calculate how long the hud was shown, + // and pospone the hiding operation if necessary + if (self.minShowTime > 0.0 && showStarted) { + NSTimeInterval interv = [[NSDate date] timeIntervalSinceDate:showStarted]; + if (interv < self.minShowTime) { + self.minShowTimer = [NSTimer scheduledTimerWithTimeInterval:(self.minShowTime - interv) target:self + selector:@selector(handleMinShowTimer:) userInfo:nil repeats:NO]; + return; + } + } + // ... otherwise hide the HUD immediately + [self hideUsingAnimation:useAnimation]; +} + +- (void)hide:(BOOL)animated afterDelay:(NSTimeInterval)delay { + [self performSelector:@selector(hideDelayed:) withObject:[NSNumber numberWithBool:animated] afterDelay:delay]; +} + +- (void)hideDelayed:(NSNumber *)animated { + [self hide:[animated boolValue]]; +} + +#pragma mark - Timer callbacks + +- (void)handleGraceTimer:(NSTimer *)theTimer { + // Show the HUD only if the task is still running + if (taskInProgress) { + [self showUsingAnimation:useAnimation]; + } +} + +- (void)handleMinShowTimer:(NSTimer *)theTimer { + [self hideUsingAnimation:useAnimation]; +} + +#pragma mark - View Hierrarchy + +- (void)didMoveToSuperview { + [self updateForCurrentOrientationAnimated:NO]; +} + +#pragma mark - Internal show & hide operations + +- (void)showUsingAnimation:(BOOL)animated { + // Cancel any scheduled hideDelayed: calls + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + [self setNeedsDisplay]; + + if (animated && animationType == MBProgressHUDAnimationZoomIn) { + self.transform = CGAffineTransformConcat(rotationTransform, CGAffineTransformMakeScale(0.5f, 0.5f)); + } else if (animated && animationType == MBProgressHUDAnimationZoomOut) { + self.transform = CGAffineTransformConcat(rotationTransform, CGAffineTransformMakeScale(1.5f, 1.5f)); + } + self.showStarted = [NSDate date]; + // Fade in + if (animated) { + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.30]; + self.alpha = 1.0f; + if (animationType == MBProgressHUDAnimationZoomIn || animationType == MBProgressHUDAnimationZoomOut) { + self.transform = rotationTransform; + } + [UIView commitAnimations]; + } + else { + self.alpha = 1.0f; + } +} + +- (void)hideUsingAnimation:(BOOL)animated { + // Fade out + if (animated && showStarted) { + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.30]; + [UIView setAnimationDelegate:self]; + [UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)]; + // 0.02 prevents the hud from passing through touches during the animation the hud will get completely hidden + // in the done method + if (animationType == MBProgressHUDAnimationZoomIn) { + self.transform = CGAffineTransformConcat(rotationTransform, CGAffineTransformMakeScale(1.5f, 1.5f)); + } else if (animationType == MBProgressHUDAnimationZoomOut) { + self.transform = CGAffineTransformConcat(rotationTransform, CGAffineTransformMakeScale(0.5f, 0.5f)); + } + + self.alpha = 0.02f; + [UIView commitAnimations]; + } + else { + self.alpha = 0.0f; + [self done]; + } + self.showStarted = nil; +} + +- (void)animationFinished:(NSString *)animationID finished:(BOOL)finished context:(void*)context { + [self done]; +} + +- (void)done { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + isFinished = YES; + self.alpha = 0.0f; + if (removeFromSuperViewOnHide) { + [self removeFromSuperview]; + } +#if NS_BLOCKS_AVAILABLE + if (self.completionBlock) { + self.completionBlock(); + self.completionBlock = NULL; + } +#endif + if ([delegate respondsToSelector:@selector(hudWasHidden:)]) { + [delegate performSelector:@selector(hudWasHidden:) withObject:self]; + } +} + +#pragma mark - Threading + +- (void)showWhileExecuting:(SEL)method onTarget:(id)target withObject:(id)object animated:(BOOL)animated { + methodForExecution = method; + targetForExecution = MB_RETAIN(target); + objectForExecution = MB_RETAIN(object); + // Launch execution in new thread + self.taskInProgress = YES; + [NSThread detachNewThreadSelector:@selector(launchExecution) toTarget:self withObject:nil]; + // Show HUD view + [self show:animated]; +} + +#if NS_BLOCKS_AVAILABLE + +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block { + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + [self showAnimated:animated whileExecutingBlock:block onQueue:queue completionBlock:NULL]; +} + +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block completionBlock:(void (^)())completion { + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + [self showAnimated:animated whileExecutingBlock:block onQueue:queue completionBlock:completion]; +} + +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue { + [self showAnimated:animated whileExecutingBlock:block onQueue:queue completionBlock:NULL]; +} + +- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block onQueue:(dispatch_queue_t)queue + completionBlock:(MBProgressHUDCompletionBlock)completion { + self.taskInProgress = YES; + self.completionBlock = completion; + dispatch_async(queue, ^(void) { + block(); + dispatch_async(dispatch_get_main_queue(), ^(void) { + [self cleanUp]; + }); + }); + [self show:animated]; +} + +#endif + +- (void)launchExecution { + @autoreleasepool { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + // Start executing the requested task + [targetForExecution performSelector:methodForExecution withObject:objectForExecution]; +#pragma clang diagnostic pop + // Task completed, update view in main thread (note: view operations should + // be done only in the main thread) + [self performSelectorOnMainThread:@selector(cleanUp) withObject:nil waitUntilDone:NO]; + } +} + +- (void)cleanUp { + taskInProgress = NO; +#if !__has_feature(objc_arc) + [targetForExecution release]; + [objectForExecution release]; +#else + targetForExecution = nil; + objectForExecution = nil; +#endif + [self hide:useAnimation]; +} + +#pragma mark - UI + +- (void)setupLabels { + label = [[UILabel alloc] initWithFrame:self.bounds]; + label.adjustsFontSizeToFitWidth = NO; + label.textAlignment = MBLabelAlignmentCenter; + label.opaque = NO; + label.backgroundColor = [UIColor clearColor]; + label.textColor = self.labelColor; + label.font = self.labelFont; + label.text = self.labelText; + [self addSubview:label]; + + detailsLabel = [[UILabel alloc] initWithFrame:self.bounds]; + detailsLabel.font = self.detailsLabelFont; + detailsLabel.adjustsFontSizeToFitWidth = NO; + detailsLabel.textAlignment = MBLabelAlignmentCenter; + detailsLabel.opaque = NO; + detailsLabel.backgroundColor = [UIColor clearColor]; + detailsLabel.textColor = self.detailsLabelColor; + detailsLabel.numberOfLines = 0; + detailsLabel.font = self.detailsLabelFont; + detailsLabel.text = self.detailsLabelText; + [self addSubview:detailsLabel]; +} + +- (void)updateIndicators { + + BOOL isActivityIndicator = [indicator isKindOfClass:[UIActivityIndicatorView class]]; + BOOL isRoundIndicator = [indicator isKindOfClass:[MBRoundProgressView class]]; + + if (mode == MBProgressHUDModeIndeterminate) { + if (!isActivityIndicator) { + // Update to indeterminate indicator + [indicator removeFromSuperview]; + self.indicator = MB_AUTORELEASE([[UIActivityIndicatorView alloc] + initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]); + [(UIActivityIndicatorView *)indicator startAnimating]; + [self addSubview:indicator]; + } +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 50000 + [(UIActivityIndicatorView *)indicator setColor:self.activityIndicatorColor]; +#endif + } + else if (mode == MBProgressHUDModeDeterminateHorizontalBar) { + // Update to bar determinate indicator + [indicator removeFromSuperview]; + self.indicator = MB_AUTORELEASE([[MBBarProgressView alloc] init]); + [self addSubview:indicator]; + } + else if (mode == MBProgressHUDModeDeterminate || mode == MBProgressHUDModeAnnularDeterminate) { + if (!isRoundIndicator) { + // Update to determinante indicator + [indicator removeFromSuperview]; + self.indicator = MB_AUTORELEASE([[MBRoundProgressView alloc] init]); + [self addSubview:indicator]; + } + if (mode == MBProgressHUDModeAnnularDeterminate) { + [(MBRoundProgressView *)indicator setAnnular:YES]; + } + [(MBRoundProgressView *)indicator setProgressTintColor:self.activityIndicatorColor]; + [(MBRoundProgressView *)indicator setBackgroundTintColor:[self.activityIndicatorColor colorWithAlphaComponent:0.1f]]; + } + else if (mode == MBProgressHUDModeCustomView && customView != indicator) { + // Update custom view indicator + [indicator removeFromSuperview]; + self.indicator = customView; + [self addSubview:indicator]; + } else if (mode == MBProgressHUDModeText) { + [indicator removeFromSuperview]; + self.indicator = nil; + } +} + +#pragma mark - Layout + +- (void)layoutSubviews { + [super layoutSubviews]; + + // Entirely cover the parent view + UIView *parent = self.superview; + if (parent) { + self.frame = parent.bounds; + } + CGRect bounds = self.bounds; + + // Determine the total width and height needed + CGFloat maxWidth = bounds.size.width - 4 * margin; + CGSize totalSize = CGSizeZero; + + CGRect indicatorF = indicator.bounds; + indicatorF.size.width = MIN(indicatorF.size.width, maxWidth); + totalSize.width = MAX(totalSize.width, indicatorF.size.width); + totalSize.height += indicatorF.size.height; + + CGSize labelSize = MB_TEXTSIZE(label.text, label.font); + labelSize.width = MIN(labelSize.width, maxWidth); + totalSize.width = MAX(totalSize.width, labelSize.width); + totalSize.height += labelSize.height; + if (labelSize.height > 0.f && indicatorF.size.height > 0.f) { + totalSize.height += kPadding; + } + + CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin; + CGSize maxSize = CGSizeMake(maxWidth, remainingHeight); + CGSize detailsLabelSize = MB_MULTILINE_TEXTSIZE(detailsLabel.text, detailsLabel.font, maxSize, detailsLabel.lineBreakMode); + totalSize.width = MAX(totalSize.width, detailsLabelSize.width); + totalSize.height += detailsLabelSize.height; + if (detailsLabelSize.height > 0.f && (indicatorF.size.height > 0.f || labelSize.height > 0.f)) { + totalSize.height += kPadding; + } + + totalSize.width += 2 * margin; + totalSize.height += 2 * margin; + + // Position elements + CGFloat yPos = round(((bounds.size.height - totalSize.height) / 2)) + margin + yOffset; + CGFloat xPos = xOffset; + indicatorF.origin.y = yPos; + indicatorF.origin.x = round((bounds.size.width - indicatorF.size.width) / 2) + xPos; + indicator.frame = indicatorF; + yPos += indicatorF.size.height; + + if (labelSize.height > 0.f && indicatorF.size.height > 0.f) { + yPos += kPadding; + } + CGRect labelF; + labelF.origin.y = yPos; + labelF.origin.x = round((bounds.size.width - labelSize.width) / 2) + xPos; + labelF.size = labelSize; + label.frame = labelF; + yPos += labelF.size.height; + + if (detailsLabelSize.height > 0.f && (indicatorF.size.height > 0.f || labelSize.height > 0.f)) { + yPos += kPadding; + } + CGRect detailsLabelF; + detailsLabelF.origin.y = yPos; + detailsLabelF.origin.x = round((bounds.size.width - detailsLabelSize.width) / 2) + xPos; + detailsLabelF.size = detailsLabelSize; + detailsLabel.frame = detailsLabelF; + + // Enforce minsize and quare rules + if (square) { + CGFloat max = MAX(totalSize.width, totalSize.height); + if (max <= bounds.size.width - 2 * margin) { + totalSize.width = max; + } + if (max <= bounds.size.height - 2 * margin) { + totalSize.height = max; + } + } + if (totalSize.width < minSize.width) { + totalSize.width = minSize.width; + } + if (totalSize.height < minSize.height) { + totalSize.height = minSize.height; + } + + size = totalSize; +} + +#pragma mark BG Drawing + +- (void)drawRect:(CGRect)rect { + + CGContextRef context = UIGraphicsGetCurrentContext(); + UIGraphicsPushContext(context); + + if (self.dimBackground) { + //Gradient colours + size_t gradLocationsNum = 2; + CGFloat gradLocations[2] = {0.0f, 1.0f}; + CGFloat gradColors[8] = {0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.75f}; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, gradColors, gradLocations, gradLocationsNum); + CGColorSpaceRelease(colorSpace); + //Gradient center + CGPoint gradCenter= CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2); + //Gradient radius + float gradRadius = MIN(self.bounds.size.width , self.bounds.size.height) ; + //Gradient draw + CGContextDrawRadialGradient (context, gradient, gradCenter, + 0, gradCenter, gradRadius, + kCGGradientDrawsAfterEndLocation); + CGGradientRelease(gradient); + } + + // Set background rect color + if (self.color) { + CGContextSetFillColorWithColor(context, self.color.CGColor); + } else { + CGContextSetGrayFillColor(context, 0.0f, self.opacity); + } + + + // Center HUD + CGRect allRect = self.bounds; + // Draw rounded HUD backgroud rect + CGRect boxRect = CGRectMake(round((allRect.size.width - size.width) / 2) + self.xOffset, + round((allRect.size.height - size.height) / 2) + self.yOffset, size.width, size.height); + float radius = self.cornerRadius; + CGContextBeginPath(context); + CGContextMoveToPoint(context, CGRectGetMinX(boxRect) + radius, CGRectGetMinY(boxRect)); + CGContextAddArc(context, CGRectGetMaxX(boxRect) - radius, CGRectGetMinY(boxRect) + radius, radius, 3 * (float)M_PI / 2, 0, 0); + CGContextAddArc(context, CGRectGetMaxX(boxRect) - radius, CGRectGetMaxY(boxRect) - radius, radius, 0, (float)M_PI / 2, 0); + CGContextAddArc(context, CGRectGetMinX(boxRect) + radius, CGRectGetMaxY(boxRect) - radius, radius, (float)M_PI / 2, (float)M_PI, 0); + CGContextAddArc(context, CGRectGetMinX(boxRect) + radius, CGRectGetMinY(boxRect) + radius, radius, (float)M_PI, 3 * (float)M_PI / 2, 0); + CGContextClosePath(context); + CGContextFillPath(context); + + UIGraphicsPopContext(); +} + +#pragma mark - KVO + +- (void)registerForKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:NULL]; + } +} + +- (void)unregisterFromKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self removeObserver:self forKeyPath:keyPath]; + } +} + +- (NSArray *)observableKeypaths { + return [NSArray arrayWithObjects:@"mode", @"customView", @"labelText", @"labelFont", @"labelColor", + @"detailsLabelText", @"detailsLabelFont", @"detailsLabelColor", @"progress", @"activityIndicatorColor", nil]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if (![NSThread isMainThread]) { + [self performSelectorOnMainThread:@selector(updateUIForKeypath:) withObject:keyPath waitUntilDone:NO]; + } else { + [self updateUIForKeypath:keyPath]; + } +} + +- (void)updateUIForKeypath:(NSString *)keyPath { + if ([keyPath isEqualToString:@"mode"] || [keyPath isEqualToString:@"customView"] || + [keyPath isEqualToString:@"activityIndicatorColor"]) { + [self updateIndicators]; + } else if ([keyPath isEqualToString:@"labelText"]) { + label.text = self.labelText; + } else if ([keyPath isEqualToString:@"labelFont"]) { + label.font = self.labelFont; + } else if ([keyPath isEqualToString:@"labelColor"]) { + label.textColor = self.labelColor; + } else if ([keyPath isEqualToString:@"detailsLabelText"]) { + detailsLabel.text = self.detailsLabelText; + } else if ([keyPath isEqualToString:@"detailsLabelFont"]) { + detailsLabel.font = self.detailsLabelFont; + } else if ([keyPath isEqualToString:@"detailsLabelColor"]) { + detailsLabel.textColor = self.detailsLabelColor; + } else if ([keyPath isEqualToString:@"progress"]) { + if ([indicator respondsToSelector:@selector(setProgress:)]) { + [(id)indicator setValue:@(progress) forKey:@"progress"]; + } + return; + } + [self setNeedsLayout]; + [self setNeedsDisplay]; +} + +#pragma mark - Notifications + +- (void)registerForNotifications { +#if !TARGET_OS_TV + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + + [nc addObserver:self selector:@selector(statusBarOrientationDidChange:) + name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; +#endif +} + +- (void)unregisterFromNotifications { +#if !TARGET_OS_TV + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; +#endif +} + +#if !TARGET_OS_TV +- (void)statusBarOrientationDidChange:(NSNotification *)notification { + UIView *superview = self.superview; + if (!superview) { + return; + } else { + [self updateForCurrentOrientationAnimated:YES]; + } +} +#endif + +- (void)updateForCurrentOrientationAnimated:(BOOL)animated { + // Stay in sync with the superview in any case + if (self.superview) { + self.bounds = self.superview.bounds; + [self setNeedsDisplay]; + } + + // Not needed on iOS 8+, compile out when the deployment target allows, + // to avoid sharedApplication problems on extension targets +#if __IPHONE_OS_VERSION_MIN_REQUIRED < 80000 + // Only needed pre iOS 7 when added to a window + BOOL iOS8OrLater = kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0; + if (iOS8OrLater || ![self.superview isKindOfClass:[UIWindow class]]) return; + + UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; + CGFloat radians = 0; + if (UIInterfaceOrientationIsLandscape(orientation)) { + if (orientation == UIInterfaceOrientationLandscapeLeft) { radians = -(CGFloat)M_PI_2; } + else { radians = (CGFloat)M_PI_2; } + // Window coordinates differ! + self.bounds = CGRectMake(0, 0, self.bounds.size.height, self.bounds.size.width); + } else { + if (orientation == UIInterfaceOrientationPortraitUpsideDown) { radians = (CGFloat)M_PI; } + else { radians = 0; } + } + rotationTransform = CGAffineTransformMakeRotation(radians); + + if (animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + } + [self setTransform:rotationTransform]; + if (animated) { + [UIView commitAnimations]; + } +#endif +} + +@end + + +@implementation MBRoundProgressView + +#pragma mark - Lifecycle + +- (id)init { + return [self initWithFrame:CGRectMake(0.f, 0.f, 37.f, 37.f)]; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = [UIColor clearColor]; + self.opaque = NO; + _progress = 0.f; + _annular = NO; + _progressTintColor = [[UIColor alloc] initWithWhite:1.f alpha:1.f]; + _backgroundTintColor = [[UIColor alloc] initWithWhite:1.f alpha:.1f]; + [self registerForKVO]; + } + return self; +} + +- (void)dealloc { + [self unregisterFromKVO]; +#if !__has_feature(objc_arc) + [_progressTintColor release]; + [_backgroundTintColor release]; + [super dealloc]; +#endif +} + +#pragma mark - Drawing + +- (void)drawRect:(CGRect)rect { + + CGRect allRect = self.bounds; + CGRect circleRect = CGRectInset(allRect, 2.0f, 2.0f); + CGContextRef context = UIGraphicsGetCurrentContext(); + + if (_annular) { + // Draw background + BOOL isPreiOS7 = kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iOS_7_0; + CGFloat lineWidth = isPreiOS7 ? 5.f : 2.f; + UIBezierPath *processBackgroundPath = [UIBezierPath bezierPath]; + processBackgroundPath.lineWidth = lineWidth; + processBackgroundPath.lineCapStyle = kCGLineCapButt; + CGPoint center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2); + CGFloat radius = (self.bounds.size.width - lineWidth)/2; + CGFloat startAngle = - ((float)M_PI / 2); // 90 degrees + CGFloat endAngle = (2 * (float)M_PI) + startAngle; + [processBackgroundPath addArcWithCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES]; + [_backgroundTintColor set]; + [processBackgroundPath stroke]; + // Draw progress + UIBezierPath *processPath = [UIBezierPath bezierPath]; + processPath.lineCapStyle = isPreiOS7 ? kCGLineCapRound : kCGLineCapSquare; + processPath.lineWidth = lineWidth; + endAngle = (self.progress * 2 * (float)M_PI) + startAngle; + [processPath addArcWithCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES]; + [_progressTintColor set]; + [processPath stroke]; + } else { + // Draw background + [_progressTintColor setStroke]; + [_backgroundTintColor setFill]; + CGContextSetLineWidth(context, 2.0f); + CGContextFillEllipseInRect(context, circleRect); + CGContextStrokeEllipseInRect(context, circleRect); + // Draw progress + CGPoint center = CGPointMake(allRect.size.width / 2, allRect.size.height / 2); + CGFloat radius = (allRect.size.width - 4) / 2; + CGFloat startAngle = - ((float)M_PI / 2); // 90 degrees + CGFloat endAngle = (self.progress * 2 * (float)M_PI) + startAngle; + [_progressTintColor setFill]; + CGContextMoveToPoint(context, center.x, center.y); + CGContextAddArc(context, center.x, center.y, radius, startAngle, endAngle, 0); + CGContextClosePath(context); + CGContextFillPath(context); + } +} + +#pragma mark - KVO + +- (void)registerForKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:NULL]; + } +} + +- (void)unregisterFromKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self removeObserver:self forKeyPath:keyPath]; + } +} + +- (NSArray *)observableKeypaths { + return [NSArray arrayWithObjects:@"progressTintColor", @"backgroundTintColor", @"progress", @"annular", nil]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + [self setNeedsDisplay]; +} + +@end + + +@implementation MBBarProgressView + +#pragma mark - Lifecycle + +- (id)init { + return [self initWithFrame:CGRectMake(.0f, .0f, 120.0f, 20.0f)]; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + _progress = 0.f; + _lineColor = [UIColor whiteColor]; + _progressColor = [UIColor whiteColor]; + _progressRemainingColor = [UIColor clearColor]; + self.backgroundColor = [UIColor clearColor]; + self.opaque = NO; + [self registerForKVO]; + } + return self; +} + +- (void)dealloc { + [self unregisterFromKVO]; +#if !__has_feature(objc_arc) + [_lineColor release]; + [_progressColor release]; + [_progressRemainingColor release]; + [super dealloc]; +#endif +} + +#pragma mark - Drawing + +- (void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + + CGContextSetLineWidth(context, 2); + CGContextSetStrokeColorWithColor(context,[_lineColor CGColor]); + CGContextSetFillColorWithColor(context, [_progressRemainingColor CGColor]); + + // Draw background + float radius = (rect.size.height / 2) - 2; + CGContextMoveToPoint(context, 2, rect.size.height/2); + CGContextAddArcToPoint(context, 2, 2, radius + 2, 2, radius); + CGContextAddLineToPoint(context, rect.size.width - radius - 2, 2); + CGContextAddArcToPoint(context, rect.size.width - 2, 2, rect.size.width - 2, rect.size.height / 2, radius); + CGContextAddArcToPoint(context, rect.size.width - 2, rect.size.height - 2, rect.size.width - radius - 2, rect.size.height - 2, radius); + CGContextAddLineToPoint(context, radius + 2, rect.size.height - 2); + CGContextAddArcToPoint(context, 2, rect.size.height - 2, 2, rect.size.height/2, radius); + CGContextFillPath(context); + + // Draw border + CGContextMoveToPoint(context, 2, rect.size.height/2); + CGContextAddArcToPoint(context, 2, 2, radius + 2, 2, radius); + CGContextAddLineToPoint(context, rect.size.width - radius - 2, 2); + CGContextAddArcToPoint(context, rect.size.width - 2, 2, rect.size.width - 2, rect.size.height / 2, radius); + CGContextAddArcToPoint(context, rect.size.width - 2, rect.size.height - 2, rect.size.width - radius - 2, rect.size.height - 2, radius); + CGContextAddLineToPoint(context, radius + 2, rect.size.height - 2); + CGContextAddArcToPoint(context, 2, rect.size.height - 2, 2, rect.size.height/2, radius); + CGContextStrokePath(context); + + CGContextSetFillColorWithColor(context, [_progressColor CGColor]); + radius = radius - 2; + float amount = self.progress * rect.size.width; + + // Progress in the middle area + if (amount >= radius + 4 && amount <= (rect.size.width - radius - 4)) { + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, 4, radius + 4, 4, radius); + CGContextAddLineToPoint(context, amount, 4); + CGContextAddLineToPoint(context, amount, radius + 4); + + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, rect.size.height - 4, radius + 4, rect.size.height - 4, radius); + CGContextAddLineToPoint(context, amount, rect.size.height - 4); + CGContextAddLineToPoint(context, amount, radius + 4); + + CGContextFillPath(context); + } + + // Progress in the right arc + else if (amount > radius + 4) { + float x = amount - (rect.size.width - radius - 4); + + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, 4, radius + 4, 4, radius); + CGContextAddLineToPoint(context, rect.size.width - radius - 4, 4); + float angle = -acos(x/radius); + if (isnan(angle)) angle = 0; + CGContextAddArc(context, rect.size.width - radius - 4, rect.size.height/2, radius, M_PI, angle, 0); + CGContextAddLineToPoint(context, amount, rect.size.height/2); + + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, rect.size.height - 4, radius + 4, rect.size.height - 4, radius); + CGContextAddLineToPoint(context, rect.size.width - radius - 4, rect.size.height - 4); + angle = acos(x/radius); + if (isnan(angle)) angle = 0; + CGContextAddArc(context, rect.size.width - radius - 4, rect.size.height/2, radius, -M_PI, angle, 1); + CGContextAddLineToPoint(context, amount, rect.size.height/2); + + CGContextFillPath(context); + } + + // Progress is in the left arc + else if (amount < radius + 4 && amount > 0) { + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, 4, radius + 4, 4, radius); + CGContextAddLineToPoint(context, radius + 4, rect.size.height/2); + + CGContextMoveToPoint(context, 4, rect.size.height/2); + CGContextAddArcToPoint(context, 4, rect.size.height - 4, radius + 4, rect.size.height - 4, radius); + CGContextAddLineToPoint(context, radius + 4, rect.size.height/2); + + CGContextFillPath(context); + } +} + +#pragma mark - KVO + +- (void)registerForKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:NULL]; + } +} + +- (void)unregisterFromKVO { + for (NSString *keyPath in [self observableKeypaths]) { + [self removeObserver:self forKeyPath:keyPath]; + } +} + +- (NSArray *)observableKeypaths { + return [NSArray arrayWithObjects:@"lineColor", @"progressRemainingColor", @"progressColor", @"progress", nil]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + [self setNeedsDisplay]; +} + +@end diff --git a/Pods/MBProgressHUD/README.mdown b/Pods/MBProgressHUD/README.mdown new file mode 100644 index 0000000..df96756 --- /dev/null +++ b/Pods/MBProgressHUD/README.mdown @@ -0,0 +1,101 @@ +# MBProgressHUD [![Build Status](https://travis-ci.org/matej/MBProgressHUD.svg?branch=master)](https://travis-ci.org/matej/MBProgressHUD) + +MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread. The HUD is meant as a replacement for the undocumented, private UIKit UIProgressHUD with some additional features. + +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/1-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/1.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/2-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/2.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/3-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/3.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/4-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/4.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/5-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/5.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/6-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/6.png) +[![](http://dl.dropbox.com/u/378729/MBProgressHUD/7-thumb.png)](http://dl.dropbox.com/u/378729/MBProgressHUD/7.png) + +## Requirements + +MBProgressHUD works on any iOS version and is compatible with both ARC and non-ARC projects. It depends on the following Apple frameworks, which should already be included with most Xcode templates: + +* Foundation.framework +* UIKit.framework +* CoreGraphics.framework + +You will need the latest developer tools in order to build MBProgressHUD. Old Xcode versions might work, but compatibility will not be explicitly maintained. + +## Adding MBProgressHUD to your project + +### Cocoapods + +[CocoaPods](http://cocoapods.org) is the recommended way to add MBProgressHUD to your project. + +1. Add a pod entry for MBProgressHUD to your Podfile `pod 'MBProgressHUD', '~> 0.9.2'` +2. Install the pod(s) by running `pod install`. +3. Include MBProgressHUD wherever you need it with `#import "MBProgressHUD.h"`. + +### Source files + +Alternatively you can directly add the `MBProgressHUD.h` and `MBProgressHUD.m` source files to your project. + +1. Download the [latest code version](https://github.com/matej/MBProgressHUD/archive/master.zip) or add the repository as a git submodule to your git-tracked project. +2. Open your project in Xcode, then drag and drop `MBProgressHUD.h` and `MBProgressHUD.m` onto your project (use the "Product Navigator view"). Make sure to select Copy items when asked if you extracted the code archive outside of your project. +3. Include MBProgressHUD wherever you need it with `#import "MBProgressHUD.h"`. + +### Static library + +You can also add MBProgressHUD as a static library to your project or workspace. + +1. Download the [latest code version](https://github.com/matej/MBProgressHUD/downloads) or add the repository as a git submodule to your git-tracked project. +2. Open your project in Xcode, then drag and drop `MBProgressHUD.xcodeproj` onto your project or workspace (use the "Product Navigator view"). +3. Select your target and go to the Build phases tab. In the Link Binary With Libraries section select the add button. On the sheet find and add `libMBProgressHUD.a`. You might also need to add `MBProgressHUD` to the Target Dependencies list. +4. Include MBProgressHUD wherever you need it with `#import `. + +## Usage + +The main guideline you need to follow when dealing with MBProgressHUD while running long-running tasks is keeping the main thread work-free, so the UI can be updated promptly. The recommended way of using MBProgressHUD is therefore to set it up on the main thread and then spinning the task, that you want to perform, off onto a new thread. + +```objective-c +[MBProgressHUD showHUDAddedTo:self.view animated:YES]; +dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ + // Do something... + dispatch_async(dispatch_get_main_queue(), ^{ + [MBProgressHUD hideHUDForView:self.view animated:YES]; + }); +}); +``` + +If you need to configure the HUD you can do this by using the MBProgressHUD reference that showHUDAddedTo:animated: returns. + +```objective-c +MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; +hud.mode = MBProgressHUDModeAnnularDeterminate; +hud.labelText = @"Loading"; +[self doSomethingInBackgroundWithProgressCallback:^(float progress) { + hud.progress = progress; +} completionCallback:^{ + [hud hide:YES]; +}]; +``` + +UI updates should always be done on the main thread. Some MBProgressHUD setters are however considered "thread safe" and can be called from background threads. Those also include `setMode:`, `setCustomView:`, `setLabelText:`, `setLabelFont:`, `setDetailsLabelText:`, `setDetailsLabelFont:` and `setProgress:`. + +If you need to run your long-running task in the main thread, you should perform it with a slight delay, so UIKit will have enough time to update the UI (i.e., draw the HUD) before you block the main thread with your task. + +```objective-c +[MBProgressHUD showHUDAddedTo:self.view animated:YES]; +dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC); +dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + // Do something... + [MBProgressHUD hideHUDForView:self.view animated:YES]; +}); +``` + +You should be aware that any HUD updates issued inside the above block won't be displayed until the block completes. + +For more examples, including how to use MBProgressHUD with asynchronous operations such as NSURLConnection, take a look at the bundled demo project. Extensive API documentation is provided in the header file (MBProgressHUD.h). + + +## License + +This code is distributed under the terms and conditions of the [MIT license](LICENSE). + +## Change-log + +A brief summary of each MBProgressHUD release can be found on the [wiki](https://github.com/matej/MBProgressHUD/wiki/Change-log). diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 2607753..cec9706 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -2,16 +2,21 @@ PODS: - Mantle (2.0.7): - Mantle/extobjc (= 2.0.7) - Mantle/extobjc (2.0.7) + - MBProgressHUD (0.9.2) - SDWebImage (3.7.5): - SDWebImage/Core (= 3.7.5) - SDWebImage/Core (3.7.5) DEPENDENCIES: - Mantle + - MBProgressHUD - SDWebImage SPEC CHECKSUMS: Mantle: bc40bb061d8c2c6fb48d5083e04d928c3b7f73d9 + MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1 SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461 -COCOAPODS: 0.39.0 +PODFILE CHECKSUM: 3fa150c16d70eb02295eff6a529039c3c5b2e083 + +COCOAPODS: 1.0.0 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index e04c3d4..18dffe5 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -1,3107 +1,1003 @@ - - - - - archiveVersion - 1 - classes - - objectVersion - 46 - objects - - 02DD7CA615C8C82DBBB797A7BFEEB70F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSData+ImageContentType.m - path - SDWebImage/NSData+ImageContentType.m - sourceTree - <group> - - 037C0CA694176A3C0915F62C9D20B3E6 - - children - - B3D1D13E0C6553800746CB8FD61CF946 - - isa - PBXGroup - name - Targets Support Files - sourceTree - <group> - - 04A4FE6BC333B1FC7D35EADA8F59FAD6 - - fileRef - 2115BD4433861E8034575A606A205775 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 0563227B6D480B862CA5EF8C36DF51A4 - - fileRef - 6C975A8BA4F7DD6944DDDA45FA5A40CC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 05F4FE7E3B5607FB5A7D64BE5B3D0AC7 - - fileRef - 6FA74E71430FE631ADB7B159518E4CB9 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 06B93267BE4B80B2B4B91E5EFCE386D2 - - fileRef - 53C597FA52EAB09BB776C69D895F9D15 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 0705E2EB1ED884E2B646D5F2180F282B - - buildConfigurations - - 1BE688260FEEE6571AE7C3CC4E3A59D3 - 23F1CEC5C1518C6E9CB15CFDCE3FCA3D - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 09530AAD38304A95FFA7AEB5C5029BA4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - SDWebImage-dummy.m - sourceTree - <group> - - 0C16B03F583C724199F74FC4DAFC6063 - - fileRef - 609DD8EF242B56172BA66E6B780EFC65 - isa - PBXBuildFile - - 0C43511D7D9254088E163727BF0C9287 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Mantle-prefix.pch - sourceTree - <group> - - 0CCB6B307EBF17E2D0E3A6AD52F6F51E - - fileRef - 6A79054A0055E192E7B2336D70A8B029 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Private - - - - 0EFEF5A87EAC9D0190EF8C78F16A044D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Mantle.xcconfig - sourceTree - <group> - - 10834806BD7B412BC24F347361FA2C8E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Pods-acknowledgements.plist - sourceTree - <group> - - 10DCDE9B1B03CBA731C672B28674CFE7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSError+MTLModelException.m - path - Mantle/NSError+MTLModelException.m - sourceTree - <group> - - 11227227234288BC0AFE990C6905C0F1 - - buildActionMask - 2147483647 - files - - 2E1C9BEF3D16338597F34DC860D18953 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 131F696150E4BABEEAE12D4FB90E36A2 - - fileRef - 737A56A4DEE67755C8046E278C4CE448 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 1399F5F5B8A99754AF89DC93A9E100DE - - buildActionMask - 2147483647 - files - - FE983ADC2960099312AF536D2916BC7A - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 16DD273B41825641DC3C329877D3B834 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSDictionary+MTLManipulationAdditions.m - path - Mantle/NSDictionary+MTLManipulationAdditions.m - sourceTree - <group> - - 17A59C9B4F5727FAF9E3A6D92A9FFABD - - fileRef - 83EDA747C09E28BA9A63CC5854B5115A - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 17AEC68D7278556353B571155B6C9D59 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSDictionary+MTLMappingAdditions.m - path - Mantle/NSDictionary+MTLMappingAdditions.m - sourceTree - <group> - - 185A4E5E2EF101A47181D144DD6092D7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - SDWebImage-prefix.pch - sourceTree - <group> - - 18B693BFBF4230418E2C54A1854CB883 - - buildActionMask - 2147483647 - files - - 5C8812092E71A959352B6A6183C157A5 - 8732FDF15B5F063BC086EA8C7F962DE2 - 464F7AD13BB284878CEB4566826272FA - 7CAA48778D9EE0B20D0A0695A19E18EF - 50061298A943BB331386BFD3E3F62C43 - D2D4686778AB448DEA1D4F86054ABEB7 - 408D1BECA2E7F7CFAD2B8742C18F0E43 - 36645F2FB383F2432DE94A63BBA4CA91 - 59F139B61E4ACAD0DDAF98E11AFBEE73 - 72039B4F6587F3420D7D92218867FC7D - 603CCE5B59F5F553496FA7D06BE51AA6 - 28215D40E0A54D7112369D1ABBAF3105 - 131F696150E4BABEEAE12D4FB90E36A2 - B09D45DCED389B1D0FA82E968752E515 - 6F74BC77FD36DC3918DA6202A440D20E - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 19D81E345715F41ED29349DBFF389D55 - - fileRef - C71D12F001281E7B97ECF917E386F5AC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 1BE688260FEEE6571AE7C3CC4E3A59D3 - - baseConfigurationReference - 0EFEF5A87EAC9D0190EF8C78F16A044D - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/Mantle/Mantle-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 1D6BF95474C6B3D6636B5C3DFA365959 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLValueTransformer.h - path - Mantle/MTLValueTransformer.h - sourceTree - <group> - - 2115BD4433861E8034575A606A205775 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLJSONAdapter.m - path - Mantle/MTLJSONAdapter.m - sourceTree - <group> - - 21F87EAAB963468B531430B85700EFB2 - - children - - 341648A6A13E0145817ABC9EDDDE3E7C - A147D29E8930ACC1E33565DBF065CD52 - - isa - PBXGroup - name - SDWebImage - path - SDWebImage - sourceTree - <group> - - 235500B5820D10DDBC26EB25DFB5BB66 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImageCompat.m - path - SDWebImage/SDWebImageCompat.m - sourceTree - <group> - - 23F1CEC5C1518C6E9CB15CFDCE3FCA3D - - baseConfigurationReference - 0EFEF5A87EAC9D0190EF8C78F16A044D - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/Mantle/Mantle-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 25C8D99584F6A4DA5CB73930C9AF5F97 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSDictionary+MTLJSONKeyPath.h - path - Mantle/NSDictionary+MTLJSONKeyPath.h - sourceTree - <group> - - 268D4DFE4BA03755D1DDD85ED10EA43B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDImageCache.h - path - SDWebImage/SDImageCache.h - sourceTree - <group> - - 272643F56613CA0D336AE3DBF19DC404 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Pods-dummy.m - sourceTree - <group> - - 28215D40E0A54D7112369D1ABBAF3105 - - fileRef - 8CBDC17FB0D2C6AF8022937B3FE4BD2F - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 29FCFFC39CC3A025618818E6CC61E620 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libPods.a - path - libPods.a - sourceTree - BUILT_PRODUCTS_DIR - - 2B91954D1D8469415E1164E83DD3D3F1 - - fileRef - 452C943DF93199C27667E1A3E9096278 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 2D097F9B47E61A2F9ED4053728DA7AE6 - - fileRef - EE03DC4E8107A39D71072A6F59C16423 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 2D8E8EC45A3A1A1D94AE762CB5028504 - - buildConfigurations - - AA05AF9C3A14EE0E32F42C6E6D42D34F - 511103F7F15A7E8F83B268EA03462CAB - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 2E1C9BEF3D16338597F34DC860D18953 - - fileRef - 272643F56613CA0D336AE3DBF19DC404 - isa - PBXBuildFile - - 31DB39B7AE7CC2AF6FFC2F451F65D7B9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImageDecoder.m - path - SDWebImage/SDWebImageDecoder.m - sourceTree - <group> - - 341648A6A13E0145817ABC9EDDDE3E7C - - children - - A6F55F89A0B753D2D0680FE67E8CA8AD - 02DD7CA615C8C82DBBB797A7BFEEB70F - 268D4DFE4BA03755D1DDD85ED10EA43B - B761DB48BD86D0A267A10601101FD07B - D9C7351BDB37E42A7E2CFFBB8253DAFF - 235500B5820D10DDBC26EB25DFB5BB66 - 6578CDF600126348C143B60E7AC91151 - 31DB39B7AE7CC2AF6FFC2F451F65D7B9 - 9825AACC5CEE99085E177351A800B09B - 4DA9117AC5A1F7A2E9A8D2E685EAF13B - A1CC6BA53F6FFAAFF9CD3BA94AE0F24A - 3BD104902F20166A5ABAE7C15D506231 - B0A22501D76B2675E60494E3CF452E18 - F0B747FBA2F649FC27663DF0926FFC43 - FB41B0AD4A01EFA993FF6AE85870E586 - 51C20F04325AAE3E2F05AE305E6A8D4B - D0BCA5D69F4B011200D072D810E7B155 - 5841410CA0F3A42A722AE5D5DC640964 - E4D500DF2DA6B435390AA3E54220676C - 5800E57DC5A7B7E03398450BB6B6AE51 - 3B23AFB3245A85B4D0F3AA9838F444CF - 443633ACC2F84AF406091229A7FC59BC - 8CBDC17FB0D2C6AF8022937B3FE4BD2F - 8E60E7F4AC5CF4611BCD5729676A28F6 - 737A56A4DEE67755C8046E278C4CE448 - D0FC59A80F0448FA0DCAE13E41494A72 - CD20F2029FA8DD67D56AAF9A2D75DAB3 - 6FA74E71430FE631ADB7B159518E4CB9 - 45184CB9712CF0BE3921E4000AACBA64 - - isa - PBXGroup - name - Core - sourceTree - <group> - - 3597E4504C44572405D27815315013D9 - - fileRef - 5841410CA0F3A42A722AE5D5DC640964 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 36398AEC0402BD15B5E00D3E7FD1E1D6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLReflection.m - path - Mantle/MTLReflection.m - sourceTree - <group> - - 36645F2FB383F2432DE94A63BBA4CA91 - - fileRef - F0B747FBA2F649FC27663DF0926FFC43 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 37DB56D75062CC75FCB0966E1C6E8A8E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text - path - Pods-acknowledgements.markdown - sourceTree - <group> - - 3B23AFB3245A85B4D0F3AA9838F444CF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIImage+GIF.m - path - SDWebImage/UIImage+GIF.m - sourceTree - <group> - - 3BD104902F20166A5ABAE7C15D506231 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImageDownloaderOperation.m - path - SDWebImage/SDWebImageDownloaderOperation.m - sourceTree - <group> - - 3C040366FD204605DC6F682FA5C9922B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLReflection.h - path - Mantle/MTLReflection.h - sourceTree - <group> - - 3C43032339841F7D1D94EF12903A2272 - - fileRef - 5EDB6618C5F47219211BF530C5B7C5AD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 408D1BECA2E7F7CFAD2B8742C18F0E43 - - fileRef - 3BD104902F20166A5ABAE7C15D506231 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 41C46F19A2CE1E29840F226638A10678 - - fileRef - 9E9669D7967BD4FD6913A5F2FF03A9B5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Private - - - - 426BC4549A625B5E1E4200D5261A98BF - - buildConfigurationList - 0705E2EB1ED884E2B646D5F2180F282B - buildPhases - - 541D0E339EB299E614EF0FCA9EC8C140 - 1399F5F5B8A99754AF89DC93A9E100DE - A7CE0B2F5900B8DE72065180B996B165 - - buildRules - - dependencies - - isa - PBXNativeTarget - name - Mantle - productName - Mantle - productReference - 97E24374BF388DC20017DBE69E756694 - productType - com.apple.product-type.library.static - - 433CD3331B6C3787F473C941B61FC68F - - children - - FF880E94BC5F1B73ECBD6429796DC5C3 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 443633ACC2F84AF406091229A7FC59BC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIImage+MultiFormat.h - path - SDWebImage/UIImage+MultiFormat.h - sourceTree - <group> - - 45184CB9712CF0BE3921E4000AACBA64 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIView+WebCacheOperation.m - path - SDWebImage/UIView+WebCacheOperation.m - sourceTree - <group> - - 452C943DF93199C27667E1A3E9096278 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSValueTransformer+MTLInversionAdditions.h - path - Mantle/NSValueTransformer+MTLInversionAdditions.h - sourceTree - <group> - - 4630A6644E76AADF263AE66897C3F8DF - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework - sourceTree - DEVELOPER_DIR - - 464F7AD13BB284878CEB4566826272FA - - fileRef - 09530AAD38304A95FFA7AEB5C5029BA4 - isa - PBXBuildFile - - 48E26C7F62CB70B01B9A8E5D360CB8C2 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLTransformerErrorHandling.h - path - Mantle/MTLTransformerErrorHandling.h - sourceTree - <group> - - 495E27E8D0F85F4008E237D0F29EA8AC - - fileRef - D7E5EE1E72502D687D3CD91328D4C2C5 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4980C203311F9A91EF1A1FCAEC09EBD2 - - fileRef - F7C21BAA95FB06060CD17FC5F2614C8E - isa - PBXBuildFile - settings - - ATTRIBUTES - - Private - - - - 4BABB4C716353500FDF75187D35DAACF - - fileRef - 8B48168B67E0687AE38E01801E70F526 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 4DA9117AC5A1F7A2E9A8D2E685EAF13B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImageDownloader.m - path - SDWebImage/SDWebImageDownloader.m - sourceTree - <group> - - 4E762F23EC34ED4A6FF3312D84E33A40 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods.debug.xcconfig - sourceTree - <group> - - 50061298A943BB331386BFD3E3F62C43 - - fileRef - 31DB39B7AE7CC2AF6FFC2F451F65D7B9 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 511103F7F15A7E8F83B268EA03462CAB - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - YES - ENABLE_NS_ASSERTIONS - NO - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_PREPROCESSOR_DEFINITIONS - - RELEASE=1 - - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - STRIP_INSTALLED_PRODUCT - NO - SYMROOT - ${SRCROOT}/../build - VALIDATE_PRODUCT - YES - - isa - XCBuildConfiguration - name - Release - - 51C20F04325AAE3E2F05AE305E6A8D4B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImagePrefetcher.h - path - SDWebImage/SDWebImagePrefetcher.h - sourceTree - <group> - - 52B96AC796E60DBF61A11151FD25CEE8 - - fileRef - 69C5959BC11C5EDFD4006BB8B36D2E83 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 533E5ED50EE71B13A90684E8D6215E5C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSDictionary+MTLManipulationAdditions.h - path - Mantle/NSDictionary+MTLManipulationAdditions.h - sourceTree - <group> - - 53C597FA52EAB09BB776C69D895F9D15 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLModel.m - path - Mantle/MTLModel.m - sourceTree - <group> - - 541D0E339EB299E614EF0FCA9EC8C140 - - buildActionMask - 2147483647 - files - - 17A59C9B4F5727FAF9E3A6D92A9FFABD - BAE29EFF696E9062CE0DFB3887FF9806 - 669FAFC1DA77D8FF3171FA45F80A0AB8 - 04A4FE6BC333B1FC7D35EADA8F59FAD6 - 9543DC81B3F035E8C5768FB50B7146F1 - 06B93267BE4B80B2B4B91E5EFCE386D2 - FD913ECF18E91FD4D8EE34BA8170DB4F - 6672A2EFC9413A1DE45CAF0A950CCAAE - 542A74473DEBCC4A4A8EFD7219D2957B - 7E5C71195CF0F35F44FDA4D355CFE73C - 2D097F9B47E61A2F9ED4053728DA7AE6 - 944BC5B32BE8AFDE9A1E1B88C7F7E86D - C0B7827E6FEB64AEA58656D1DE343E63 - 6B6012E259B1804C7CC8D36A07252B07 - 7632A90850BF21261FD1585914D71E98 - B6E1E26869BC3BFBEAD1B6F35F5A670D - EEF2248467AB8464AB72CB730C7FE178 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 542A74473DEBCC4A4A8EFD7219D2957B - - fileRef - 847592387116CEB85031CBD122A90284 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 54E18CD3F3292D6E23E9D4D71C2A51CB - - buildActionMask - 2147483647 - files - - 63F8F6C2047DCC906F4225511E8ABDA9 - 8A5960E1A8B8E36389443DE7E673D6CA - 55042DF744FEA79EB9AF8D152B69302D - 6ADEBFCB1F44BC6DCB2CC9AD63290253 - 80558B4677896F8435749352957B375F - D0C3310B1446EB018173986F4498EE5D - 87468D2074F7A6BE5043E9D6C82E4F48 - A0406A6053ADD30286033310F849D296 - 8D3A0C9868A02A431353035AAB9EFC40 - 3597E4504C44572405D27815315013D9 - 62CD8510A8F6AE60A4640C3286D09B3A - B2AC65B63BB07C7701A8EFC752A0826B - E6345C61AB8575A0E8646B73AD969856 - CBD43094255E90C313E740C7EFFD4C9C - 05F4FE7E3B5607FB5A7D64BE5B3D0AC7 - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 55042DF744FEA79EB9AF8D152B69302D - - fileRef - D9C7351BDB37E42A7E2CFFBB8253DAFF - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 5800E57DC5A7B7E03398450BB6B6AE51 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIImage+GIF.h - path - SDWebImage/UIImage+GIF.h - sourceTree - <group> - - 5841410CA0F3A42A722AE5D5DC640964 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIButton+WebCache.h - path - SDWebImage/UIButton+WebCache.h - sourceTree - <group> - - 5884834F5BA0278048B8E0A0A00987E5 - - isa - PBXTargetDependency - name - Mantle - target - 426BC4549A625B5E1E4200D5261A98BF - targetProxy - ECE329BD20DFCBB901B422FBB7F73FA3 - - 59265159FD88993D2270501D01578588 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSValueTransformer+MTLPredefinedTransformerAdditions.h - path - Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.h - sourceTree - <group> - - 59F139B61E4ACAD0DDAF98E11AFBEE73 - - fileRef - D0BCA5D69F4B011200D072D810E7B155 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5A4D512688D9DCBE5E85BDA83DAA883B - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - A74A079BA044CB665EBF7365E2DE8775 - remoteInfo - SDWebImage - - 5C8812092E71A959352B6A6183C157A5 - - fileRef - 02DD7CA615C8C82DBBB797A7BFEEB70F - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 5CDBDF4279BF1CDBDA29189BCA44BC05 - - baseConfigurationReference - 4E762F23EC34ED4A6FF3312D84E33A40 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MACH_O_TYPE - staticlib - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PODS_ROOT - $(SRCROOT) - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 5EDB6618C5F47219211BF530C5B7C5AD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLJSONAdapter.h - path - Mantle/MTLJSONAdapter.h - sourceTree - <group> - - 603CCE5B59F5F553496FA7D06BE51AA6 - - fileRef - 3B23AFB3245A85B4D0F3AA9838F444CF - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 609DD8EF242B56172BA66E6B780EFC65 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - ImageIO.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/ImageIO.framework - sourceTree - DEVELOPER_DIR - - 62CD8510A8F6AE60A4640C3286D09B3A - - fileRef - 5800E57DC5A7B7E03398450BB6B6AE51 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 63F8F6C2047DCC906F4225511E8ABDA9 - - fileRef - A6F55F89A0B753D2D0680FE67E8CA8AD - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6578CDF600126348C143B60E7AC91151 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageDecoder.h - path - SDWebImage/SDWebImageDecoder.h - sourceTree - <group> - - 6672A2EFC9413A1DE45CAF0A950CCAAE - - fileRef - 83ECEEA065278E12A008F82C43F1C6B4 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 669FAFC1DA77D8FF3171FA45F80A0AB8 - - fileRef - 9E033EC1CE1C9CFB2B6185C29175901B - isa - PBXBuildFile - - 6911BECA35E7518D864239B7E898EEF3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.script.sh - path - Pods-frameworks.sh - sourceTree - <group> - - 69C5959BC11C5EDFD4006BB8B36D2E83 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSObject+MTLComparisonAdditions.h - path - Mantle/NSObject+MTLComparisonAdditions.h - sourceTree - <group> - - 6A79054A0055E192E7B2336D70A8B029 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - EXTScope.h - path - Mantle/extobjc/EXTScope.h - sourceTree - <group> - - 6ADEBFCB1F44BC6DCB2CC9AD63290253 - - fileRef - 6578CDF600126348C143B60E7AC91151 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6B45ADBBD4925214FD239E8C25214C87 - - fileRef - 533E5ED50EE71B13A90684E8D6215E5C - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 6B6012E259B1804C7CC8D36A07252B07 - - fileRef - 10DCDE9B1B03CBA731C672B28674CFE7 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6C3EDEE3F32C29C4E4C444D5C2D90669 - - baseConfigurationReference - 98C98CDFB3F20F2925F6CD1F141BB14F - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MACH_O_TYPE - staticlib - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PODS_ROOT - $(SRCROOT) - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 6C975A8BA4F7DD6944DDDA45FA5A40CC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLModel+NSCoding.h - path - Mantle/MTLModel+NSCoding.h - sourceTree - <group> - - 6EDD9715D87DB93BFFB1AF5603088783 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLModel+NSCoding.m - path - Mantle/MTLModel+NSCoding.m - sourceTree - <group> - - 6F74BC77FD36DC3918DA6202A440D20E - - fileRef - 45184CB9712CF0BE3921E4000AACBA64 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 6FA74E71430FE631ADB7B159518E4CB9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIView+WebCacheOperation.h - path - SDWebImage/UIView+WebCacheOperation.h - sourceTree - <group> - - 72039B4F6587F3420D7D92218867FC7D - - fileRef - E4D500DF2DA6B435390AA3E54220676C - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 737A56A4DEE67755C8046E278C4CE448 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIImageView+HighlightedWebCache.m - path - SDWebImage/UIImageView+HighlightedWebCache.m - sourceTree - <group> - - 7632A90850BF21261FD1585914D71E98 - - fileRef - F44B6F9C2D260B191FBB5063AD75B393 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 77F50A2E75F7A6C2C332D980E8888677 - - fileRef - 4630A6644E76AADF263AE66897C3F8DF - isa - PBXBuildFile - - 784E07C8B9704257D10696DD47E2A3B4 - - fileRef - 59265159FD88993D2270501D01578588 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 78C312ED0A3CF750A6C343D6FD5379DC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Mantle.h - path - Mantle/Mantle.h - sourceTree - <group> - - 79BFA846C3CA7928129D1748DD1064DE - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - EXTKeyPathCoding.h - path - Mantle/extobjc/EXTKeyPathCoding.h - sourceTree - <group> - - 7A1371C5CB8567AB9BD40DB8FEC78D99 - - children - - 79BFA846C3CA7928129D1748DD1064DE - F7C21BAA95FB06060CD17FC5F2614C8E - 83EDA747C09E28BA9A63CC5854B5115A - 6A79054A0055E192E7B2336D70A8B029 - 9381934DEAC6847E89675AA939DCC131 - 9E9669D7967BD4FD6913A5F2FF03A9B5 - - isa - PBXGroup - name - extobjc - sourceTree - <group> - - 7B24F7FF026230EDD5EA49B096A379AC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSArray+MTLManipulationAdditions.h - path - Mantle/NSArray+MTLManipulationAdditions.h - sourceTree - <group> - - 7C0CF8B05B74BED154F5D4B71DEFC5B9 - - buildConfigurations - - 5CDBDF4279BF1CDBDA29189BCA44BC05 - 6C3EDEE3F32C29C4E4C444D5C2D90669 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 7CAA48778D9EE0B20D0A0695A19E18EF - - fileRef - 235500B5820D10DDBC26EB25DFB5BB66 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 7DB346D0F39D3F0E887471402A8071AB - - children - - BA6428E9F66FD5A23C0A2E06ED26CD2F - 433CD3331B6C3787F473C941B61FC68F - F344031D6189A73E226D6C201F587941 - F656E069E7E0A909F2232AC57834809B - 037C0CA694176A3C0915F62C9D20B3E6 - - isa - PBXGroup - sourceTree - <group> - - 7E5C71195CF0F35F44FDA4D355CFE73C - - fileRef - 9B34651E0E036E74E1125776B0014D74 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 80558B4677896F8435749352957B375F - - fileRef - 9825AACC5CEE99085E177351A800B09B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 83ECEEA065278E12A008F82C43F1C6B4 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLTransformerErrorHandling.m - path - Mantle/MTLTransformerErrorHandling.m - sourceTree - <group> - - 83EDA747C09E28BA9A63CC5854B5115A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - EXTRuntimeExtensions.m - path - Mantle/extobjc/EXTRuntimeExtensions.m - sourceTree - <group> - - 847592387116CEB85031CBD122A90284 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - MTLValueTransformer.m - path - Mantle/MTLValueTransformer.m - sourceTree - <group> - - 8732FDF15B5F063BC086EA8C7F962DE2 - - fileRef - B761DB48BD86D0A267A10601101FD07B - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 87468D2074F7A6BE5043E9D6C82E4F48 - - fileRef - B0A22501D76B2675E60494E3CF452E18 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8A5960E1A8B8E36389443DE7E673D6CA - - fileRef - 268D4DFE4BA03755D1DDD85ED10EA43B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8B48168B67E0687AE38E01801E70F526 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - MTLModel.h - path - Mantle/MTLModel.h - sourceTree - <group> - - 8C6E5192E88648B94D6C7C4B8FFCDEBC - - baseConfigurationReference - F61DDF36F9DBAB73E700BB4DC60394D0 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/SDWebImage/SDWebImage-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MTL_ENABLE_DEBUG_INFO - NO - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 8CBDC17FB0D2C6AF8022937B3FE4BD2F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIImage+MultiFormat.m - path - SDWebImage/UIImage+MultiFormat.m - sourceTree - <group> - - 8D3A0C9868A02A431353035AAB9EFC40 - - fileRef - 51C20F04325AAE3E2F05AE305E6A8D4B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 8E60E7F4AC5CF4611BCD5729676A28F6 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIImageView+HighlightedWebCache.h - path - SDWebImage/UIImageView+HighlightedWebCache.h - sourceTree - <group> - - 9381934DEAC6847E89675AA939DCC131 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - EXTScope.m - path - Mantle/extobjc/EXTScope.m - sourceTree - <group> - - 93F7C30CD2687A0717B8A3EDC39EFD8E - - buildConfigurationList - 7C0CF8B05B74BED154F5D4B71DEFC5B9 - buildPhases - - 11227227234288BC0AFE990C6905C0F1 - C87C8FDF2D0E80BDDB3F76F959466D93 - - buildRules - - dependencies - - 5884834F5BA0278048B8E0A0A00987E5 - D14A22E44EF10CEA2C562CBE2EE77665 - - isa - PBXNativeTarget - name - Pods - productName - Pods - productReference - 29FCFFC39CC3A025618818E6CC61E620 - productType - com.apple.product-type.library.static - - 944BC5B32BE8AFDE9A1E1B88C7F7E86D - - fileRef - 16DD273B41825641DC3C329877D3B834 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 9543DC81B3F035E8C5768FB50B7146F1 - - fileRef - 6EDD9715D87DB93BFFB1AF5603088783 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - 97E24374BF388DC20017DBE69E756694 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libMantle.a - path - libMantle.a - sourceTree - BUILT_PRODUCTS_DIR - - 9825AACC5CEE99085E177351A800B09B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageDownloader.h - path - SDWebImage/SDWebImageDownloader.h - sourceTree - <group> - - 98C98CDFB3F20F2925F6CD1F141BB14F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods.release.xcconfig - sourceTree - <group> - - 9B34651E0E036E74E1125776B0014D74 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSArray+MTLManipulationAdditions.m - path - Mantle/NSArray+MTLManipulationAdditions.m - sourceTree - <group> - - 9BB66BC3A3E2C0AB0BA3ACE98373EF30 - - fileRef - 3C040366FD204605DC6F682FA5C9922B - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 9E033EC1CE1C9CFB2B6185C29175901B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Mantle-dummy.m - sourceTree - <group> - - 9E9669D7967BD4FD6913A5F2FF03A9B5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - metamacros.h - path - Mantle/extobjc/metamacros.h - sourceTree - <group> - - A0406A6053ADD30286033310F849D296 - - fileRef - FB41B0AD4A01EFA993FF6AE85870E586 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - A147D29E8930ACC1E33565DBF065CD52 - - children - - F61DDF36F9DBAB73E700BB4DC60394D0 - 09530AAD38304A95FFA7AEB5C5029BA4 - 185A4E5E2EF101A47181D144DD6092D7 - - isa - PBXGroup - name - Support Files - path - ../Target Support Files/SDWebImage - sourceTree - <group> - - A1A36D34413696BE466E2CA0AFF194DA - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.script.sh - path - Pods-resources.sh - sourceTree - <group> - - A1CC6BA53F6FFAAFF9CD3BA94AE0F24A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageDownloaderOperation.h - path - SDWebImage/SDWebImageDownloaderOperation.h - sourceTree - <group> - - A3F051FAC11452D9C44AF4FBE0B81E71 - - buildActionMask - 2147483647 - files - - DE0A973AD57DA953F7E776CD14F479D4 - 0C16B03F583C724199F74FC4DAFC6063 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - A6F55F89A0B753D2D0680FE67E8CA8AD - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSData+ImageContentType.h - path - SDWebImage/NSData+ImageContentType.h - sourceTree - <group> - - A74A079BA044CB665EBF7365E2DE8775 - - buildConfigurationList - D86A3C00BB6838DCCC5C40CDA279FC11 - buildPhases - - 18B693BFBF4230418E2C54A1854CB883 - A3F051FAC11452D9C44AF4FBE0B81E71 - 54E18CD3F3292D6E23E9D4D71C2A51CB - - buildRules - - dependencies - - isa - PBXNativeTarget - name - SDWebImage - productName - SDWebImage - productReference - EAAA72101B53F9D5E29A2631F297FB81 - productType - com.apple.product-type.library.static - - A7CE0B2F5900B8DE72065180B996B165 - - buildActionMask - 2147483647 - files - - F8FF07D76760D6A2FF269061E11A8B31 - 4980C203311F9A91EF1A1FCAEC09EBD2 - 0CCB6B307EBF17E2D0E3A6AD52F6F51E - FF3D94F730A96F1B9FAF43E8DB68E702 - 41C46F19A2CE1E29840F226638A10678 - 3C43032339841F7D1D94EF12903A2272 - 0563227B6D480B862CA5EF8C36DF51A4 - 4BABB4C716353500FDF75187D35DAACF - 9BB66BC3A3E2C0AB0BA3ACE98373EF30 - F7B7585021FEDC680689A7B49F8BA3ED - F0D2DF741E4223975FD166C5C101479F - D1A08D7B676CB358664FE1A7EE3472E3 - E72FE1FA640F108A9769E9661E34F3BF - 6B45ADBBD4925214FD239E8C25214C87 - 19D81E345715F41ED29349DBFF389D55 - 495E27E8D0F85F4008E237D0F29EA8AC - 52B96AC796E60DBF61A11151FD25CEE8 - 2B91954D1D8469415E1164E83DD3D3F1 - 784E07C8B9704257D10696DD47E2A3B4 - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - AA05AF9C3A14EE0E32F42C6E6D42D34F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - NO - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - ONLY_ACTIVE_ARCH - YES - STRIP_INSTALLED_PRODUCT - NO - SYMROOT - ${SRCROOT}/../build - - isa - XCBuildConfiguration - name - Debug - - B09D45DCED389B1D0FA82E968752E515 - - fileRef - CD20F2029FA8DD67D56AAF9A2D75DAB3 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B0A22501D76B2675E60494E3CF452E18 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageManager.h - path - SDWebImage/SDWebImageManager.h - sourceTree - <group> - - B2AC65B63BB07C7701A8EFC752A0826B - - fileRef - 443633ACC2F84AF406091229A7FC59BC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - B3D1D13E0C6553800746CB8FD61CF946 - - children - - 37DB56D75062CC75FCB0966E1C6E8A8E - 10834806BD7B412BC24F347361FA2C8E - 272643F56613CA0D336AE3DBF19DC404 - 6911BECA35E7518D864239B7E898EEF3 - A1A36D34413696BE466E2CA0AFF194DA - 4E762F23EC34ED4A6FF3312D84E33A40 - 98C98CDFB3F20F2925F6CD1F141BB14F - - isa - PBXGroup - name - Pods - path - Target Support Files/Pods - sourceTree - <group> - - B6E1E26869BC3BFBEAD1B6F35F5A670D - - fileRef - DE0E54F6AEED36E8A567FF8F893E0653 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - B761DB48BD86D0A267A10601101FD07B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDImageCache.m - path - SDWebImage/SDImageCache.m - sourceTree - <group> - - BA6428E9F66FD5A23C0A2E06ED26CD2F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text - name - Podfile - path - ../Podfile - sourceTree - SOURCE_ROOT - xcLanguageSpecificationIdentifier - xcode.lang.ruby - - BAE29EFF696E9062CE0DFB3887FF9806 - - fileRef - 9381934DEAC6847E89675AA939DCC131 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - C0B7827E6FEB64AEA58656D1DE343E63 - - fileRef - 17AEC68D7278556353B571155B6C9D59 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - C71D12F001281E7B97ECF917E386F5AC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSDictionary+MTLMappingAdditions.h - path - Mantle/NSDictionary+MTLMappingAdditions.h - sourceTree - <group> - - C87C8FDF2D0E80BDDB3F76F959466D93 - - buildActionMask - 2147483647 - files - - 77F50A2E75F7A6C2C332D980E8888677 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - CBD43094255E90C313E740C7EFFD4C9C - - fileRef - D0FC59A80F0448FA0DCAE13E41494A72 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - CD20F2029FA8DD67D56AAF9A2D75DAB3 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIImageView+WebCache.m - path - SDWebImage/UIImageView+WebCache.m - sourceTree - <group> - - CE59C0317C7FCFC665CE9F086BF23B9F - - children - - 78C312ED0A3CF750A6C343D6FD5379DC - 5EDB6618C5F47219211BF530C5B7C5AD - 2115BD4433861E8034575A606A205775 - 8B48168B67E0687AE38E01801E70F526 - 53C597FA52EAB09BB776C69D895F9D15 - 6C975A8BA4F7DD6944DDDA45FA5A40CC - 6EDD9715D87DB93BFFB1AF5603088783 - 3C040366FD204605DC6F682FA5C9922B - 36398AEC0402BD15B5E00D3E7FD1E1D6 - 48E26C7F62CB70B01B9A8E5D360CB8C2 - 83ECEEA065278E12A008F82C43F1C6B4 - 1D6BF95474C6B3D6636B5C3DFA365959 - 847592387116CEB85031CBD122A90284 - 7B24F7FF026230EDD5EA49B096A379AC - 9B34651E0E036E74E1125776B0014D74 - 25C8D99584F6A4DA5CB73930C9AF5F97 - EE03DC4E8107A39D71072A6F59C16423 - 533E5ED50EE71B13A90684E8D6215E5C - 16DD273B41825641DC3C329877D3B834 - C71D12F001281E7B97ECF917E386F5AC - 17AEC68D7278556353B571155B6C9D59 - D7E5EE1E72502D687D3CD91328D4C2C5 - 10DCDE9B1B03CBA731C672B28674CFE7 - 69C5959BC11C5EDFD4006BB8B36D2E83 - F44B6F9C2D260B191FBB5063AD75B393 - 452C943DF93199C27667E1A3E9096278 - DE0E54F6AEED36E8A567FF8F893E0653 - 59265159FD88993D2270501D01578588 - F7C90E6815A08C75EDB6801BF14C7DB0 - 7A1371C5CB8567AB9BD40DB8FEC78D99 - D51225FFB5B716C84309FABB9BE5FD0C - - isa - PBXGroup - name - Mantle - path - Mantle - sourceTree - <group> - - D0BCA5D69F4B011200D072D810E7B155 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImagePrefetcher.m - path - SDWebImage/SDWebImagePrefetcher.m - sourceTree - <group> - - D0C3310B1446EB018173986F4498EE5D - - fileRef - A1CC6BA53F6FFAAFF9CD3BA94AE0F24A - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - D0FC59A80F0448FA0DCAE13E41494A72 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UIImageView+WebCache.h - path - SDWebImage/UIImageView+WebCache.h - sourceTree - <group> - - D14A22E44EF10CEA2C562CBE2EE77665 - - isa - PBXTargetDependency - name - SDWebImage - target - A74A079BA044CB665EBF7365E2DE8775 - targetProxy - 5A4D512688D9DCBE5E85BDA83DAA883B - - D1A08D7B676CB358664FE1A7EE3472E3 - - fileRef - 7B24F7FF026230EDD5EA49B096A379AC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - D2D4686778AB448DEA1D4F86054ABEB7 - - fileRef - 4DA9117AC5A1F7A2E9A8D2E685EAF13B - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - D41D8CD98F00B204E9800998ECF8427E - - attributes - - LastSwiftUpdateCheck - 0700 - LastUpgradeCheck - 0700 - - buildConfigurationList - 2D8E8EC45A3A1A1D94AE762CB5028504 - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 7DB346D0F39D3F0E887471402A8071AB - productRefGroup - F656E069E7E0A909F2232AC57834809B - projectDirPath - - projectReferences - - projectRoot - - targets - - 426BC4549A625B5E1E4200D5261A98BF - 93F7C30CD2687A0717B8A3EDC39EFD8E - A74A079BA044CB665EBF7365E2DE8775 - - - D51225FFB5B716C84309FABB9BE5FD0C - - children - - 0EFEF5A87EAC9D0190EF8C78F16A044D - 9E033EC1CE1C9CFB2B6185C29175901B - 0C43511D7D9254088E163727BF0C9287 - - isa - PBXGroup - name - Support Files - path - ../Target Support Files/Mantle - sourceTree - <group> - - D7E5EE1E72502D687D3CD91328D4C2C5 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSError+MTLModelException.h - path - Mantle/NSError+MTLModelException.h - sourceTree - <group> - - D86A3C00BB6838DCCC5C40CDA279FC11 - - buildConfigurations - - EE668C079C0AA3A17EBAD0A9DAEA4365 - 8C6E5192E88648B94D6C7C4B8FFCDEBC - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - D9C7351BDB37E42A7E2CFFBB8253DAFF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageCompat.h - path - SDWebImage/SDWebImageCompat.h - sourceTree - <group> - - DE0A973AD57DA953F7E776CD14F479D4 - - fileRef - 4630A6644E76AADF263AE66897C3F8DF - isa - PBXBuildFile - - DE0E54F6AEED36E8A567FF8F893E0653 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSValueTransformer+MTLInversionAdditions.m - path - Mantle/NSValueTransformer+MTLInversionAdditions.m - sourceTree - <group> - - E4D500DF2DA6B435390AA3E54220676C - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UIButton+WebCache.m - path - SDWebImage/UIButton+WebCache.m - sourceTree - <group> - - E6345C61AB8575A0E8646B73AD969856 - - fileRef - 8E60E7F4AC5CF4611BCD5729676A28F6 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - E72FE1FA640F108A9769E9661E34F3BF - - fileRef - 25C8D99584F6A4DA5CB73930C9AF5F97 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - EAAA72101B53F9D5E29A2631F297FB81 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - name - libSDWebImage.a - path - libSDWebImage.a - sourceTree - BUILT_PRODUCTS_DIR - - ECE329BD20DFCBB901B422FBB7F73FA3 - - containerPortal - D41D8CD98F00B204E9800998ECF8427E - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 426BC4549A625B5E1E4200D5261A98BF - remoteInfo - Mantle - - EE03DC4E8107A39D71072A6F59C16423 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSDictionary+MTLJSONKeyPath.m - path - Mantle/NSDictionary+MTLJSONKeyPath.m - sourceTree - <group> - - EE668C079C0AA3A17EBAD0A9DAEA4365 - - baseConfigurationReference - F61DDF36F9DBAB73E700BB4DC60394D0 - buildSettings - - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_PREFIX_HEADER - Target Support Files/SDWebImage/SDWebImage-prefix.pch - IPHONEOS_DEPLOYMENT_TARGET - 8.4 - MTL_ENABLE_DEBUG_INFO - YES - OTHER_LDFLAGS - - OTHER_LIBTOOLFLAGS - - PRIVATE_HEADERS_FOLDER_PATH - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - EEF2248467AB8464AB72CB730C7FE178 - - fileRef - F7C90E6815A08C75EDB6801BF14C7DB0 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - F0B747FBA2F649FC27663DF0926FFC43 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - SDWebImageManager.m - path - SDWebImage/SDWebImageManager.m - sourceTree - <group> - - F0D2DF741E4223975FD166C5C101479F - - fileRef - 1D6BF95474C6B3D6636B5C3DFA365959 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F344031D6189A73E226D6C201F587941 - - children - - CE59C0317C7FCFC665CE9F086BF23B9F - 21F87EAAB963468B531430B85700EFB2 - - isa - PBXGroup - name - Pods - sourceTree - <group> - - F44B6F9C2D260B191FBB5063AD75B393 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSObject+MTLComparisonAdditions.m - path - Mantle/NSObject+MTLComparisonAdditions.m - sourceTree - <group> - - F61DDF36F9DBAB73E700BB4DC60394D0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - SDWebImage.xcconfig - sourceTree - <group> - - F656E069E7E0A909F2232AC57834809B - - children - - 97E24374BF388DC20017DBE69E756694 - 29FCFFC39CC3A025618818E6CC61E620 - EAAA72101B53F9D5E29A2631F297FB81 - - isa - PBXGroup - name - Products - sourceTree - <group> - - F7B7585021FEDC680689A7B49F8BA3ED - - fileRef - 48E26C7F62CB70B01B9A8E5D360CB8C2 - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - F7C21BAA95FB06060CD17FC5F2614C8E - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - EXTRuntimeExtensions.h - path - Mantle/extobjc/EXTRuntimeExtensions.h - sourceTree - <group> - - F7C90E6815A08C75EDB6801BF14C7DB0 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSValueTransformer+MTLPredefinedTransformerAdditions.m - path - Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.m - sourceTree - <group> - - F8FF07D76760D6A2FF269061E11A8B31 - - fileRef - 79BFA846C3CA7928129D1748DD1064DE - isa - PBXBuildFile - settings - - ATTRIBUTES - - Private - - - - FB41B0AD4A01EFA993FF6AE85870E586 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - SDWebImageOperation.h - path - SDWebImage/SDWebImageOperation.h - sourceTree - <group> - - FD913ECF18E91FD4D8EE34BA8170DB4F - - fileRef - 36398AEC0402BD15B5E00D3E7FD1E1D6 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -DOS_OBJECT_USE_OBJC=0 - - - FE983ADC2960099312AF536D2916BC7A - - fileRef - 4630A6644E76AADF263AE66897C3F8DF - isa - PBXBuildFile - - FF3D94F730A96F1B9FAF43E8DB68E702 - - fileRef - 78C312ED0A3CF750A6C343D6FD5379DC - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - FF880E94BC5F1B73ECBD6429796DC5C3 - - children - - 4630A6644E76AADF263AE66897C3F8DF - 609DD8EF242B56172BA66E6B780EFC65 - - isa - PBXGroup - name - iOS - sourceTree - <group> - - - rootObject - D41D8CD98F00B204E9800998ECF8427E - - +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 04A4FE6BC333B1FC7D35EADA8F59FAD6 /* MTLJSONAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4817E5940C57966D0BE9BD156795F586 /* MTLJSONAdapter.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0563227B6D480B862CA5EF8C36DF51A4 /* MTLModel+NSCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 81F3DC6D474822B7751F77C1224D5786 /* MTLModel+NSCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06B93267BE4B80B2B4B91E5EFCE386D2 /* MTLModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 947778E64A5CD65A0FF83B5C0032DB22 /* MTLModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 07F9C90C31F81C6209BB2166496995BD /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = FB1C2EBF0C3B80EB6971F841AE14A62F /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0CCB6B307EBF17E2D0E3A6AD52F6F51E /* EXTScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A727D2C21750ABE95BD0229A22AB485 /* EXTScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0CE8CA8AA11E395302675F20D318581E /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 58825E777FE3E4D19C342D1855FA2C38 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0F890DAEC588CAAF298B0295BEADA22B /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F319E2350FB05911C91A7C794E5E4B8A /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 167C6B292DCA528550880B434FEC2291 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = C5F3BB746F4D3BDFAF9942015929DB99 /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 17A59C9B4F5727FAF9E3A6D92A9FFABD /* EXTRuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = DB44EEA7E4C382164C434398C64B27AD /* EXTRuntimeExtensions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 19D81E345715F41ED29349DBFF389D55 /* NSDictionary+MTLMappingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5061BC46E67DC754E29D159C61D834EC /* NSDictionary+MTLMappingAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23C0E3CCA5A253FAFA8222CE8EAC10DB /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 594418689C915A512D476806DD4318C4 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2B91954D1D8469415E1164E83DD3D3F1 /* NSValueTransformer+MTLInversionAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF3DD76D9BE9EFF66F59FB6973EE71D /* NSValueTransformer+MTLInversionAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2C1EDB8352EFA6EF8E5CF03C9A8DE0B3 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C37070A84188689B818136141A65F90 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2D097F9B47E61A2F9ED4053728DA7AE6 /* NSDictionary+MTLJSONKeyPath.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8207A117D015FE39C158691746FE1D /* NSDictionary+MTLJSONKeyPath.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 2F47FAC55C2C67D9B7020F19F0282525 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 536092A90452567E5CF0F26B9315ECE1 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6C49FD784BBD20E9AC3BAA80583468 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F24E7265F0AB0A2DB6F9D41B7E9A57E /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 2F844EFF9DA35997018C205261D6AB7E /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6E2FD3572C8CC0576E21008C06ED07 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 357742221D588D4E20EC08431DED1ADD /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F2DAE05155737F6DFE5010CCA9E9AEB4 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 38E1A480C5E47DBA07B084A911FB5A74 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = CF846BDC2920C8556EF05F0104228D79 /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3C43032339841F7D1D94EF12903A2272 /* MTLJSONAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = C49B7D69886A053F3DABA14BA676FD28 /* MTLJSONAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 41C46F19A2CE1E29840F226638A10678 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C4EC8D35F6B80988DF831DDDAE11210D /* metamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 443713C494177E95ECB83613CBFF509B /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 41AA8AB05AFFC60657CEEF952BC26311 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 450F7C2246C6846925F96AB1C920F13C /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DFFE4805B76CDDFBA53510F390DCE569 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 49314918A35FCCA213617D10CFF0DB76 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = BB25739095E0893FA36036881C9DF550 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 495E27E8D0F85F4008E237D0F29EA8AC /* NSError+MTLModelException.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D3D2599111046F9EC05D9C734C1FA56 /* NSError+MTLModelException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4980C203311F9A91EF1A1FCAEC09EBD2 /* EXTRuntimeExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2546BB4536E2EC9679B533DEF29C79BA /* EXTRuntimeExtensions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4BABB4C716353500FDF75187D35DAACF /* MTLModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6893B29FE5A4890AC7F64B03D4CD8969 /* MTLModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4C8E85467CE0C7DA07ED8E0147D379BC /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 981FA2B16EDA07F2706FB4030F6B3735 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51CE2DCCE2BB05F249F22394623F8B61 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 833F787AEAB0384BF67B2FFE8B8A8259 /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 52B96AC796E60DBF61A11151FD25CEE8 /* NSObject+MTLComparisonAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CA3083E8E6DAA31D4A8144D6E2B80AF7 /* NSObject+MTLComparisonAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53B28B8F6AEB1EA1ABCBC8B5C7721BC8 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F092B40BBFE00265AAE2DCC0860A468 /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 542A74473DEBCC4A4A8EFD7219D2957B /* MTLValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F9B459D0A56BB9DDC7B119684FD254 /* MTLValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5B0479AC2D1630DDBEF0DD8145D26640 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 88CBC570DFF6451FB54274113FAB8056 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EB4F27B76513AE918BA5AE0868E87C8 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F84E72F4C1DD5851DD65B4E007964A8 /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EF91E6089579C1512F97F335716B417 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E8E7A1E3D990104598932796F0418F8 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6672A2EFC9413A1DE45CAF0A950CCAAE /* MTLTransformerErrorHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F863E8ADB15F2D817ACE4125094FAAD /* MTLTransformerErrorHandling.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 669FAFC1DA77D8FF3171FA45F80A0AB8 /* Mantle-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F34D921A605F0E5D7C94603C936FD38E /* Mantle-dummy.m */; }; + 6B45ADBBD4925214FD239E8C25214C87 /* NSDictionary+MTLManipulationAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 041529EF9C863A486F6D26B4A0941B3D /* NSDictionary+MTLManipulationAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B6012E259B1804C7CC8D36A07252B07 /* NSError+MTLModelException.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A7954AA0AC3A5F57838A9AC1378D475 /* NSError+MTLModelException.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 7632A90850BF21261FD1585914D71E98 /* NSObject+MTLComparisonAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C55C8220BE3A58F9256C6C7CF7971315 /* NSObject+MTLComparisonAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 77311BF76AED69B8B20F26565C8D728C /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8688ABCF0DF52A14531D2FE245B13BE9 /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 784E07C8B9704257D10696DD47E2A3B4 /* NSValueTransformer+MTLPredefinedTransformerAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FC08351AB1A31E945C746E60A95E1FE7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E5C71195CF0F35F44FDA4D355CFE73C /* NSArray+MTLManipulationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 15A56FF21C9FA9F12936DC78A9C73928 /* NSArray+MTLManipulationAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 82FC12F67E83874B93592218E9FB4CA0 /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = BE7D43D151A63FFE415B8B0AF160A49F /* MBProgressHUD.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8643796F6D97CF73079A7A081616DCC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */; }; + 8910F1F408E128DADF7B99455FC75BD6 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 644376EE1E44D1BD37A6DEEE227035E7 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D26F59BD519CF8EEC576A01D54D0D27 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = F3B80E215683FA20AC3B752DF52A4C89 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8DDD982ED310169D374C9CB067D14160 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DAFBE32CEDD22224470B7573ACDCEA1 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 92CA5FC07193B22632FBF6B194B17790 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D5A1FFE851946CC0F24B193D2C4A0BD /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 940CE8F55652EE4A82B7394408EBAF5A /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DC4C4BE27CD8E7A20B073FCADCD94AC /* ImageIO.framework */; }; + 944BC5B32BE8AFDE9A1E1B88C7F7E86D /* NSDictionary+MTLManipulationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2433BCF2F79A6433FD96C735D370512F /* NSDictionary+MTLManipulationAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 94FC4AE35C0F90BD510E491C20A2F830 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */; }; + 9543DC81B3F035E8C5768FB50B7146F1 /* MTLModel+NSCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BAF33CDC40DC1B1B0A87DAAECC84E99 /* MTLModel+NSCoding.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 97D4C9AB907E4DB49BDC554F4460F5F1 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 02C2C5278AC07313A99A6CE5848BD1EC /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 9BB66BC3A3E2C0AB0BA3ACE98373EF30 /* MTLReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 73D80969C4BA8B462980798871630652 /* MTLReflection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B6E1E26869BC3BFBEAD1B6F35F5A670D /* NSValueTransformer+MTLInversionAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B70369BA6DBE13D788974FBCE89B074D /* NSValueTransformer+MTLInversionAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B79D1B6F33E6229F2C9C4E039A2C3D4A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2F82F4F40E389A83FBE920E7F2B0F33 /* CoreGraphics.framework */; }; + BAE29EFF696E9062CE0DFB3887FF9806 /* EXTScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 97D78E1786AE817D049A637EA73C7A30 /* EXTScope.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C0B7827E6FEB64AEA58656D1DE343E63 /* NSDictionary+MTLMappingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D60ECA46983B3BE9DD5D033B84740F /* NSDictionary+MTLMappingAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C0F6C03A99471ECFE12314035574A63D /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 83D71CFFBE3EFC8DB98CFB7433439C7E /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C2856D746A299604AEDF14F6E1486C83 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C755E0DBC504D37BADF7489B341AAB33 /* SDWebImage-dummy.m */; }; + D1A08D7B676CB358664FE1A7EE3472E3 /* NSArray+MTLManipulationAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F8ED7C5935EFC65234814A554BAC4037 /* NSArray+MTLManipulationAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2889C8C7F4D5F0318979A08961FA865 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = E114E9F3FBA2A7DD492503CCB3AF5A45 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5F42477F1EF5DF86F3EA7BA8D5F6709 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */; }; + DA6BCA2FFCD12B3F51BC4C8142DC60B4 /* Pods-Lesson20-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2346C513D23B86566B87709958032D7B /* Pods-Lesson20-dummy.m */; }; + E2FC0DDE40C5BBEF805D92E46B75DB6B /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = F41624FD5450DAE45051E85843933D84 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E72FE1FA640F108A9769E9661E34F3BF /* NSDictionary+MTLJSONKeyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = B0340DFA1AECB7C56E08745A19C09FA1 /* NSDictionary+MTLJSONKeyPath.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EAF989A3C38452F152FD3A995FC556C5 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E7A82142221894ED6E7C344058BE42C2 /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EEF2248467AB8464AB72CB730C7FE178 /* NSValueTransformer+MTLPredefinedTransformerAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = F1973D40B83A1D4E2082A88D307DEEC7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + F0D2DF741E4223975FD166C5C101479F /* MTLValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEB322F047B1FFD119AF0434CC57370 /* MTLValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F7B7585021FEDC680689A7B49F8BA3ED /* MTLTransformerErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = 1438078BA0A0E7A44CB7A4FA2CA93F02 /* MTLTransformerErrorHandling.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F8FF07D76760D6A2FF269061E11A8B31 /* EXTKeyPathCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7A60BBEB522358ED8E11F0BC2711E2 /* EXTKeyPathCoding.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FABE202EF519CA939E0F85EAA4435DFB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */; }; + FC214077677D4F02E03C6C85F774E028 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 06D244A01A7FC056F24928424FC83B71 /* MBProgressHUD-dummy.m */; }; + FD913ECF18E91FD4D8EE34BA8170DB4F /* MTLReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = B937BA1022EA7FA76CCD2B3DD1096EE3 /* MTLReflection.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FF3D94F730A96F1B9FAF43E8DB68E702 /* Mantle.h in Headers */ = {isa = PBXBuildFile; fileRef = 99D81AE1AA67C2DA6A831B0464EFCC99 /* Mantle.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2C425CDFDFBD0ED61562A911A3A1D168 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = FE2F1D7B9D9FCEA148517E4657B243F4; + remoteInfo = MBProgressHUD; + }; + B89C9957B35E12B08784F91D759DF7CD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 426BC4549A625B5E1E4200D5261A98BF; + remoteInfo = Mantle; + }; + E851E4D7C370600CC9F9466A1B59E583 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 481F6A5B1F431457A9C8DF370AAFC111; + remoteInfo = SDWebImage; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 02C2C5278AC07313A99A6CE5848BD1EC /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; + 041529EF9C863A486F6D26B4A0941B3D /* NSDictionary+MTLManipulationAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+MTLManipulationAdditions.h"; path = "Mantle/NSDictionary+MTLManipulationAdditions.h"; sourceTree = ""; }; + 06D244A01A7FC056F24928424FC83B71 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + 0A727D2C21750ABE95BD0229A22AB485 /* EXTScope.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXTScope.h; path = Mantle/extobjc/EXTScope.h; sourceTree = ""; }; + 0BAF33CDC40DC1B1B0A87DAAECC84E99 /* MTLModel+NSCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "MTLModel+NSCoding.m"; path = "Mantle/MTLModel+NSCoding.m"; sourceTree = ""; }; + 0DAFBE32CEDD22224470B7573ACDCEA1 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; + 1438078BA0A0E7A44CB7A4FA2CA93F02 /* MTLTransformerErrorHandling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MTLTransformerErrorHandling.h; path = Mantle/MTLTransformerErrorHandling.h; sourceTree = ""; }; + 15A56FF21C9FA9F12936DC78A9C73928 /* NSArray+MTLManipulationAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MTLManipulationAdditions.m"; path = "Mantle/NSArray+MTLManipulationAdditions.m"; sourceTree = ""; }; + 189290822D8E163D876842AB4F3464D2 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; + 2346C513D23B86566B87709958032D7B /* Pods-Lesson20-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Lesson20-dummy.m"; sourceTree = ""; }; + 2433BCF2F79A6433FD96C735D370512F /* NSDictionary+MTLManipulationAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+MTLManipulationAdditions.m"; path = "Mantle/NSDictionary+MTLManipulationAdditions.m"; sourceTree = ""; }; + 2546BB4536E2EC9679B533DEF29C79BA /* EXTRuntimeExtensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXTRuntimeExtensions.h; path = Mantle/extobjc/EXTRuntimeExtensions.h; sourceTree = ""; }; + 2F863E8ADB15F2D817ACE4125094FAAD /* MTLTransformerErrorHandling.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MTLTransformerErrorHandling.m; path = Mantle/MTLTransformerErrorHandling.m; sourceTree = ""; }; + 3B6E2FD3572C8CC0576E21008C06ED07 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; + 3DC4C4BE27CD8E7A20B073FCADCD94AC /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + 41AA8AB05AFFC60657CEEF952BC26311 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 4817E5940C57966D0BE9BD156795F586 /* MTLJSONAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MTLJSONAdapter.m; path = Mantle/MTLJSONAdapter.m; sourceTree = ""; }; + 4CEB322F047B1FFD119AF0434CC57370 /* MTLValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MTLValueTransformer.h; path = Mantle/MTLValueTransformer.h; sourceTree = ""; }; + 4E8E7A1E3D990104598932796F0418F8 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 4F84E72F4C1DD5851DD65B4E007964A8 /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + 5061BC46E67DC754E29D159C61D834EC /* NSDictionary+MTLMappingAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+MTLMappingAdditions.h"; path = "Mantle/NSDictionary+MTLMappingAdditions.h"; sourceTree = ""; }; + 536092A90452567E5CF0F26B9315ECE1 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; + 58825E777FE3E4D19C342D1855FA2C38 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; + 594418689C915A512D476806DD4318C4 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; + 5A7954AA0AC3A5F57838A9AC1378D475 /* NSError+MTLModelException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+MTLModelException.m"; path = "Mantle/NSError+MTLModelException.m"; sourceTree = ""; }; + 5C37070A84188689B818136141A65F90 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; + 5F24E7265F0AB0A2DB6F9D41B7E9A57E /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; + 644376EE1E44D1BD37A6DEEE227035E7 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; + 6893B29FE5A4890AC7F64B03D4CD8969 /* MTLModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MTLModel.h; path = Mantle/MTLModel.h; sourceTree = ""; }; + 72F9B459D0A56BB9DDC7B119684FD254 /* MTLValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MTLValueTransformer.m; path = Mantle/MTLValueTransformer.m; sourceTree = ""; }; + 73D80969C4BA8B462980798871630652 /* MTLReflection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MTLReflection.h; path = Mantle/MTLReflection.h; sourceTree = ""; }; + 7A550583AB91E3BF21238ED64668BE12 /* libMBProgressHUD.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMBProgressHUD.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 7B1DF1DF7ACE4CE956CD980137E1010A /* Pods-Lesson20-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Lesson20-resources.sh"; sourceTree = ""; }; + 7D3D2599111046F9EC05D9C734C1FA56 /* NSError+MTLModelException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+MTLModelException.h"; path = "Mantle/NSError+MTLModelException.h"; sourceTree = ""; }; + 801C076D2D679533AAAFC1BBEB49454A /* Pods-Lesson20.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Lesson20.release.xcconfig"; sourceTree = ""; }; + 80B56A609822234EFEC533AE6D581C01 /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 81D60ECA46983B3BE9DD5D033B84740F /* NSDictionary+MTLMappingAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+MTLMappingAdditions.m"; path = "Mantle/NSDictionary+MTLMappingAdditions.m"; sourceTree = ""; }; + 81F3DC6D474822B7751F77C1224D5786 /* MTLModel+NSCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MTLModel+NSCoding.h"; path = "Mantle/MTLModel+NSCoding.h"; sourceTree = ""; }; + 833F787AEAB0384BF67B2FFE8B8A8259 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; + 83D71CFFBE3EFC8DB98CFB7433439C7E /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; + 8688ABCF0DF52A14531D2FE245B13BE9 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; + 88CBC570DFF6451FB54274113FAB8056 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; + 8976725028E6EA01D65F5623A49A9A42 /* Pods-Lesson20-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Lesson20-frameworks.sh"; sourceTree = ""; }; + 8D5A1FFE851946CC0F24B193D2C4A0BD /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 941486DF00A70321DE6E423DED389217 /* Mantle.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Mantle.xcconfig; sourceTree = ""; }; + 947778E64A5CD65A0FF83B5C0032DB22 /* MTLModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MTLModel.m; path = Mantle/MTLModel.m; sourceTree = ""; }; + 96E4F3044C4F8C6CA985E1CF6EB6FEE7 /* libPods-Lesson20.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lesson20.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 97D78E1786AE817D049A637EA73C7A30 /* EXTScope.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXTScope.m; path = Mantle/extobjc/EXTScope.m; sourceTree = ""; }; + 981FA2B16EDA07F2706FB4030F6B3735 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; + 99D81AE1AA67C2DA6A831B0464EFCC99 /* Mantle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Mantle.h; path = Mantle/Mantle.h; sourceTree = ""; }; + 9F092B40BBFE00265AAE2DCC0860A468 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; + A3C9F3B43D1FC984F846DBAA70FBD8F3 /* Pods-Lesson20-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Lesson20-acknowledgements.plist"; sourceTree = ""; }; + A7702EF222EC74A933776F7A446D1C05 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + B0340DFA1AECB7C56E08745A19C09FA1 /* NSDictionary+MTLJSONKeyPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+MTLJSONKeyPath.h"; path = "Mantle/NSDictionary+MTLJSONKeyPath.h"; sourceTree = ""; }; + B70369BA6DBE13D788974FBCE89B074D /* NSValueTransformer+MTLInversionAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValueTransformer+MTLInversionAdditions.m"; path = "Mantle/NSValueTransformer+MTLInversionAdditions.m"; sourceTree = ""; }; + B937BA1022EA7FA76CCD2B3DD1096EE3 /* MTLReflection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MTLReflection.m; path = Mantle/MTLReflection.m; sourceTree = ""; }; + BB25739095E0893FA36036881C9DF550 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; + BDD5C52EAA3C1820D0486DF2204818B9 /* MBProgressHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.xcconfig; sourceTree = ""; }; + BE7D43D151A63FFE415B8B0AF160A49F /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + BE8207A117D015FE39C158691746FE1D /* NSDictionary+MTLJSONKeyPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+MTLJSONKeyPath.m"; path = "Mantle/NSDictionary+MTLJSONKeyPath.m"; sourceTree = ""; }; + C18E2C0F7B947D13E9A340506B63A2E0 /* libMantle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMantle.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C49B7D69886A053F3DABA14BA676FD28 /* MTLJSONAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MTLJSONAdapter.h; path = Mantle/MTLJSONAdapter.h; sourceTree = ""; }; + C4EC8D35F6B80988DF831DDDAE11210D /* metamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = metamacros.h; path = Mantle/extobjc/metamacros.h; sourceTree = ""; }; + C55C8220BE3A58F9256C6C7CF7971315 /* NSObject+MTLComparisonAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MTLComparisonAdditions.m"; path = "Mantle/NSObject+MTLComparisonAdditions.m"; sourceTree = ""; }; + C5F3BB746F4D3BDFAF9942015929DB99 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; + C755E0DBC504D37BADF7489B341AAB33 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + CA3083E8E6DAA31D4A8144D6E2B80AF7 /* NSObject+MTLComparisonAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MTLComparisonAdditions.h"; path = "Mantle/NSObject+MTLComparisonAdditions.h"; sourceTree = ""; }; + CDF3DD76D9BE9EFF66F59FB6973EE71D /* NSValueTransformer+MTLInversionAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValueTransformer+MTLInversionAdditions.h"; path = "Mantle/NSValueTransformer+MTLInversionAdditions.h"; sourceTree = ""; }; + CF846BDC2920C8556EF05F0104228D79 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; + D32653626E8E32F022ACC37644866D6E /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + DA218E59190A7FE8D726FF7A4C25DB78 /* Mantle-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Mantle-prefix.pch"; sourceTree = ""; }; + DB44EEA7E4C382164C434398C64B27AD /* EXTRuntimeExtensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXTRuntimeExtensions.m; path = Mantle/extobjc/EXTRuntimeExtensions.m; sourceTree = ""; }; + DB7A60BBEB522358ED8E11F0BC2711E2 /* EXTKeyPathCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXTKeyPathCoding.h; path = Mantle/extobjc/EXTKeyPathCoding.h; sourceTree = ""; }; + DFFE4805B76CDDFBA53510F390DCE569 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; + E114E9F3FBA2A7DD492503CCB3AF5A45 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; + E7A82142221894ED6E7C344058BE42C2 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; + EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + ED915812001E61CA272C2860FAB9EFF3 /* Pods-Lesson20.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Lesson20.debug.xcconfig"; sourceTree = ""; }; + F1973D40B83A1D4E2082A88D307DEEC7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValueTransformer+MTLPredefinedTransformerAdditions.m"; path = "Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.m"; sourceTree = ""; }; + F2DAE05155737F6DFE5010CCA9E9AEB4 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + F2F82F4F40E389A83FBE920E7F2B0F33 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + F319E2350FB05911C91A7C794E5E4B8A /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + F34D921A605F0E5D7C94603C936FD38E /* Mantle-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Mantle-dummy.m"; sourceTree = ""; }; + F3B80E215683FA20AC3B752DF52A4C89 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; + F41624FD5450DAE45051E85843933D84 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; + F7E8463A28BED78926B23FF22A36FDEC /* Pods-Lesson20-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Lesson20-acknowledgements.markdown"; sourceTree = ""; }; + F8ED7C5935EFC65234814A554BAC4037 /* NSArray+MTLManipulationAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MTLManipulationAdditions.h"; path = "Mantle/NSArray+MTLManipulationAdditions.h"; sourceTree = ""; }; + FB1C2EBF0C3B80EB6971F841AE14A62F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; + FC08351AB1A31E945C746E60A95E1FE7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValueTransformer+MTLPredefinedTransformerAdditions.h"; path = "Mantle/NSValueTransformer+MTLPredefinedTransformerAdditions.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1399F5F5B8A99754AF89DC93A9E100DE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FABE202EF519CA939E0F85EAA4435DFB /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A3F73584F27BA4D5828474FAAA32AA6F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8643796F6D97CF73079A7A081616DCC1 /* Foundation.framework in Frameworks */, + 940CE8F55652EE4A82B7394408EBAF5A /* ImageIO.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DEBC07D9E634FD482D813A0A242491F6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D5F42477F1EF5DF86F3EA7BA8D5F6709 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E81C08F5CCC0A5FBFF4559E2173164C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B79D1B6F33E6229F2C9C4E039A2C3D4A /* CoreGraphics.framework in Frameworks */, + 94FC4AE35C0F90BD510E491C20A2F830 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0F4176F8C35B00F9A62440FCE3D1CA3E /* Pods */ = { + isa = PBXGroup; + children = ( + 444AEA023D7DD4716DFDA252BFD26D2E /* Mantle */, + 26F542C7B0621CC8AB5B325405B34BAA /* MBProgressHUD */, + 803DB36CF53DD24FEA41526E81B87C5D /* SDWebImage */, + ); + name = Pods; + sourceTree = ""; + }; + 122DA2E5084A4393C29BE363C764795C /* Frameworks */ = { + isa = PBXGroup; + children = ( + EA110C10F72BB66ABA2B402E18A31A98 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 26F542C7B0621CC8AB5B325405B34BAA /* MBProgressHUD */ = { + isa = PBXGroup; + children = ( + 4F84E72F4C1DD5851DD65B4E007964A8 /* MBProgressHUD.h */, + BE7D43D151A63FFE415B8B0AF160A49F /* MBProgressHUD.m */, + FE03ECFFCA704692E30BAD3FA9491572 /* Support Files */, + ); + path = MBProgressHUD; + sourceTree = ""; + }; + 2AF5F114F00DFCEF722B313E1725EB38 /* Products */ = { + isa = PBXGroup; + children = ( + C18E2C0F7B947D13E9A340506B63A2E0 /* libMantle.a */, + 7A550583AB91E3BF21238ED64668BE12 /* libMBProgressHUD.a */, + 96E4F3044C4F8C6CA985E1CF6EB6FEE7 /* libPods-Lesson20.a */, + 80B56A609822234EFEC533AE6D581C01 /* libSDWebImage.a */, + ); + name = Products; + sourceTree = ""; + }; + 2D2B0437841E584ED6131EB63E4A69F1 /* Core */ = { + isa = PBXGroup; + children = ( + BB25739095E0893FA36036881C9DF550 /* NSData+ImageContentType.h */, + CF846BDC2920C8556EF05F0104228D79 /* NSData+ImageContentType.m */, + 536092A90452567E5CF0F26B9315ECE1 /* SDImageCache.h */, + 8688ABCF0DF52A14531D2FE245B13BE9 /* SDImageCache.m */, + E114E9F3FBA2A7DD492503CCB3AF5A45 /* SDWebImageCompat.h */, + 02C2C5278AC07313A99A6CE5848BD1EC /* SDWebImageCompat.m */, + DFFE4805B76CDDFBA53510F390DCE569 /* SDWebImageDecoder.h */, + 9F092B40BBFE00265AAE2DCC0860A468 /* SDWebImageDecoder.m */, + F41624FD5450DAE45051E85843933D84 /* SDWebImageDownloader.h */, + F3B80E215683FA20AC3B752DF52A4C89 /* SDWebImageDownloader.m */, + 8D5A1FFE851946CC0F24B193D2C4A0BD /* SDWebImageDownloaderOperation.h */, + F2DAE05155737F6DFE5010CCA9E9AEB4 /* SDWebImageDownloaderOperation.m */, + 0DAFBE32CEDD22224470B7573ACDCEA1 /* SDWebImageManager.h */, + 833F787AEAB0384BF67B2FFE8B8A8259 /* SDWebImageManager.m */, + 5C37070A84188689B818136141A65F90 /* SDWebImageOperation.h */, + 981FA2B16EDA07F2706FB4030F6B3735 /* SDWebImagePrefetcher.h */, + 83D71CFFBE3EFC8DB98CFB7433439C7E /* SDWebImagePrefetcher.m */, + 88CBC570DFF6451FB54274113FAB8056 /* UIButton+WebCache.h */, + 5F24E7265F0AB0A2DB6F9D41B7E9A57E /* UIButton+WebCache.m */, + 58825E777FE3E4D19C342D1855FA2C38 /* UIImage+GIF.h */, + C5F3BB746F4D3BDFAF9942015929DB99 /* UIImage+GIF.m */, + 644376EE1E44D1BD37A6DEEE227035E7 /* UIImage+MultiFormat.h */, + FB1C2EBF0C3B80EB6971F841AE14A62F /* UIImage+MultiFormat.m */, + 41AA8AB05AFFC60657CEEF952BC26311 /* UIImageView+HighlightedWebCache.h */, + F319E2350FB05911C91A7C794E5E4B8A /* UIImageView+HighlightedWebCache.m */, + 594418689C915A512D476806DD4318C4 /* UIImageView+WebCache.h */, + 3B6E2FD3572C8CC0576E21008C06ED07 /* UIImageView+WebCache.m */, + 4E8E7A1E3D990104598932796F0418F8 /* UIView+WebCacheOperation.h */, + E7A82142221894ED6E7C344058BE42C2 /* UIView+WebCacheOperation.m */, + ); + name = Core; + sourceTree = ""; + }; + 2F5AD3B705137C716AC014302C75EF32 /* Support Files */ = { + isa = PBXGroup; + children = ( + 189290822D8E163D876842AB4F3464D2 /* SDWebImage.xcconfig */, + C755E0DBC504D37BADF7489B341AAB33 /* SDWebImage-dummy.m */, + D32653626E8E32F022ACC37644866D6E /* SDWebImage-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; + 444AEA023D7DD4716DFDA252BFD26D2E /* Mantle */ = { + isa = PBXGroup; + children = ( + 99D81AE1AA67C2DA6A831B0464EFCC99 /* Mantle.h */, + C49B7D69886A053F3DABA14BA676FD28 /* MTLJSONAdapter.h */, + 4817E5940C57966D0BE9BD156795F586 /* MTLJSONAdapter.m */, + 6893B29FE5A4890AC7F64B03D4CD8969 /* MTLModel.h */, + 947778E64A5CD65A0FF83B5C0032DB22 /* MTLModel.m */, + 81F3DC6D474822B7751F77C1224D5786 /* MTLModel+NSCoding.h */, + 0BAF33CDC40DC1B1B0A87DAAECC84E99 /* MTLModel+NSCoding.m */, + 73D80969C4BA8B462980798871630652 /* MTLReflection.h */, + B937BA1022EA7FA76CCD2B3DD1096EE3 /* MTLReflection.m */, + 1438078BA0A0E7A44CB7A4FA2CA93F02 /* MTLTransformerErrorHandling.h */, + 2F863E8ADB15F2D817ACE4125094FAAD /* MTLTransformerErrorHandling.m */, + 4CEB322F047B1FFD119AF0434CC57370 /* MTLValueTransformer.h */, + 72F9B459D0A56BB9DDC7B119684FD254 /* MTLValueTransformer.m */, + F8ED7C5935EFC65234814A554BAC4037 /* NSArray+MTLManipulationAdditions.h */, + 15A56FF21C9FA9F12936DC78A9C73928 /* NSArray+MTLManipulationAdditions.m */, + B0340DFA1AECB7C56E08745A19C09FA1 /* NSDictionary+MTLJSONKeyPath.h */, + BE8207A117D015FE39C158691746FE1D /* NSDictionary+MTLJSONKeyPath.m */, + 041529EF9C863A486F6D26B4A0941B3D /* NSDictionary+MTLManipulationAdditions.h */, + 2433BCF2F79A6433FD96C735D370512F /* NSDictionary+MTLManipulationAdditions.m */, + 5061BC46E67DC754E29D159C61D834EC /* NSDictionary+MTLMappingAdditions.h */, + 81D60ECA46983B3BE9DD5D033B84740F /* NSDictionary+MTLMappingAdditions.m */, + 7D3D2599111046F9EC05D9C734C1FA56 /* NSError+MTLModelException.h */, + 5A7954AA0AC3A5F57838A9AC1378D475 /* NSError+MTLModelException.m */, + CA3083E8E6DAA31D4A8144D6E2B80AF7 /* NSObject+MTLComparisonAdditions.h */, + C55C8220BE3A58F9256C6C7CF7971315 /* NSObject+MTLComparisonAdditions.m */, + CDF3DD76D9BE9EFF66F59FB6973EE71D /* NSValueTransformer+MTLInversionAdditions.h */, + B70369BA6DBE13D788974FBCE89B074D /* NSValueTransformer+MTLInversionAdditions.m */, + FC08351AB1A31E945C746E60A95E1FE7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.h */, + F1973D40B83A1D4E2082A88D307DEEC7 /* NSValueTransformer+MTLPredefinedTransformerAdditions.m */, + E4CC59AADF10A78D8341BDB5526033CA /* extobjc */, + 7419D0A026357951131EC31288FC5CF5 /* Support Files */, + ); + path = Mantle; + sourceTree = ""; + }; + 7419D0A026357951131EC31288FC5CF5 /* Support Files */ = { + isa = PBXGroup; + children = ( + 941486DF00A70321DE6E423DED389217 /* Mantle.xcconfig */, + F34D921A605F0E5D7C94603C936FD38E /* Mantle-dummy.m */, + DA218E59190A7FE8D726FF7A4C25DB78 /* Mantle-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Mantle"; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 122DA2E5084A4393C29BE363C764795C /* Frameworks */, + 0F4176F8C35B00F9A62440FCE3D1CA3E /* Pods */, + 2AF5F114F00DFCEF722B313E1725EB38 /* Products */, + DBB476FBDDE7DB935FE9D728F40DD630 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 803DB36CF53DD24FEA41526E81B87C5D /* SDWebImage */ = { + isa = PBXGroup; + children = ( + 2D2B0437841E584ED6131EB63E4A69F1 /* Core */, + 2F5AD3B705137C716AC014302C75EF32 /* Support Files */, + ); + path = SDWebImage; + sourceTree = ""; + }; + DBB476FBDDE7DB935FE9D728F40DD630 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + EBD043C16DC1B99BEA052089A0581931 /* Pods-Lesson20 */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + E4CC59AADF10A78D8341BDB5526033CA /* extobjc */ = { + isa = PBXGroup; + children = ( + DB7A60BBEB522358ED8E11F0BC2711E2 /* EXTKeyPathCoding.h */, + 2546BB4536E2EC9679B533DEF29C79BA /* EXTRuntimeExtensions.h */, + DB44EEA7E4C382164C434398C64B27AD /* EXTRuntimeExtensions.m */, + 0A727D2C21750ABE95BD0229A22AB485 /* EXTScope.h */, + 97D78E1786AE817D049A637EA73C7A30 /* EXTScope.m */, + C4EC8D35F6B80988DF831DDDAE11210D /* metamacros.h */, + ); + name = extobjc; + sourceTree = ""; + }; + EA110C10F72BB66ABA2B402E18A31A98 /* iOS */ = { + isa = PBXGroup; + children = ( + F2F82F4F40E389A83FBE920E7F2B0F33 /* CoreGraphics.framework */, + EA032D1500A40AEEA9F8A7BD2813A823 /* Foundation.framework */, + 3DC4C4BE27CD8E7A20B073FCADCD94AC /* ImageIO.framework */, + ); + name = iOS; + sourceTree = ""; + }; + EBD043C16DC1B99BEA052089A0581931 /* Pods-Lesson20 */ = { + isa = PBXGroup; + children = ( + F7E8463A28BED78926B23FF22A36FDEC /* Pods-Lesson20-acknowledgements.markdown */, + A3C9F3B43D1FC984F846DBAA70FBD8F3 /* Pods-Lesson20-acknowledgements.plist */, + 2346C513D23B86566B87709958032D7B /* Pods-Lesson20-dummy.m */, + 8976725028E6EA01D65F5623A49A9A42 /* Pods-Lesson20-frameworks.sh */, + 7B1DF1DF7ACE4CE956CD980137E1010A /* Pods-Lesson20-resources.sh */, + ED915812001E61CA272C2860FAB9EFF3 /* Pods-Lesson20.debug.xcconfig */, + 801C076D2D679533AAAFC1BBEB49454A /* Pods-Lesson20.release.xcconfig */, + ); + name = "Pods-Lesson20"; + path = "Target Support Files/Pods-Lesson20"; + sourceTree = ""; + }; + FE03ECFFCA704692E30BAD3FA9491572 /* Support Files */ = { + isa = PBXGroup; + children = ( + BDD5C52EAA3C1820D0486DF2204818B9 /* MBProgressHUD.xcconfig */, + 06D244A01A7FC056F24928424FC83B71 /* MBProgressHUD-dummy.m */, + A7702EF222EC74A933776F7A446D1C05 /* MBProgressHUD-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/MBProgressHUD"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 588524F80E52CDAC692441EF490AC57C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 49314918A35FCCA213617D10CFF0DB76 /* NSData+ImageContentType.h in Headers */, + 2F47FAC55C2C67D9B7020F19F0282525 /* SDImageCache.h in Headers */, + D2889C8C7F4D5F0318979A08961FA865 /* SDWebImageCompat.h in Headers */, + 450F7C2246C6846925F96AB1C920F13C /* SDWebImageDecoder.h in Headers */, + E2FC0DDE40C5BBEF805D92E46B75DB6B /* SDWebImageDownloader.h in Headers */, + 92CA5FC07193B22632FBF6B194B17790 /* SDWebImageDownloaderOperation.h in Headers */, + 8DDD982ED310169D374C9CB067D14160 /* SDWebImageManager.h in Headers */, + 2C1EDB8352EFA6EF8E5CF03C9A8DE0B3 /* SDWebImageOperation.h in Headers */, + 4C8E85467CE0C7DA07ED8E0147D379BC /* SDWebImagePrefetcher.h in Headers */, + 5B0479AC2D1630DDBEF0DD8145D26640 /* UIButton+WebCache.h in Headers */, + 0CE8CA8AA11E395302675F20D318581E /* UIImage+GIF.h in Headers */, + 8910F1F408E128DADF7B99455FC75BD6 /* UIImage+MultiFormat.h in Headers */, + 443713C494177E95ECB83613CBFF509B /* UIImageView+HighlightedWebCache.h in Headers */, + 23C0E3CCA5A253FAFA8222CE8EAC10DB /* UIImageView+WebCache.h in Headers */, + 5EF91E6089579C1512F97F335716B417 /* UIView+WebCacheOperation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A7CE0B2F5900B8DE72065180B996B165 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F8FF07D76760D6A2FF269061E11A8B31 /* EXTKeyPathCoding.h in Headers */, + 4980C203311F9A91EF1A1FCAEC09EBD2 /* EXTRuntimeExtensions.h in Headers */, + 0CCB6B307EBF17E2D0E3A6AD52F6F51E /* EXTScope.h in Headers */, + FF3D94F730A96F1B9FAF43E8DB68E702 /* Mantle.h in Headers */, + 41C46F19A2CE1E29840F226638A10678 /* metamacros.h in Headers */, + 3C43032339841F7D1D94EF12903A2272 /* MTLJSONAdapter.h in Headers */, + 0563227B6D480B862CA5EF8C36DF51A4 /* MTLModel+NSCoding.h in Headers */, + 4BABB4C716353500FDF75187D35DAACF /* MTLModel.h in Headers */, + 9BB66BC3A3E2C0AB0BA3ACE98373EF30 /* MTLReflection.h in Headers */, + F7B7585021FEDC680689A7B49F8BA3ED /* MTLTransformerErrorHandling.h in Headers */, + F0D2DF741E4223975FD166C5C101479F /* MTLValueTransformer.h in Headers */, + D1A08D7B676CB358664FE1A7EE3472E3 /* NSArray+MTLManipulationAdditions.h in Headers */, + E72FE1FA640F108A9769E9661E34F3BF /* NSDictionary+MTLJSONKeyPath.h in Headers */, + 6B45ADBBD4925214FD239E8C25214C87 /* NSDictionary+MTLManipulationAdditions.h in Headers */, + 19D81E345715F41ED29349DBFF389D55 /* NSDictionary+MTLMappingAdditions.h in Headers */, + 495E27E8D0F85F4008E237D0F29EA8AC /* NSError+MTLModelException.h in Headers */, + 52B96AC796E60DBF61A11151FD25CEE8 /* NSObject+MTLComparisonAdditions.h in Headers */, + 2B91954D1D8469415E1164E83DD3D3F1 /* NSValueTransformer+MTLInversionAdditions.h in Headers */, + 784E07C8B9704257D10696DD47E2A3B4 /* NSValueTransformer+MTLPredefinedTransformerAdditions.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EF1C003613925663F17E023C73AF519C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5EB4F27B76513AE918BA5AE0868E87C8 /* MBProgressHUD.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 426BC4549A625B5E1E4200D5261A98BF /* Mantle */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0705E2EB1ED884E2B646D5F2180F282B /* Build configuration list for PBXNativeTarget "Mantle" */; + buildPhases = ( + 541D0E339EB299E614EF0FCA9EC8C140 /* Sources */, + 1399F5F5B8A99754AF89DC93A9E100DE /* Frameworks */, + A7CE0B2F5900B8DE72065180B996B165 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Mantle; + productName = Mantle; + productReference = C18E2C0F7B947D13E9A340506B63A2E0 /* libMantle.a */; + productType = "com.apple.product-type.library.static"; + }; + 481F6A5B1F431457A9C8DF370AAFC111 /* SDWebImage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1F4E3C9B7DBD7222F90E395D644A7028 /* Build configuration list for PBXNativeTarget "SDWebImage" */; + buildPhases = ( + 60C6BC77C33453048F318F454239AA76 /* Sources */, + A3F73584F27BA4D5828474FAAA32AA6F /* Frameworks */, + 588524F80E52CDAC692441EF490AC57C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SDWebImage; + productName = SDWebImage; + productReference = 80B56A609822234EFEC533AE6D581C01 /* libSDWebImage.a */; + productType = "com.apple.product-type.library.static"; + }; + F555B3B4421A30352F6B56407915A8C2 /* Pods-Lesson20 */ = { + isa = PBXNativeTarget; + buildConfigurationList = AB0F7172AFAE01CFDE92C793FB97C556 /* Build configuration list for PBXNativeTarget "Pods-Lesson20" */; + buildPhases = ( + FA7FDEEA2DC87B3B6C6424DDEAB5DF6D /* Sources */, + DEBC07D9E634FD482D813A0A242491F6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 136181372345AAD5DC9251326B4F5915 /* PBXTargetDependency */, + E1718EE00094B678DB9FE7E2436A1E55 /* PBXTargetDependency */, + 6379E97587479E1C13174D67F801AB1E /* PBXTargetDependency */, + ); + name = "Pods-Lesson20"; + productName = "Pods-Lesson20"; + productReference = 96E4F3044C4F8C6CA985E1CF6EB6FEE7 /* libPods-Lesson20.a */; + productType = "com.apple.product-type.library.static"; + }; + FE2F1D7B9D9FCEA148517E4657B243F4 /* MBProgressHUD */ = { + isa = PBXNativeTarget; + buildConfigurationList = F2F5671C4613023EE94A2E62DA06031D /* Build configuration list for PBXNativeTarget "MBProgressHUD" */; + buildPhases = ( + 098439AB598DDF1AF51146A2E3E2E562 /* Sources */, + E81C08F5CCC0A5FBFF4559E2173164C7 /* Frameworks */, + EF1C003613925663F17E023C73AF519C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MBProgressHUD; + productName = MBProgressHUD; + productReference = 7A550583AB91E3BF21238ED64668BE12 /* libMBProgressHUD.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = 2AF5F114F00DFCEF722B313E1725EB38 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 426BC4549A625B5E1E4200D5261A98BF /* Mantle */, + FE2F1D7B9D9FCEA148517E4657B243F4 /* MBProgressHUD */, + F555B3B4421A30352F6B56407915A8C2 /* Pods-Lesson20 */, + 481F6A5B1F431457A9C8DF370AAFC111 /* SDWebImage */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 098439AB598DDF1AF51146A2E3E2E562 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FC214077677D4F02E03C6C85F774E028 /* MBProgressHUD-dummy.m in Sources */, + 82FC12F67E83874B93592218E9FB4CA0 /* MBProgressHUD.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 541D0E339EB299E614EF0FCA9EC8C140 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 17A59C9B4F5727FAF9E3A6D92A9FFABD /* EXTRuntimeExtensions.m in Sources */, + BAE29EFF696E9062CE0DFB3887FF9806 /* EXTScope.m in Sources */, + 669FAFC1DA77D8FF3171FA45F80A0AB8 /* Mantle-dummy.m in Sources */, + 04A4FE6BC333B1FC7D35EADA8F59FAD6 /* MTLJSONAdapter.m in Sources */, + 9543DC81B3F035E8C5768FB50B7146F1 /* MTLModel+NSCoding.m in Sources */, + 06B93267BE4B80B2B4B91E5EFCE386D2 /* MTLModel.m in Sources */, + FD913ECF18E91FD4D8EE34BA8170DB4F /* MTLReflection.m in Sources */, + 6672A2EFC9413A1DE45CAF0A950CCAAE /* MTLTransformerErrorHandling.m in Sources */, + 542A74473DEBCC4A4A8EFD7219D2957B /* MTLValueTransformer.m in Sources */, + 7E5C71195CF0F35F44FDA4D355CFE73C /* NSArray+MTLManipulationAdditions.m in Sources */, + 2D097F9B47E61A2F9ED4053728DA7AE6 /* NSDictionary+MTLJSONKeyPath.m in Sources */, + 944BC5B32BE8AFDE9A1E1B88C7F7E86D /* NSDictionary+MTLManipulationAdditions.m in Sources */, + C0B7827E6FEB64AEA58656D1DE343E63 /* NSDictionary+MTLMappingAdditions.m in Sources */, + 6B6012E259B1804C7CC8D36A07252B07 /* NSError+MTLModelException.m in Sources */, + 7632A90850BF21261FD1585914D71E98 /* NSObject+MTLComparisonAdditions.m in Sources */, + B6E1E26869BC3BFBEAD1B6F35F5A670D /* NSValueTransformer+MTLInversionAdditions.m in Sources */, + EEF2248467AB8464AB72CB730C7FE178 /* NSValueTransformer+MTLPredefinedTransformerAdditions.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 60C6BC77C33453048F318F454239AA76 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 38E1A480C5E47DBA07B084A911FB5A74 /* NSData+ImageContentType.m in Sources */, + 77311BF76AED69B8B20F26565C8D728C /* SDImageCache.m in Sources */, + C2856D746A299604AEDF14F6E1486C83 /* SDWebImage-dummy.m in Sources */, + 97D4C9AB907E4DB49BDC554F4460F5F1 /* SDWebImageCompat.m in Sources */, + 53B28B8F6AEB1EA1ABCBC8B5C7721BC8 /* SDWebImageDecoder.m in Sources */, + 8D26F59BD519CF8EEC576A01D54D0D27 /* SDWebImageDownloader.m in Sources */, + 357742221D588D4E20EC08431DED1ADD /* SDWebImageDownloaderOperation.m in Sources */, + 51CE2DCCE2BB05F249F22394623F8B61 /* SDWebImageManager.m in Sources */, + C0F6C03A99471ECFE12314035574A63D /* SDWebImagePrefetcher.m in Sources */, + 2F6C49FD784BBD20E9AC3BAA80583468 /* UIButton+WebCache.m in Sources */, + 167C6B292DCA528550880B434FEC2291 /* UIImage+GIF.m in Sources */, + 07F9C90C31F81C6209BB2166496995BD /* UIImage+MultiFormat.m in Sources */, + 0F890DAEC588CAAF298B0295BEADA22B /* UIImageView+HighlightedWebCache.m in Sources */, + 2F844EFF9DA35997018C205261D6AB7E /* UIImageView+WebCache.m in Sources */, + EAF989A3C38452F152FD3A995FC556C5 /* UIView+WebCacheOperation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FA7FDEEA2DC87B3B6C6424DDEAB5DF6D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DA6BCA2FFCD12B3F51BC4C8142DC60B4 /* Pods-Lesson20-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 136181372345AAD5DC9251326B4F5915 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = FE2F1D7B9D9FCEA148517E4657B243F4 /* MBProgressHUD */; + targetProxy = 2C425CDFDFBD0ED61562A911A3A1D168 /* PBXContainerItemProxy */; + }; + 6379E97587479E1C13174D67F801AB1E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 481F6A5B1F431457A9C8DF370AAFC111 /* SDWebImage */; + targetProxy = E851E4D7C370600CC9F9466A1B59E583 /* PBXContainerItemProxy */; + }; + E1718EE00094B678DB9FE7E2436A1E55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Mantle; + target = 426BC4549A625B5E1E4200D5261A98BF /* Mantle */; + targetProxy = B89C9957B35E12B08784F91D759DF7CD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 186A22BF010EDCCFE9EC34AC7425B3BF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 941486DF00A70321DE6E423DED389217 /* Mantle.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/Mantle/Mantle-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 1F1DCE74980303898CB8238C0E8709EE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BDD5C52EAA3C1820D0486DF2204818B9 /* MBProgressHUD.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 6FD823741523B6BBA156FD2A31130E50 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 72E54AB893AFB440AD7AE8465CF8ADAC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 189290822D8E163D876842AB4F3464D2 /* SDWebImage.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8F38D056DD73D9BDBA2D69FDD1A37A66 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = ED915812001E61CA272C2860FAB9EFF3 /* Pods-Lesson20.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + AF4627FF5D5D72C1389B13F0F0DE4B73 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 941486DF00A70321DE6E423DED389217 /* Mantle.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/Mantle/Mantle-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + C14E31B42496EF5C34C9BF2D27E11E2C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BDD5C52EAA3C1820D0486DF2204818B9 /* MBProgressHUD.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + C7EDC03146FB724B88664EC96A35764C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 801C076D2D679533AAAFC1BBEB49454A /* Pods-Lesson20.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + DBB561A91F69A6EA2B9F6045184C43B9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 189290822D8E163D876842AB4F3464D2 /* SDWebImage.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + EE3433E81723238FDF523A9838FEC7BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0705E2EB1ED884E2B646D5F2180F282B /* Build configuration list for PBXNativeTarget "Mantle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 186A22BF010EDCCFE9EC34AC7425B3BF /* Debug */, + AF4627FF5D5D72C1389B13F0F0DE4B73 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1F4E3C9B7DBD7222F90E395D644A7028 /* Build configuration list for PBXNativeTarget "SDWebImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 72E54AB893AFB440AD7AE8465CF8ADAC /* Debug */, + DBB561A91F69A6EA2B9F6045184C43B9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE3433E81723238FDF523A9838FEC7BD /* Debug */, + 6FD823741523B6BBA156FD2A31130E50 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AB0F7172AFAE01CFDE92C793FB97C556 /* Build configuration list for PBXNativeTarget "Pods-Lesson20" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8F38D056DD73D9BDBA2D69FDD1A37A66 /* Debug */, + C7EDC03146FB724B88664EC96A35764C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F2F5671C4613023EE94A2E62DA06031D /* Build configuration list for PBXNativeTarget "MBProgressHUD" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C14E31B42496EF5C34C9BF2D27E11E2C /* Debug */, + 1F1DCE74980303898CB8238C0E8709EE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Pods.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/MBProgressHUD.xcscheme similarity index 91% rename from Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Pods.xcscheme rename to Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/MBProgressHUD.xcscheme index 5b0a437..f6827b6 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Pods.xcscheme +++ b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/MBProgressHUD.xcscheme @@ -14,10 +14,10 @@ buildForArchiving = "YES"> + BuildableName = 'libMBProgressHUD.a'> diff --git a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Mantle.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Mantle.xcscheme similarity index 96% rename from Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Mantle.xcscheme rename to Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Mantle.xcscheme index 00bd4bb..55465be 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/Mantle.xcscheme +++ b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Mantle.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Pods-Lesson20.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Pods-Lesson20.xcscheme new file mode 100644 index 0000000..a5aac30 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/Pods-Lesson20.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/SDWebImage.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/SDWebImage.xcscheme similarity index 96% rename from Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/SDWebImage.xcscheme rename to Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/SDWebImage.xcscheme index 0d89e29..9a8def4 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/SDWebImage.xcscheme +++ b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/SDWebImage.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 58% rename from Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/xcschememanagement.plist rename to Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist index a6aa469..ca9e6ca 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/azat.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/eduard.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,20 +4,33 @@ SchemeUserState + MBProgressHUD.xcscheme + + isShown + + orderHint + 1 + Mantle.xcscheme isShown + orderHint + 0 - Pods.xcscheme + Pods-Lesson20.xcscheme isShown + orderHint + 2 SDWebImage.xcscheme isShown + orderHint + 3 SuppressBuildableAutocreation @@ -27,12 +40,17 @@ primary - 93F7C30CD2687A0717B8A3EDC39EFD8E + 481F6A5B1F431457A9C8DF370AAFC111 + + primary + + + F555B3B4421A30352F6B56407915A8C2 primary - A74A079BA044CB665EBF7365E2DE8775 + FE2F1D7B9D9FCEA148517E4657B243F4 primary diff --git a/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m new file mode 100644 index 0000000..67a74df --- /dev/null +++ b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_MBProgressHUD : NSObject +@end +@implementation PodsDummy_MBProgressHUD +@end diff --git a/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig new file mode 100644 index 0000000..45c2e16 --- /dev/null +++ b/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MBProgressHUD" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" +OTHER_LDFLAGS = -framework "CoreGraphics" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/Mantle/Mantle.xcconfig b/Pods/Target Support Files/Mantle/Mantle.xcconfig index 8a6a6a9..0a78dab 100644 --- a/Pods/Target Support Files/Mantle/Mantle.xcconfig +++ b/Pods/Target Support Files/Mantle/Mantle.xcconfig @@ -1,5 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Mantle GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Mantle" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Mantle" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" OTHER_LDFLAGS = -framework "Foundation" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.markdown similarity index 76% rename from Pods/Target Support Files/Pods/Pods-acknowledgements.markdown rename to Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.markdown index 4990575..1454d00 100644 --- a/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.markdown @@ -1,6 +1,28 @@ # Acknowledgements This application makes use of the following third party libraries: +## MBProgressHUD + +Copyright (c) 2009-2015 Matej Bukovinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ## Mantle **Copyright (c) GitHub, Inc.** @@ -49,4 +71,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Generated by CocoaPods - http://cocoapods.org +Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.plist similarity index 77% rename from Pods/Target Support Files/Pods/Pods-acknowledgements.plist rename to Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.plist index 54b84eb..3553fe2 100644 --- a/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-acknowledgements.plist @@ -12,6 +12,32 @@ Type PSGroupSpecifier + + FooterText + Copyright (c) 2009-2015 Matej Bukovinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + Title + MBProgressHUD + Type + PSGroupSpecifier + FooterText **Copyright (c) GitHub, Inc.** @@ -71,7 +97,7 @@ THE SOFTWARE. FooterText - Generated by CocoaPods - http://cocoapods.org + Generated by CocoaPods - https://cocoapods.org Title Type diff --git a/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-dummy.m b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-dummy.m new file mode 100644 index 0000000..98385f8 --- /dev/null +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Lesson20 : NSObject +@end +@implementation PodsDummy_Pods_Lesson20 +@end diff --git a/Pods/Target Support Files/Pods/Pods-frameworks.sh b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-frameworks.sh similarity index 93% rename from Pods/Target Support Files/Pods/Pods-frameworks.sh rename to Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-frameworks.sh index 6f76344..893c16a 100755 --- a/Pods/Target Support Files/Pods/Pods-frameworks.sh +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-frameworks.sh @@ -16,7 +16,7 @@ install_framework() local source="$1" fi - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then echo "Symlinked..." @@ -59,8 +59,8 @@ code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" fi } diff --git a/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-resources.sh b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-resources.sh new file mode 100755 index 0000000..e768f92 --- /dev/null +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20-resources.sh @@ -0,0 +1,102 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.debug.xcconfig b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.debug.xcconfig new file mode 100644 index 0000000..b6b491c --- /dev/null +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.debug.xcconfig @@ -0,0 +1,8 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" +LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD" "$PODS_CONFIGURATION_BUILD_DIR/Mantle" "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/Mantle" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"MBProgressHUD" -l"Mantle" -l"SDWebImage" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig new file mode 100644 index 0000000..b6b491c --- /dev/null +++ b/Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig @@ -0,0 +1,8 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" +LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD" "$PODS_CONFIGURATION_BUILD_DIR/Mantle" "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/Mantle" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"MBProgressHUD" -l"Mantle" -l"SDWebImage" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods/Pods-dummy.m b/Pods/Target Support Files/Pods/Pods-dummy.m deleted file mode 100644 index ade64bd..0000000 --- a/Pods/Target Support Files/Pods/Pods-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods : NSObject -@end -@implementation PodsDummy_Pods -@end diff --git a/Pods/Target Support Files/Pods/Pods-resources.sh b/Pods/Target Support Files/Pods/Pods-resources.sh deleted file mode 100755 index 16774fb..0000000 --- a/Pods/Target Support Files/Pods/Pods-resources.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Pods/Target Support Files/Pods/Pods.debug.xcconfig deleted file mode 100644 index ab47321..0000000 --- a/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Mantle" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Mantle" -l"SDWebImage" -framework "Foundation" -framework "ImageIO" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Pods/Target Support Files/Pods/Pods.release.xcconfig deleted file mode 100644 index ab47321..0000000 --- a/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Mantle" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Mantle" -l"SDWebImage" -framework "Foundation" -framework "ImageIO" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig b/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig index 51c594b..0011c71 100644 --- a/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig +++ b/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig @@ -1,5 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/Mantle" "${PODS_ROOT}/Headers/Public/SDWebImage" OTHER_LDFLAGS = -framework "ImageIO" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES From b915161700aa9f367af518c4c9b37fd2a44fbd9c Mon Sep 17 00:00:00 2001 From: Ryazapov Date: Tue, 14 Jun 2016 01:57:23 +0300 Subject: [PATCH 2/2] add intro --- Lesson20.xcodeproj/project.pbxproj | 24 +++ .../UserInterfaceState.xcuserstate | Bin 24610 -> 34139 bytes Lesson20/Base.lproj/Main.storyboard | 182 +++++++++++------- Lesson20/DetailViewController.m | 9 +- Lesson20/FilmsTableViewCell.h | 2 + Lesson20/FilmsTableViewCell.m | 1 + Lesson20/HintForTableView.h | 13 ++ Lesson20/HintForTableView.m | 27 +++ Lesson20/HintForTableViewController.h | 13 ++ Lesson20/HintForTableViewController.m | 37 ++++ Lesson20/HintView.h | 13 ++ Lesson20/HintView.m | 33 ++++ Lesson20/HintViewController.h | 13 ++ Lesson20/HintViewController.m | 35 ++++ Lesson20/Info.plist | 13 +- Lesson20/NetManager.m | 2 + Lesson20/ViewController.m | 16 +- 17 files changed, 346 insertions(+), 87 deletions(-) create mode 100644 Lesson20/HintForTableView.h create mode 100644 Lesson20/HintForTableView.m create mode 100644 Lesson20/HintForTableViewController.h create mode 100644 Lesson20/HintForTableViewController.m create mode 100644 Lesson20/HintView.h create mode 100644 Lesson20/HintView.m create mode 100644 Lesson20/HintViewController.h create mode 100644 Lesson20/HintViewController.m diff --git a/Lesson20.xcodeproj/project.pbxproj b/Lesson20.xcodeproj/project.pbxproj index 7818690..774e66a 100644 --- a/Lesson20.xcodeproj/project.pbxproj +++ b/Lesson20.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 23DC247C1D0EB001007E8B94 /* HintForTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 23DC247B1D0EB001007E8B94 /* HintForTableViewController.m */; }; + 23DC247F1D0EB13D007E8B94 /* HintForTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23DC247E1D0EB13D007E8B94 /* HintForTableView.m */; }; + 23DC24821D0ED3A3007E8B94 /* HintViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 23DC24811D0ED3A3007E8B94 /* HintViewController.m */; }; + 23DC24851D0ED569007E8B94 /* HintView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23DC24841D0ED569007E8B94 /* HintView.m */; }; AA2557D71CD0FF3A0085836C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AA2557D61CD0FF3A0085836C /* main.m */; }; AA2557DA1CD0FF3A0085836C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AA2557D91CD0FF3A0085836C /* AppDelegate.m */; }; AA2557DD1CD0FF3A0085836C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA2557DC1CD0FF3A0085836C /* ViewController.m */; }; @@ -23,6 +27,14 @@ /* Begin PBXFileReference section */ 1E7C3DBE12049E2FC1E846B2 /* libPods-Lesson20.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lesson20.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 23DC247A1D0EB001007E8B94 /* HintForTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HintForTableViewController.h; sourceTree = ""; }; + 23DC247B1D0EB001007E8B94 /* HintForTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HintForTableViewController.m; sourceTree = ""; }; + 23DC247D1D0EB13D007E8B94 /* HintForTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HintForTableView.h; sourceTree = ""; }; + 23DC247E1D0EB13D007E8B94 /* HintForTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HintForTableView.m; sourceTree = ""; }; + 23DC24801D0ED3A3007E8B94 /* HintViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HintViewController.h; sourceTree = ""; }; + 23DC24811D0ED3A3007E8B94 /* HintViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HintViewController.m; sourceTree = ""; }; + 23DC24831D0ED569007E8B94 /* HintView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HintView.h; sourceTree = ""; }; + 23DC24841D0ED569007E8B94 /* HintView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HintView.m; sourceTree = ""; }; 3BDCB65A70E7C9819517DDC0 /* Pods-Lesson20.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lesson20.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lesson20/Pods-Lesson20.release.xcconfig"; sourceTree = ""; }; AA2557D21CD0FF3A0085836C /* Lesson20.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Lesson20.app; sourceTree = BUILT_PRODUCTS_DIR; }; AA2557D61CD0FF3A0085836C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -114,6 +126,14 @@ AA2557F21CD106AB0085836C /* FilmsTableViewCell.h */, AA2557F31CD106AB0085836C /* FilmsTableViewCell.m */, AA2557F41CD106AB0085836C /* FilmsTableViewCell.xib */, + 23DC247A1D0EB001007E8B94 /* HintForTableViewController.h */, + 23DC247B1D0EB001007E8B94 /* HintForTableViewController.m */, + 23DC247D1D0EB13D007E8B94 /* HintForTableView.h */, + 23DC247E1D0EB13D007E8B94 /* HintForTableView.m */, + 23DC24801D0ED3A3007E8B94 /* HintViewController.h */, + 23DC24811D0ED3A3007E8B94 /* HintViewController.m */, + 23DC24831D0ED569007E8B94 /* HintView.h */, + 23DC24841D0ED569007E8B94 /* HintView.m */, ); path = Lesson20; sourceTree = ""; @@ -249,12 +269,16 @@ buildActionMask = 2147483647; files = ( AA2557DD1CD0FF3A0085836C /* ViewController.m in Sources */, + 23DC247F1D0EB13D007E8B94 /* HintForTableView.m in Sources */, + 23DC247C1D0EB001007E8B94 /* HintForTableViewController.m in Sources */, AA2557F51CD106AB0085836C /* FilmsTableViewCell.m in Sources */, AA2557F11CD102B80085836C /* NetManager.m in Sources */, + 23DC24821D0ED3A3007E8B94 /* HintViewController.m in Sources */, AA2557DA1CD0FF3A0085836C /* AppDelegate.m in Sources */, AA2557D71CD0FF3A0085836C /* main.m in Sources */, AA2557EE1CD101260085836C /* DetailViewController.m in Sources */, AA2557F91CD10A750085836C /* Film.m in Sources */, + 23DC24851D0ED569007E8B94 /* HintView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/UserInterfaceState.xcuserstate b/Lesson20.xcworkspace/xcuserdata/eduard.xcuserdatad/UserInterfaceState.xcuserstate index 2a521d95fe8345e22e2dfface2d4d75a8d2b2304..4de0a6d0b34ff11c367e4e136a560f248d6bee1e 100644 GIT binary patch literal 34139 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 V$ScjOhE8WOL1^xH)ak6eS^%O0mgWEe literal 24610 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 diff --git a/Lesson20/Base.lproj/Main.storyboard b/Lesson20/Base.lproj/Main.storyboard index b38ec65..641a048 100644 --- a/Lesson20/Base.lproj/Main.storyboard +++ b/Lesson20/Base.lproj/Main.storyboard @@ -1,29 +1,11 @@ - + - - - - - - - - - - - - - - - - - - @@ -41,7 +23,25 @@ - + + + + + + + + + + + + + + + + + + + @@ -69,48 +69,103 @@ + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - + + - + - + @@ -195,21 +250,21 @@ - - + + + - @@ -217,10 +272,10 @@ + - @@ -239,31 +294,13 @@ + - - - - - - - - - - - - - - - - - - - - + @@ -281,10 +318,7 @@ - + - - - diff --git a/Lesson20/DetailViewController.m b/Lesson20/DetailViewController.m index 461bd5b..83f2761 100644 --- a/Lesson20/DetailViewController.m +++ b/Lesson20/DetailViewController.m @@ -12,6 +12,7 @@ #import "NetManager.h" @interface DetailViewController () + @property (weak, nonatomic) IBOutlet UIImageView *posterImageView; @property (weak, nonatomic) IBOutlet UINavigationItem *filmNameNavigationItem; @property (weak, nonatomic) IBOutlet UILabel *ratingLabel; @@ -43,14 +44,18 @@ - (void)viewDidLoad { self.genreLabel.text = self.film.genre; self.descriptionTextView.text = self.film.filmDescription; [hud hide:YES]; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [self performSelector:@selector(showHint) withObject:nil afterDelay:0.1]; + }); }); } }]; }); } -- (IBAction)doneButtonDidClick:(id)sender { -// [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; +- (void)showHint { + [self performSegueWithIdentifier:@"toHitViewController" sender:self]; } @end diff --git a/Lesson20/FilmsTableViewCell.h b/Lesson20/FilmsTableViewCell.h index 48be0d9..a81d8a5 100644 --- a/Lesson20/FilmsTableViewCell.h +++ b/Lesson20/FilmsTableViewCell.h @@ -9,5 +9,7 @@ #import @interface FilmsTableViewCell : UITableViewCell + @property (nonatomic, strong) id model; + @end diff --git a/Lesson20/FilmsTableViewCell.m b/Lesson20/FilmsTableViewCell.m index 42ac451..613a192 100644 --- a/Lesson20/FilmsTableViewCell.m +++ b/Lesson20/FilmsTableViewCell.m @@ -11,6 +11,7 @@ #import @interface FilmsTableViewCell () + @property (weak, nonatomic) IBOutlet UIImageView *posterImage; @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *premiereLabel; diff --git a/Lesson20/HintForTableView.h b/Lesson20/HintForTableView.h new file mode 100644 index 0000000..4c08897 --- /dev/null +++ b/Lesson20/HintForTableView.h @@ -0,0 +1,13 @@ +// +// HintForTableView.h +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import + +@interface HintForTableView : UIView + +@end diff --git a/Lesson20/HintForTableView.m b/Lesson20/HintForTableView.m new file mode 100644 index 0000000..6db7678 --- /dev/null +++ b/Lesson20/HintForTableView.m @@ -0,0 +1,27 @@ +// +// HintForTableView.m +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import "HintForTableView.h" + +@implementation HintForTableView + +- (void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0 alpha:0.6].CGColor); + CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); + CGContextFillRect(context, rect); + + UINavigationController *root = (id)[UIApplication sharedApplication].keyWindow.rootViewController; + UITableViewController *rootTableVC = (id)root.viewControllers.firstObject; + CGRect frame = [rootTableVC.tableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]; + CGRect destFrame = [rootTableVC.tableView convertRect:frame toView:self]; + CGContextClearRect(context, destFrame); + CGContextDrawPath(context, kCGPathFill); +} + +@end diff --git a/Lesson20/HintForTableViewController.h b/Lesson20/HintForTableViewController.h new file mode 100644 index 0000000..f11ae74 --- /dev/null +++ b/Lesson20/HintForTableViewController.h @@ -0,0 +1,13 @@ +// +// HintForTableViewController.h +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import + +@interface HintForTableViewController : UIViewController + +@end diff --git a/Lesson20/HintForTableViewController.m b/Lesson20/HintForTableViewController.m new file mode 100644 index 0000000..063c7a0 --- /dev/null +++ b/Lesson20/HintForTableViewController.m @@ -0,0 +1,37 @@ +// +// HintForTableViewController.m +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import "HintForTableViewController.h" + +@implementation HintForTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor clearColor]; +} + +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; + [coordinator animateAlongsideTransition:nil completion:^(id _Nonnull context) { + [self.view setNeedsDisplay]; + }]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + UINavigationController *root = (id)[UIApplication sharedApplication].keyWindow.rootViewController; + UITableViewController *rootTableVC = (id)root.viewControllers.firstObject; + CGRect frame = [rootTableVC.tableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]; + UITouch *touch = [touches anyObject]; + CGPoint point = [touch locationInView:self.view]; + if (point.x >= frame.origin.x && point.x <= frame.size.width && + point.y >= (frame.origin.y + root.navigationBar.frame.size.height) && point.y <= (frame.origin.y + frame.size.height + root.navigationBar.frame.size.height)) { + [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; + } +} + +@end diff --git a/Lesson20/HintView.h b/Lesson20/HintView.h new file mode 100644 index 0000000..418af60 --- /dev/null +++ b/Lesson20/HintView.h @@ -0,0 +1,13 @@ +// +// HintView.h +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import + +@interface HintView : UIView + +@end diff --git a/Lesson20/HintView.m b/Lesson20/HintView.m new file mode 100644 index 0000000..bcb7416 --- /dev/null +++ b/Lesson20/HintView.m @@ -0,0 +1,33 @@ +// +// HintView.m +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import "HintView.h" +#import "HintViewController.h" + +@interface HintViewController () + +@property (weak, nonatomic) IBOutlet UIImageView *posterImage; + +@end + +@implementation HintView + +- (void)drawRect:(CGRect)rect { + UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; + HintViewController *dtv = (HintViewController *)[mainStoryboard instantiateViewControllerWithIdentifier: @"hintView"]; + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0 alpha:0.6].CGColor); + CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); + CGContextFillRect(context, rect); + + CGRect destFrame = [dtv.view convertRect:dtv.posterImage.frame toView:nil]; + CGRect frame = CGRectMake(destFrame.origin.x - 4, destFrame.origin.y, destFrame.size.width, destFrame.size.height); + CGContextClearRect(context, frame); + CGContextDrawPath(context, kCGPathFill); +} +@end diff --git a/Lesson20/HintViewController.h b/Lesson20/HintViewController.h new file mode 100644 index 0000000..ba07b92 --- /dev/null +++ b/Lesson20/HintViewController.h @@ -0,0 +1,13 @@ +// +// HintViewController.h +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import + +@interface HintViewController : UIViewController + +@end diff --git a/Lesson20/HintViewController.m b/Lesson20/HintViewController.m new file mode 100644 index 0000000..de4209b --- /dev/null +++ b/Lesson20/HintViewController.m @@ -0,0 +1,35 @@ +// +// HintViewController.m +// Lesson20 +// +// Created by Эдуард Рязапов on 13.06.16. +// Copyright © 2016 Azat Almeev. All rights reserved. +// + +#import "HintViewController.h" + +@interface HintViewController () + +@property (weak, nonatomic) IBOutlet UIImageView *posterImage; + +@end + +@implementation HintViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor clearColor]; +} + +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; + [coordinator animateAlongsideTransition:nil completion:^(id _Nonnull context) { + [self.view setNeedsDisplay]; + }]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; +} + +@end diff --git a/Lesson20/Info.plist b/Lesson20/Info.plist index 54bbf79..d03c64a 100644 --- a/Lesson20/Info.plist +++ b/Lesson20/Info.plist @@ -2,12 +2,6 @@ - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - CFBundleDevelopmentRegion en CFBundleExecutable @@ -28,6 +22,11 @@ 1 LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -39,8 +38,6 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad diff --git a/Lesson20/NetManager.m b/Lesson20/NetManager.m index 38ccd94..263b613 100644 --- a/Lesson20/NetManager.m +++ b/Lesson20/NetManager.m @@ -9,7 +9,9 @@ #import "NetManager.h" @interface NetManager () + @property (nonatomic, readonly) NSURLSession *session; + @end @implementation NetManager diff --git a/Lesson20/ViewController.m b/Lesson20/ViewController.m index 7189bce..0fed4b2 100644 --- a/Lesson20/ViewController.m +++ b/Lesson20/ViewController.m @@ -33,12 +33,20 @@ - (void)viewDidLoad { self.films = [MTLJSONAdapter modelsOfClass:[Film class] fromJSONArray:[data valueForKeyPath:@"filmsData"] error:nil]; [self.tableView reloadData]; [hud hide:YES]; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [self performSelector:@selector(showHint) withObject:nil afterDelay:0.1]; + }); }); } }]; }); } +- (void)showHint { + [self performSegueWithIdentifier:@"toHitTableViewController" sender:self]; +} + - (IBAction)returnToListVC:(UIStoryboardSegue *)sender { } @@ -70,9 +78,11 @@ - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NS } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - UINavigationController *nvc = [segue destinationViewController]; - DetailViewController *vc = [[nvc viewControllers] firstObject]; - vc.film = self.films[self.selectedItem]; + if ([[segue identifier] isEqualToString:@"ShowDetail"]) { + UINavigationController *nvc = [segue destinationViewController]; + DetailViewController *vc = [[nvc viewControllers] firstObject]; + vc.film = self.films[self.selectedItem]; + } } @end