diff --git a/BFRImageViewController/BFRBackLoadedImageSource.h b/BFRImageViewController/BFRBackLoadedImageSource.h index cded45e..204e337 100644 --- a/BFRImageViewController/BFRBackLoadedImageSource.h +++ b/BFRImageViewController/BFRBackLoadedImageSource.h @@ -9,14 +9,16 @@ #import #import +typedef void(^onHiResDownloadComplete)(UIImage * _Nullable, NSError * _Nullable); + /*! This class allows you to show an image that you already have available initially, while loading a higher fidelity version in the background which will replace the lower fidelity one. This class assumes that the new image will have the same aspect ratio as the old one. */ @interface BFRBackLoadedImageSource : NSObject /*! The image that is available for use right away. */ @property (strong, nonatomic, readonly, nonnull) UIImage *image; -/*! This is called on the main thread when the higher resolution image is finished loading. */ -@property (copy) void (^ _Nonnull onHighResImageLoaded)(UIImage * _Nullable highResImage); +/*! This is called on the main thread when the higher resolution image is finished loading. Assign to this if you wish to do any specific logic when the download completes. NOTE: Do not attempt to assign the image to any @c BFRImageContainerViewController, this is done for you. Use this block soley for any other business logic you might have to carry out. */ +@property (copy) onHiResDownloadComplete _Nullable onCompletion; /*! Use initWithInitialImage:hiResURL instead. */ - (instancetype _Nullable)init NS_UNAVAILABLE; diff --git a/BFRImageViewController/BFRBackLoadedImageSource.m b/BFRImageViewController/BFRBackLoadedImageSource.m index 4a8254c..164f778 100644 --- a/BFRImageViewController/BFRBackLoadedImageSource.m +++ b/BFRImageViewController/BFRBackLoadedImageSource.m @@ -7,6 +7,7 @@ // #import "BFRBackLoadedImageSource.h" +#import "BFRImageViewerConstants.h" #import #import #import @@ -24,6 +25,7 @@ @interface BFRBackLoadedImageSource() @implementation BFRBackLoadedImageSource #pragma mark - Initializers + - (instancetype)initWithInitialImage:(UIImage *)image hiResURL:(NSURL *)url { self = [super init]; @@ -38,18 +40,23 @@ - (instancetype)initWithInitialImage:(UIImage *)image hiResURL:(NSURL *)url { } #pragma mark - Backloading + - (void)loadHighFidelityImage { [[PINRemoteImageManager sharedImageManager] downloadImageWithURL:self.url options:PINRemoteImageManagerDisallowAlternateRepresentations progressDownload:nil completion:^(PINRemoteImageManagerResult * _Nonnull result) { dispatch_async(dispatch_get_main_queue(), ^{ - if (result.image) { - if (self.onHighResImageLoaded != nil) { - dispatch_async(dispatch_get_main_queue(), ^ { - self.onHighResImageLoaded(result.image); - }); + if (self.onCompletion != nil) { + if (result.image) { + self.onCompletion(result.image, nil); + } else { + NSLog(@"BFRImageViewer: Unable to load high resolution photo via backloading."); + NSError *downloadError = [NSError errorWithDomain:HI_RES_IMG_ERROR_DOMAIN + code:HI_RES_IMG_ERROR_CODE + userInfo:@{NSLocalizedFailureReasonErrorKey:[NSString stringWithFormat:@"Failed to download an image for high resolution url %@", self.url.absoluteString]}]; + self.onCompletion(nil, downloadError); } - } else { - NSLog(@"BFRImageViewer: Unable to load high resolution photo via backloading."); } + + [[NSNotificationCenter defaultCenter] postNotificationName:NOTE_HI_RES_IMG_DOWNLOADED object:result.image]; }); }]; } diff --git a/BFRImageViewController/BFRImageContainerViewController.h b/BFRImageViewController/BFRImageContainerViewController.h index bdac2db..cabaa83 100644 --- a/BFRImageViewController/BFRImageContainerViewController.h +++ b/BFRImageViewController/BFRImageContainerViewController.h @@ -8,24 +8,41 @@ #import +typedef NS_ENUM(NSUInteger, BFRImageAssetType) { + BFRImageAssetTypeImage, + BFRImageAssetTypeRemoteImage, + BFRImageAssetTypeGIF, + BFRImageAssetTypeLivePhoto, + BFRImageAssetTypeUnknown +}; + /*! This class holds an image to view, if you need an image viewer alloc @C BFRImageViewController instead. This class isn't meant to instanitated outside of it. */ @interface BFRImageContainerViewController : UIViewController /*! Source of the image, which should either be @c NSURL or @c UIIimage. */ -@property (strong, nonatomic, nonnull) id imgSrc; +@property(strong, nonatomic, nonnull) id imgSrc; + +/*! The type of asset that is being represented by the given @p imgSrc. */ +@property(nonatomic, assign) BFRImageAssetType assetType; /*! This will determine whether to change certain behaviors for 3D touch considerations based on its value. */ -@property (nonatomic, getter=isBeingUsedFor3DTouch) BOOL usedFor3DTouch; +@property(nonatomic, getter=isBeingUsedFor3DTouch) BOOL usedFor3DTouch; /*! A helper integer to simplify using this view controller inside a @c UIPagerViewController when swiping between views. */ -@property (nonatomic, assign) NSUInteger pageIndex; +@property(nonatomic, assign) NSUInteger pageIndex; -/*! Assigning YES to this property will make the background transparent. */ -@property (nonatomic, getter=isUsingTransparentBackground) BOOL useTransparentBackground; +/*! Assigning YES to this property will make the background transparent. You typically don't set this property yourself, instead, the value is derived from the containing @c BFRImageViewController instance. */ +@property(nonatomic, getter=isUsingTransparentBackground) BOOL useTransparentBackground; + +/*! Assigning YES to this property will disable long pressing media to present the activity view controller. You typically don't set this property yourself, instead, the value is derived from the containing @c BFRImageViewController instance. */ +@property(nonatomic, getter=shouldDisableSharingLongPress) BOOL disableSharingLongPress; /*! If there is more than one image in the containing @c BFRImageViewController - this property is set to YES to make swiping from image to image easier. */ -@property (nonatomic, getter=shouldDisableHorizontalDrag) BOOL disableHorizontalDrag; +@property(nonatomic, getter=shouldDisableHorizontalDrag) BOOL disableHorizontalDrag; + +@property(strong, nonatomic, nullable) NSURLSessionConfiguration *configuration; -@property (strong, nonatomic, nullable) NSURLSessionConfiguration *configuration; +/*! Assigning YES to this property will disable autoplay for live photos when it used with 3DTouch peek feature */ +@property(nonatomic, getter=shouldDisableAutoplayForLivePhoto) BOOL disableAutoplayForLivePhoto; @end diff --git a/BFRImageViewController/BFRImageContainerViewController.m b/BFRImageViewController/BFRImageContainerViewController.m index bb10a9b..2e900ea 100644 --- a/BFRImageViewController/BFRImageContainerViewController.m +++ b/BFRImageViewController/BFRImageContainerViewController.m @@ -8,8 +8,10 @@ #import "BFRImageContainerViewController.h" #import "BFRBackLoadedImageSource.h" +#import "BFRImageViewerDownloadProgressView.h" +#import "BFRImageViewerConstants.h" #import -#import +#import #import #import @@ -21,14 +23,20 @@ @interface BFRImageContainerViewController () )transitionContext { return self.animationDuration; } @@ -102,8 +109,10 @@ - (void)performPresentationAnimation:(id)t self.presentedDeviceOrientation = [[UIDevice currentDevice] orientation]; UIView *animationContainerView = transitionContext.containerView; + UIView *presentingView = [transitionContext viewForKey:UITransitionContextFromViewKey]; UIView *destinationView = [transitionContext viewForKey:UITransitionContextToViewKey]; + self.presentingViewY = presentingView.frame.origin.y; destinationView.alpha = 0.0f; // Hide the first image from showing during the animation @@ -138,8 +147,14 @@ - (void)performDismissingAnimation:(id)tra UIView *animationContainerView = transitionContext.containerView; UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey]; UIView *destinationView = [transitionContext viewForKey:UITransitionContextToViewKey]; + + // Size back the presenting view to ensure it looks fine it rotations occurred + CGSize destinationViewTargetSize = animationContainerView.bounds.size; + CGPoint destinationViewTargetPoint = CGPointMake(0, self.presentingViewY); + CGRect destinationViewRect = CGRectMake(destinationViewTargetPoint.x, destinationViewTargetPoint.y, + destinationViewTargetSize.width, destinationViewTargetSize.height); + destinationView.frame = destinationViewRect; destinationView.alpha = 0.0f; - destinationView.frame = animationContainerView.frame; // Hide the first image from showing during the animation, and the original image fromView.subviews.firstObject.hidden = YES; @@ -148,7 +163,7 @@ - (void)performDismissingAnimation:(id)tra [animationContainerView addSubview:destinationView]; if (self.shouldDismissWithoutCustomTransition == NO) { - [animationContainerView addSubview:temporaryAnimatedImageView]; + [animationContainerView addSubview:temporaryAnimatedImageView]; } else { self.animatedImageContainer.alpha = 1.0f; } @@ -169,6 +184,7 @@ - (void)performDismissingAnimation:(id)tra } #pragma mark - Transitioning Delegate + - (id )animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { return self; } diff --git a/BFRImageViewController/BFRImageViewController.h b/BFRImageViewController/BFRImageViewController.h index aba3329..01774f2 100644 --- a/BFRImageViewController/BFRImageViewController.h +++ b/BFRImageViewController/BFRImageViewController.h @@ -20,9 +20,15 @@ /*! Initializes an instance of @C BFRImageViewController from the image source provided. The array can contain a mix of @c NSURL, @c UIImage, @c PHAsset, or @c NSStrings of URLS. This can be a mix of all these types, or just one. Additionally, this customizes the user interface to defer showing some of its user interface elements, such as the close button, until it's been fully popped.*/ - (instancetype _Nullable)initForPeekWithImageSource:(NSArray * _Nonnull)images; -/*! Assigning YES to this property will make the background transparent. */ +/*! Reinitialize with a new images array. Can be used to change the view controller's content on demand */ +- (void)setImageSource:(NSArray * _Nonnull)images; + +/*! Assigning YES to this property will make the background transparent. Default is NO. */ @property (nonatomic, getter=isUsingTransparentBackground) BOOL useTransparentBackground; +/*! Assigning YES to this property will disable long pressing media to present the activity view controller. Default is NO. */ +@property (nonatomic, getter=shouldDisableSharingLongPress) BOOL disableSharingLongPress; + /*! Flag property that toggles the doneButton. Defaults to YES */ @property (nonatomic) BOOL enableDoneButton; @@ -32,4 +38,22 @@ /*! Allows you to assign an index which to show first when opening multiple images. */ @property (nonatomic, assign) NSInteger startingIndex; +/*! Retrieve the index of the currently showing image. */ +@property (nonatomic, assign, readonly) NSInteger currentIndex; + +/*! Allows you to enable autoplay for peek&play feature on photo live view. Default to YES */ +@property (nonatomic, getter=shouldDisableAutoplayForLivePhoto) BOOL disableAutoplayForLivePhoto; + +/*! Dismiss properly with animations */ +- (void)dismiss; + +/*! Dismiss properly with animations and an optional completion handler */ +- (void)dismissWithCompletion:(void (^ __nullable)(void))completion; + +/*! Dismiss properly without custom animations */ +- (void)dismissWithoutCustomAnimation; + +/*! Dismiss properly without custom animations and an optional completion handler */ +- (void)dismissWithoutCustomAnimationWithCompletion:(void (^ __nullable)(void))completion; + @end diff --git a/BFRImageViewController/BFRImageViewController.m b/BFRImageViewController/BFRImageViewController.m index aea1a58..c5ba8d6 100644 --- a/BFRImageViewController/BFRImageViewController.m +++ b/BFRImageViewController/BFRImageViewController.m @@ -10,8 +10,9 @@ #import "BFRImageContainerViewController.h" #import "BFRImageViewerLocalizations.h" #import "BFRImageTransitionAnimator.h" +#import "BFRImageViewerConstants.h" -@interface BFRImageViewController () +@interface BFRImageViewController () /*! This view controller just acts as a container to hold a page view controller, which pages between the view controllers that hold an image. */ @property (strong, nonatomic, nonnull) UIPageViewController *pagerVC; @@ -34,13 +35,18 @@ @interface BFRImageViewController () /*! This is used for nothing more than to defer the hiding of the status bar until the view appears to avoid any awkward jumps in the presenting view. */ @property (nonatomic, getter=shouldHideStatusBar) BOOL hideStatusBar; + @property (strong, nonatomic, nullable) NSURLSessionConfiguration *configuration; +/*! This creates the parallax scrolling effect by essentially clipping the scrolled images and moving with the touch point in scrollViewDidScroll. */ +@property (strong, nonatomic, nonnull) UIView *parallaxView; + @end @implementation BFRImageViewController #pragma mark - Initializers + - (instancetype)initWithImageSource:(NSArray *)images { self = [super init]; @@ -50,6 +56,8 @@ - (instancetype)initWithImageSource:(NSArray *)images { self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; self.enableDoneButton = YES; self.showDoneButtonOnLeft = YES; + self.disableAutoplayForLivePhoto = YES; + self.parallaxView = [UIView new]; } return self; @@ -80,52 +88,23 @@ - (instancetype)initForPeekWithImageSource:(NSArray *)images { self.enableDoneButton = YES; self.showDoneButtonOnLeft = YES; self.usedFor3DTouch = YES; + self.disableAutoplayForLivePhoto = YES; + self.parallaxView = [UIView new]; } return self; } #pragma mark - View Lifecycle + - (void)viewDidLoad { [super viewDidLoad]; // View setup self.view.backgroundColor = self.isUsingTransparentBackground ? [UIColor clearColor] : [UIColor blackColor]; - // Ensure starting index won't trap - if (self.startingIndex >= self.images.count || self.startingIndex < 0) { - self.startingIndex = 0; - } - - // Setup image view controllers - self.imageViewControllers = [NSMutableArray new]; - for (id imgSrc in self.images) { - BFRImageContainerViewController *imgVC = [BFRImageContainerViewController new]; - imgVC.configuration = self.configuration; - imgVC.imgSrc = imgSrc; - imgVC.pageIndex = self.startingIndex; - imgVC.usedFor3DTouch = self.isBeingUsedFor3DTouch; - imgVC.useTransparentBackground = self.isUsingTransparentBackground; - imgVC.disableHorizontalDrag = (self.images.count > 1); - [self.imageViewControllers addObject:imgVC]; - } - - // Set up pager - self.pagerVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; - if (self.imageViewControllers.count > 1) { - self.pagerVC.dataSource = self; - } - [self.pagerVC setViewControllers:@[self.imageViewControllers[self.startingIndex]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; - - // Add pager to view hierarchy - [self addChildViewController:self.pagerVC]; - [[self view] addSubview:[self.pagerVC view]]; - [self.pagerVC didMoveToParentViewController:self]; - - // Add chrome to UI now if we aren't waiting to be peeked into - if (!self.isBeingUsedFor3DTouch) { - [self addChromeToUI]; - } + // Prepare the UI + [self reinitializeUI]; // Register for touch events on the images/scrollviews to hide UI chrome [self registerNotifcations]; @@ -139,12 +118,13 @@ - (void)viewWillAppear:(BOOL)animated { }]; } -- (void)viewWillLayoutSubviews { +- (void)viewDidLayoutSubviews { [super viewWillLayoutSubviews]; [self updateChromeFrames]; } #pragma mark - Status bar + - (BOOL)prefersStatusBarHidden{ return self.shouldHideStatusBar; } @@ -153,7 +133,84 @@ - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { return UIStatusBarAnimationSlide; } -#pragma mark - Chrome +#pragma mark - Accessors + +- (void)setImageSource:(NSArray *)images { + self.images = images; + [self reinitializeUI]; +} + +- (NSInteger)currentIndex { + return ((BFRImageContainerViewController *)self.pagerVC.viewControllers.firstObject).pageIndex; +} + +#pragma mark - Chrome/UI + +- (void)reinitializeUI { + + // Ensure starting index won't trap + if (self.startingIndex >= self.images.count || self.startingIndex < 0) { + self.startingIndex = 0; + } + + if (!self.imageViewControllers) { + // Set up pager + if (!self.pagerVC) { + self.pagerVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll + navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal + options:nil]; + } + + // Add pager to view hierarchy + [self addChildViewController:self.pagerVC]; + [[self view] addSubview:[self.pagerVC view]]; + [self.pagerVC didMoveToParentViewController:self]; + + // Attach to pager controller's scrollview for parallax effect when swiping between images + for (UIView *subview in self.pagerVC.view.subviews) { + if ([subview isKindOfClass:[UIScrollView class]]) { + ((UIScrollView *)subview).delegate = self; + self.parallaxView.backgroundColor = self.view.backgroundColor; + self.parallaxView.hidden = YES; + [subview addSubview:self.parallaxView]; + + CGRect parallaxSeparatorFrame = CGRectZero; + parallaxSeparatorFrame.size = [self sizeForParallaxView]; + self.parallaxView.frame = parallaxSeparatorFrame; + + break; + } + } + + // Add chrome to UI now if we aren't waiting to be peeked into + if (!self.isBeingUsedFor3DTouch) { + [self addChromeToUI]; + } + } + + // Setup image view controllers + self.imageViewControllers = [NSMutableArray new]; + for (id imgSrc in self.images) { + BFRImageContainerViewController *imgVC = [BFRImageContainerViewController new]; + imgVC.configuration = self.configuration; + imgVC.imgSrc = imgSrc; + imgVC.pageIndex = self.startingIndex; + imgVC.usedFor3DTouch = self.isBeingUsedFor3DTouch; + imgVC.useTransparentBackground = self.isUsingTransparentBackground; + imgVC.disableSharingLongPress = self.shouldDisableSharingLongPress; + imgVC.disableHorizontalDrag = (self.images.count > 1); + imgVC.disableAutoplayForLivePhoto = self.shouldDisableAutoplayForLivePhoto; + [self.imageViewControllers addObject:imgVC]; + } + + // Reset pager to the existing view controllers + self.pagerVC.dataSource = self.imageViewControllers.count > 1 ? self : nil; + [self.pagerVC setViewControllers:@[self.imageViewControllers[self.startingIndex]] + direction:UIPageViewControllerNavigationDirectionForward + animated:NO + completion:nil]; +} + - (void)addChromeToUI { if (self.enableDoneButton) { NSBundle *bundle = [NSBundle bundleForClass:[self class]]; @@ -175,11 +232,20 @@ - (void)addChromeToUI { - (void)updateChromeFrames { if (self.enableDoneButton) { CGFloat buttonX = self.showDoneButtonOnLeft ? 20 : CGRectGetMaxX(self.view.bounds) - 37; - self.doneButton.frame = CGRectMake(buttonX, 20, 17, 17); + CGFloat closeButtonY = 20; + + if (@available(iOS 11.0, *)) { + closeButtonY = self.view.safeAreaInsets.top > 0 ? self.view.safeAreaInsets.top : 20; + } + + self.doneButton.frame = CGRectMake(buttonX, closeButtonY, 17, 17); } + + self.parallaxView.hidden = YES; } #pragma mark - Pager Datasource + - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { NSUInteger index = ((BFRImageContainerViewController *)viewController).pageIndex; @@ -210,23 +276,68 @@ - (UIViewController *)pageViewController:(UIPageViewController *)pageViewControl return vc; } +#pragma mark - Scrollview Delegate + Parallax Effect + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + self.parallaxView.hidden = NO; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + [self updateParallaxViewFrame:scrollView]; +} + +- (void)updateParallaxViewFrame:(UIScrollView *)scrollView { + CGRect bounds = scrollView.bounds; + CGRect parallaxSeparatorFrame = self.parallaxView.frame; + + CGPoint offset = bounds.origin; + CGFloat pageWidth = bounds.size.width; + + NSInteger firstPageIndex = floorf(CGRectGetMinX(bounds) / pageWidth); + + CGFloat x = offset.x - pageWidth * firstPageIndex; + CGFloat percentage = x / pageWidth; + + parallaxSeparatorFrame.origin.x = pageWidth * (firstPageIndex + 1) - parallaxSeparatorFrame.size.width * percentage; + + self.parallaxView.frame = parallaxSeparatorFrame; +} + +- (CGSize)sizeForParallaxView { + CGSize parallaxSeparatorSize = CGSizeZero; + + parallaxSeparatorSize.width = PARALLAX_EFFECT_WIDTH * 2; + parallaxSeparatorSize.height = self.view.bounds.size.height; + + return parallaxSeparatorSize; +} + #pragma mark - Utility methods + - (void)dismiss { + [self dismissWithCompletion:nil]; +} + +- (void)dismissWithCompletion:(void (^ __nullable)(void))completion { // If we dismiss from a different image than what was animated in - don't do the custom dismiss transition animation - if (self.startingIndex != ((BFRImageContainerViewController *)self.pagerVC.viewControllers.firstObject).pageIndex) { - [self dismissWithoutCustomAnimation]; + if (self.startingIndex != self.currentIndex) { + [self dismissWithoutCustomAnimationWithCompletion:completion]; return; } self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; - [self dismissViewControllerAnimated:YES completion:nil]; + [self dismissViewControllerAnimated:YES completion:completion]; } - (void)dismissWithoutCustomAnimation { - [[NSNotificationCenter defaultCenter] postNotificationName:@"CancelCustomDismissalTransition" object:@(1)]; + [self dismissWithoutCustomAnimationWithCompletion:nil]; +} + +- (void)dismissWithoutCustomAnimationWithCompletion:(void (^ __nullable)(void))completion { + [[NSNotificationCenter defaultCenter] postNotificationName:NOTE_VC_SHOULD_CANCEL_CUSTOM_TRANSITION object:@(1)]; self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; - [self dismissViewControllerAnimated:YES completion:nil]; + [self dismissViewControllerAnimated:YES completion:completion]; } - (void)handlePop { @@ -235,18 +346,23 @@ - (void)handlePop { } - (void)handleDoneAction { - [self dismiss]; + [self dismissWithCompletion:nil]; } /*! The images and scrollview are not part of this view controller, so instances of @c BFRimageContainerViewController will post notifications when they are touched for things to happen. */ - (void)registerNotifcations { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name:@"DismissUI" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name:@"ImageLoadingError" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePop) name:@"ViewControllerPopped" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissWithoutCustomAnimation) name:@"DimissUIFromDraggingGesture" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name:NOTE_VC_SHOULD_DISMISS object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name:NOTE_IMG_FAILED object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePop) name:NOTE_VC_POPPED object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissWithoutCustomAnimation) name:NOTE_VC_SHOULD_DISMISS_FROM_DRAGGING object:nil]; +} + +- (BOOL)prefersHomeIndicatorAutoHidden { + return YES; } #pragma mark - Memory Considerations + - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; NSLog(@"BFRImageViewer: Dismissing due to memory warning."); diff --git a/BFRImageViewController/BFRImageViewerConstants.h b/BFRImageViewController/BFRImageViewerConstants.h new file mode 100644 index 0000000..aa92d20 --- /dev/null +++ b/BFRImageViewController/BFRImageViewerConstants.h @@ -0,0 +1,31 @@ +// +// BFRImageViewerConstants.h +// BFRImageViewer +// +// Created by Jordan Morgan on 10/5/17. +// Copyright © 2017 Andrew Yates. All rights reserved. +// + +#import + +@interface BFRImageViewerConstants : NSObject + +// Notifications +extern NSString * const NOTE_VC_POPPED; +extern NSString * const NOTE_HI_RES_IMG_DOWNLOADED; +extern NSString * const NOTE_VC_SHOULD_DISMISS; +extern NSString * const NOTE_VC_SHOULD_DISMISS_FROM_DRAGGING; +extern NSString * const NOTE_VC_SHOULD_CANCEL_CUSTOM_TRANSITION; +extern NSString * const NOTE_IMG_FAILED; + +// NSError +extern NSString * const ERROR_TITLE; +extern NSString * const ERROR_MESSAGE; +extern NSString * const GENERAL_OK; +extern NSString * const HI_RES_IMG_ERROR_DOMAIN; +extern NSInteger const HI_RES_IMG_ERROR_CODE; + +// Misc +extern NSInteger const PARALLAX_EFFECT_WIDTH; + +@end diff --git a/BFRImageViewController/BFRImageViewerConstants.m b/BFRImageViewController/BFRImageViewerConstants.m new file mode 100644 index 0000000..5191512 --- /dev/null +++ b/BFRImageViewController/BFRImageViewerConstants.m @@ -0,0 +1,28 @@ +// +// BFRImageViewerConstants.m +// BFRImageViewer +// +// Created by Jordan Morgan on 10/5/17. +// Copyright © 2017 Andrew Yates. All rights reserved. +// + +#import "BFRImageViewerConstants.h" + +@implementation BFRImageViewerConstants + +NSString * const NOTE_VC_POPPED = @"ViewControllerPopped"; +NSString * const NOTE_HI_RES_IMG_DOWNLOADED = @"HiResDownloadDone"; +NSString * const NOTE_VC_SHOULD_DISMISS = @"DismissUI"; +NSString * const NOTE_VC_SHOULD_DISMISS_FROM_DRAGGING = @"DimissUIFromDraggingGesture"; +NSString * const NOTE_VC_SHOULD_CANCEL_CUSTOM_TRANSITION = @"CancelCustomDismissalTransition"; +NSString * const NOTE_IMG_FAILED = @"ImageLoadingError"; + +NSString * const ERROR_TITLE = @"Whoops"; +NSString * const ERROR_MESSAGE = @"Looks like we ran into an issue loading the image, sorry about that!"; +NSString * const GENERAL_OK = @"Ok"; +NSString * const HI_RES_IMG_ERROR_DOMAIN = @"com.bfrImageViewer.backLoadedImgSource"; +NSInteger const HI_RES_IMG_ERROR_CODE = 44; + +NSInteger const PARALLAX_EFFECT_WIDTH = 20; + +@end diff --git a/BFRImageViewController/BFRImageViewerDownloadProgressView.h b/BFRImageViewController/BFRImageViewerDownloadProgressView.h new file mode 100644 index 0000000..bcd1515 --- /dev/null +++ b/BFRImageViewController/BFRImageViewerDownloadProgressView.h @@ -0,0 +1,17 @@ +// +// BFRImageViewerDownloadProgressView.h +// BFRImageViewer +// +// Created by Jordan Morgan on 8/22/18. +// Copyright © 2018 Andrew Yates. All rights reserved. +// + +#import + +@interface BFRImageViewerDownloadProgressView : UIView + +@property (nonatomic, readonly) CGSize progessSize; +@property (nonatomic) CGFloat progress; + +@end + diff --git a/BFRImageViewController/BFRImageViewerDownloadProgressView.m b/BFRImageViewController/BFRImageViewerDownloadProgressView.m new file mode 100644 index 0000000..aacb47d --- /dev/null +++ b/BFRImageViewController/BFRImageViewerDownloadProgressView.m @@ -0,0 +1,99 @@ +// +// BFRImageViewerDownloadProgressView.m +// BFRImageViewer +// +// Created by Jordan Morgan on 8/22/18. +// Copyright © 2018 Andrew Yates. All rights reserved. +// + +#import "BFRImageViewerDownloadProgressView.h" + +static const CGFloat BFR_PROGRESS_LINE_WIDTH = 3.0f; + +@interface BFRImageViewerDownloadProgressView() + +@property (strong, nonatomic, nonnull) CAShapeLayer *progressBackingLayer; +@property (strong, nonatomic, nonnull) CAShapeLayer *progressLayer; +@property (strong, nonatomic, nonnull) UIBezierPath *progressPath; +@property (nonatomic, readwrite) CGSize progessSize; + +@end + +@implementation BFRImageViewerDownloadProgressView + +#pragma mark - Lazy Loads + +- (CAShapeLayer *)progressBackingLayer { + if (!_progressBackingLayer) { + _progressBackingLayer = [CAShapeLayer new]; + _progressBackingLayer.strokeColor = [UIColor lightTextColor].CGColor; + _progressBackingLayer.fillColor = [UIColor clearColor].CGColor; + _progressBackingLayer.strokeEnd = 1; + _progressBackingLayer.lineCap = kCALineCapRound; + _progressBackingLayer.lineWidth = BFR_PROGRESS_LINE_WIDTH; + } + + return _progressBackingLayer; +} + +- (CAShapeLayer *)progressLayer { + if (!_progressLayer) { + _progressLayer = [CAShapeLayer new]; + _progressLayer.strokeColor = [UIColor whiteColor].CGColor; + _progressLayer.fillColor = [UIColor clearColor].CGColor; + _progressLayer.strokeEnd = 0; + _progressLayer.lineCap = kCALineCapRound; + _progressLayer.lineWidth = BFR_PROGRESS_LINE_WIDTH; + } + + return _progressLayer; +} + +#pragma mark - Custom setters + +- (void)setProgress:(CGFloat)progress { + _progress = progress; + if (_progressLayer == nil) return; + _progressLayer.strokeEnd = progress; +} + +#pragma mark - Initializers + +- (instancetype)init { + self = [super init]; + + if (self) { + CGFloat targetHeightWidth = floorf([UIScreen mainScreen].bounds.size.width * .15f); + self.progessSize = CGSizeMake(targetHeightWidth, targetHeightWidth); + + CGRect baseRect = CGRectMake(0, 0, self.progessSize.width, self.progessSize.height); + CGRect targetRect = CGRectInset(baseRect, BFR_PROGRESS_LINE_WIDTH/2, BFR_PROGRESS_LINE_WIDTH/2); + + // Progress circle + CGFloat startAngle = M_PI_2 * 3.0f;; + CGFloat endAngle = startAngle + (M_PI * 2.0); + CGFloat width = CGRectGetWidth(targetRect)/2.0f; + CGFloat height = CGRectGetHeight(targetRect)/2.0f; + CGPoint centerPoint = CGPointMake(width, height); + float radius = targetRect.size.width/2; + + self.progressPath = [UIBezierPath bezierPathWithArcCenter:centerPoint + radius:radius + startAngle:startAngle + endAngle:endAngle + clockwise:YES]; + + self.progressBackingLayer.path = self.progressPath.CGPath; + self.progressLayer.path = self.progressPath.CGPath; + + self.backgroundColor = [UIColor clearColor]; + self.clipsToBounds = NO; + + [self.layer addSublayer:self.progressBackingLayer]; + [self.layer addSublayer:self.progressLayer]; + } + + return self; +} + +@end diff --git a/BFRImageViewController/Resources/lowResImage.png b/BFRImageViewController/Resources/lowResImage.png index 18ffa92..ace4863 100644 Binary files a/BFRImageViewController/Resources/lowResImage.png and b/BFRImageViewController/Resources/lowResImage.png differ diff --git a/BFRImageViewer.podspec b/BFRImageViewer.podspec index 1c8a640..b0bc9ef 100644 --- a/BFRImageViewer.podspec +++ b/BFRImageViewer.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "BFRImageViewer" - s.version = "1.0.32" + s.version = "1.2.3" s.summary = "A turnkey solution to display photos and images of all kinds in your app." s.description = <<-DESC The BFRImageViewer is a turnkey solution to present images within your iOS app 🎉! @@ -11,16 +11,14 @@ Pod::Spec.new do |s| s.screenshot = "https://github.com/bufferapp/buffer-ios-image-viewer/blob/master/demo.gif?raw=true" s.license = "MIT" s.authors = {"Andrew Yates" => "andy@bufferapp.com", - "Jordan Morgan" => "jordan@bufferapp.com", - "Humber Aquino" => "humber@bufferapp.com"} + "Jordan Morgan" => "jordan@bufferapp.com"} s.social_media_url = "https://twitter.com/bufferdevs" - s.source = { :git => "https://github.com/bufferapp/buffer-ios-image-viewer.git", :tag => '1.0.32' } + s.source = { :git => "https://github.com/bufferapp/buffer-ios-image-viewer.git", :tag => '1.2.3' } s.source_files = 'Classes', 'BFRImageViewController/**/*.{h,m}' s.resources = ['BFRImageViewController/**/BFRImageViewerLocalizations.bundle','BFRImageViewController/**/*.{png}'] s.exclude_files = 'BFRImageViewController/**/lowResImage.png' - s.platform = :ios, '8.0' + s.platform = :ios, '10.0' s.requires_arc = true s.frameworks = "UIKit", "Photos" - s.dependency 'DACircularProgress' - s.dependency 'PINRemoteImage', '~> 3.0.0-beta.7' + s.dependency 'PINRemoteImage', '~> 3.0.0-beta.12' end diff --git a/BFRImageViewerDemo/BFRImageViewer.xcodeproj/project.pbxproj b/BFRImageViewerDemo/BFRImageViewer.xcodeproj/project.pbxproj index bcb6adf..97eef65 100644 --- a/BFRImageViewerDemo/BFRImageViewer.xcodeproj/project.pbxproj +++ b/BFRImageViewerDemo/BFRImageViewer.xcodeproj/project.pbxproj @@ -7,9 +7,11 @@ objects = { /* Begin PBXBuildFile section */ + 1702C69A1F86BBFC00104D0B /* BFRImageViewerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1702C6991F86BBFC00104D0B /* BFRImageViewerConstants.m */; }; + 1702C69C1F86C3A400104D0B /* lowResImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 1702C69B1F86C32100104D0B /* lowResImage.png */; }; + 170BE4FF212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 170BE4FE212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.m */; }; 171F4AD01E96BE0500F4AF01 /* BFRBackLoadedImageSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 171F4ACF1E96BE0500F4AF01 /* BFRBackLoadedImageSource.m */; }; 171F4AD31E96C31400F4AF01 /* FourthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 171F4AD21E96C31400F4AF01 /* FourthViewController.m */; }; - 171F4AD71E96D56D00F4AF01 /* lowResImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 171F4AD61E96D56D00F4AF01 /* lowResImage.png */; }; 1797CB8E1E81BB4F00D9F729 /* BFRImageTransitionAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1797CB8D1E81BB4F00D9F729 /* BFRImageTransitionAnimator.m */; }; 1797CB911E81BBB200D9F729 /* ThirdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1797CB901E81BBB200D9F729 /* ThirdViewController.m */; }; 17C1AAB61D9D6EBF00FF1B67 /* BFRImageViewerLocalizations.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 17C1AAB51D9D6EBF00FF1B67 /* BFRImageViewerLocalizations.bundle */; }; @@ -24,15 +26,20 @@ 944B4DC11BFFC0C000B9BF87 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 944B4DBF1BFFC0C000B9BF87 /* LaunchScreen.storyboard */; }; 944B4DE91BFFC0E300B9BF87 /* BFRImageContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 944B4DE61BFFC0E300B9BF87 /* BFRImageContainerViewController.m */; }; 944B4DEA1BFFC0E300B9BF87 /* BFRImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 944B4DE81BFFC0E300B9BF87 /* BFRImageViewController.m */; }; + 95D4797D1F97C348001E54D4 /* FifthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95D4797C1F97C348001E54D4 /* FifthViewController.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 1264A436520DEA8753316972 /* Pods-BFRImageViewer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BFRImageViewer.release.xcconfig"; path = "Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.release.xcconfig"; sourceTree = ""; }; + 1702C6981F86BBFC00104D0B /* BFRImageViewerConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BFRImageViewerConstants.h; sourceTree = ""; }; + 1702C6991F86BBFC00104D0B /* BFRImageViewerConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BFRImageViewerConstants.m; sourceTree = ""; }; + 1702C69B1F86C32100104D0B /* lowResImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lowResImage.png; sourceTree = ""; }; + 170BE4FD212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BFRImageViewerDownloadProgressView.h; sourceTree = ""; }; + 170BE4FE212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BFRImageViewerDownloadProgressView.m; sourceTree = ""; }; 171F4ACE1E96BE0500F4AF01 /* BFRBackLoadedImageSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFRBackLoadedImageSource.h; sourceTree = ""; }; 171F4ACF1E96BE0500F4AF01 /* BFRBackLoadedImageSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFRBackLoadedImageSource.m; sourceTree = ""; }; 171F4AD11E96C31400F4AF01 /* FourthViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FourthViewController.h; sourceTree = ""; }; 171F4AD21E96C31400F4AF01 /* FourthViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FourthViewController.m; sourceTree = ""; }; - 171F4AD61E96D56D00F4AF01 /* lowResImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lowResImage.png; sourceTree = ""; }; 1797CB8C1E81BB4F00D9F729 /* BFRImageTransitionAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFRImageTransitionAnimator.h; sourceTree = ""; }; 1797CB8D1E81BB4F00D9F729 /* BFRImageTransitionAnimator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFRImageTransitionAnimator.m; sourceTree = ""; }; 1797CB8F1E81BBB200D9F729 /* ThirdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThirdViewController.h; sourceTree = ""; }; @@ -58,6 +65,8 @@ 944B4DE61BFFC0E300B9BF87 /* BFRImageContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFRImageContainerViewController.m; sourceTree = ""; }; 944B4DE71BFFC0E300B9BF87 /* BFRImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BFRImageViewController.h; sourceTree = ""; }; 944B4DE81BFFC0E300B9BF87 /* BFRImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BFRImageViewController.m; sourceTree = ""; }; + 95D4797B1F97C348001E54D4 /* FifthViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FifthViewController.h; sourceTree = ""; }; + 95D4797C1F97C348001E54D4 /* FifthViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FifthViewController.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -83,7 +92,7 @@ 578DFD551CB6E7F400BFBD00 /* Resources */ = { isa = PBXGroup; children = ( - 171F4AD61E96D56D00F4AF01 /* lowResImage.png */, + 1702C69B1F86C32100104D0B /* lowResImage.png */, 578DFD581CB6F17B00BFBD00 /* cross.png */, 578DFD591CB6F17B00BFBD00 /* cross@2x.png */, 578DFD5A1CB6F17B00BFBD00 /* cross@3x.png */, @@ -127,6 +136,8 @@ 944B4DAE1BFFC0C000B9BF87 /* Supporting Files */, 171F4AD11E96C31400F4AF01 /* FourthViewController.h */, 171F4AD21E96C31400F4AF01 /* FourthViewController.m */, + 95D4797B1F97C348001E54D4 /* FifthViewController.h */, + 95D4797C1F97C348001E54D4 /* FifthViewController.m */, ); path = BFRImageViewer; sourceTree = ""; @@ -152,6 +163,10 @@ 1797CB8D1E81BB4F00D9F729 /* BFRImageTransitionAnimator.m */, 171F4ACE1E96BE0500F4AF01 /* BFRBackLoadedImageSource.h */, 171F4ACF1E96BE0500F4AF01 /* BFRBackLoadedImageSource.m */, + 1702C6981F86BBFC00104D0B /* BFRImageViewerConstants.h */, + 1702C6991F86BBFC00104D0B /* BFRImageViewerConstants.m */, + 170BE4FD212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.h */, + 170BE4FE212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.m */, ); name = BFRImageViewController; path = ../../BFRImageViewController; @@ -177,8 +192,6 @@ 944B4DA71BFFC0C000B9BF87 /* Sources */, 944B4DA81BFFC0C000B9BF87 /* Frameworks */, 944B4DA91BFFC0C000B9BF87 /* Resources */, - 978A01AA282D37386C67AD06 /* [CP] Embed Pods Frameworks */, - FC7DE66A0F2E7C3D782C1853 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -227,12 +240,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1702C69C1F86C3A400104D0B /* lowResImage.png in Resources */, 578DFD5C1CB6F17B00BFBD00 /* cross@2x.png in Resources */, 944B4DC11BFFC0C000B9BF87 /* LaunchScreen.storyboard in Resources */, 578DFD5D1CB6F17B00BFBD00 /* cross@3x.png in Resources */, 578DFD5B1CB6F17B00BFBD00 /* cross.png in Resources */, 17C1AAB61D9D6EBF00FF1B67 /* BFRImageViewerLocalizations.bundle in Resources */, - 171F4AD71E96D56D00F4AF01 /* lowResImage.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -245,43 +258,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-BFRImageViewer-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 978A01AA282D37386C67AD06 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - FC7DE66A0F2E7C3D782C1853 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -292,12 +278,15 @@ buildActionMask = 2147483647; files = ( 944B4DB91BFFC0C000B9BF87 /* SecondViewController.m in Sources */, + 170BE4FF212DBB2B005703C6 /* BFRImageViewerDownloadProgressView.m in Sources */, 1797CB8E1E81BB4F00D9F729 /* BFRImageTransitionAnimator.m in Sources */, 1797CB911E81BBB200D9F729 /* ThirdViewController.m in Sources */, + 95D4797D1F97C348001E54D4 /* FifthViewController.m in Sources */, 944B4DEA1BFFC0E300B9BF87 /* BFRImageViewController.m in Sources */, 944B4DB31BFFC0C000B9BF87 /* AppDelegate.m in Sources */, 171F4AD01E96BE0500F4AF01 /* BFRBackLoadedImageSource.m in Sources */, 171F4AD31E96C31400F4AF01 /* FourthViewController.m in Sources */, + 1702C69A1F86BBFC00104D0B /* BFRImageViewerConstants.m in Sources */, 944B4DE91BFFC0E300B9BF87 /* BFRImageContainerViewController.m in Sources */, 944B4DB61BFFC0C000B9BF87 /* FirstViewController.m in Sources */, 944B4DB01BFFC0C000B9BF87 /* main.m in Sources */, @@ -413,6 +402,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = UYDA63C4EC; INFOPLIST_FILE = BFRImageViewer/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.buffer.BFRImageViewer; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -426,6 +416,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = UYDA63C4EC; INFOPLIST_FILE = BFRImageViewer/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.buffer.BFRImageViewer; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/BFRImageViewerDemo/BFRImageViewer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/BFRImageViewerDemo/BFRImageViewer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/BFRImageViewerDemo/BFRImageViewer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/BFRImageViewerDemo/BFRImageViewer/AppDelegate.m b/BFRImageViewerDemo/BFRImageViewer/AppDelegate.m index ee3d10b..82b1ecd 100644 --- a/BFRImageViewerDemo/BFRImageViewer/AppDelegate.m +++ b/BFRImageViewerDemo/BFRImageViewer/AppDelegate.m @@ -11,6 +11,7 @@ #import "SecondViewController.h" #import "ThirdViewController.h" #import "FourthViewController.h" +#import "FifthViewController.h" @interface AppDelegate () @@ -24,7 +25,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( UITabBarController *tabVC = [UITabBarController new]; tabVC.view.backgroundColor = [UIColor whiteColor]; - tabVC.viewControllers = @[[FirstViewController new], [SecondViewController new], [ThirdViewController new], [FourthViewController new]]; + tabVC.viewControllers = @[[FirstViewController new], + [SecondViewController new], + [ThirdViewController new], + [FourthViewController new], + [FifthViewController new]]; self.window.rootViewController = tabVC; [self.window makeKeyAndVisible]; diff --git a/BFRImageViewerDemo/BFRImageViewer/FifthViewController.h b/BFRImageViewerDemo/BFRImageViewer/FifthViewController.h new file mode 100644 index 0000000..77de02c --- /dev/null +++ b/BFRImageViewerDemo/BFRImageViewer/FifthViewController.h @@ -0,0 +1,13 @@ +// +// FifthViewController.h +// BFRImageViewer +// +// Created by Omer Emre Aslan on 18.10.2017. +// Copyright © 2017 Andrew Yates. All rights reserved. +// + +#import + +@interface FifthViewController : UIViewController + +@end diff --git a/BFRImageViewerDemo/BFRImageViewer/FifthViewController.m b/BFRImageViewerDemo/BFRImageViewer/FifthViewController.m new file mode 100644 index 0000000..2617e34 --- /dev/null +++ b/BFRImageViewerDemo/BFRImageViewer/FifthViewController.m @@ -0,0 +1,164 @@ +// +// FifthViewController.m +// BFRImageViewer +// +// Created by Omer Emre Aslan on 18.10.2017. +// Copyright © 2017 Andrew Yates. All rights reserved. +// + +#import +#import "FifthViewController.h" +#import "BFRImageViewController.h" + +@interface FifthViewController () + +@end + +@implementation FifthViewController + +- (instancetype) init { + if (self = [super init]) { + self.title = @"Live Photo"; + } + + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self check3DTouch]; + + [self addImageButtonToView]; +} + +#pragma mark - 3D Touch +- (void)check3DTouch { + if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] && self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) { + [self registerForPreviewingWithDelegate:self sourceView:self.view]; + } +} + +- (UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location { + PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; + + if (status == PHAuthorizationStatusAuthorized) { + return [self imageViewControllerForLivePhotoDisableAutoplay:NO]; + } else { + [self showAuthorizationAlertViewControllerAnimated:YES]; + return nil; + } +} + +- (void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit { + [self presentViewController:viewControllerToCommit animated:YES completion:nil]; +} + +- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { + if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] && self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) { + [self check3DTouch]; + } +} + +#pragma mark - Misc +- (void)addImageButtonToView { + UIButton *openImageFromURL = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + openImageFromURL.translatesAutoresizingMaskIntoConstraints = NO; + [openImageFromURL setTitle:@"Open Image" forState:UIControlStateNormal]; + [openImageFromURL addTarget:self + action:@selector(openImage:) + forControlEvents:UIControlEventTouchUpInside]; + [self.view addSubview:openImageFromURL]; + [openImageFromURL.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = YES; + [openImageFromURL.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = YES; +} + +#pragma mark - Actions + +- (void)openImage:(UIButton *)sender { + PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; + + if (status == PHAuthorizationStatusAuthorized) { + BFRImageViewController *imageViewController = [self + imageViewControllerForLivePhotoDisableAutoplay:YES]; + [self presentViewController:imageViewController + animated:YES + completion:nil]; + } else { + [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { + if (status == PHAuthorizationStatusAuthorized) { + BFRImageViewController *imageViewController = [self imageViewControllerForLivePhotoDisableAutoplay:YES]; + [self presentViewController:imageViewController + animated:YES + completion:nil]; + } else { + [self showAuthorizationAlertViewControllerAnimated:YES]; + } + }]; + } + +} + +- (void)showAuthorizationAlertViewControllerAnimated:(BOOL)isAnimated { + UIAlertController *controller = [UIAlertController + alertControllerWithTitle:NSLocalizedString(@"Authorization Failed!", nil) + message:NSLocalizedString(@"In order to access live photo feature, please allow authorization on Settings.", nil) + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *closeAction = [UIAlertAction + actionWithTitle:NSLocalizedString(@"Close", nil) + style:UIAlertActionStyleDefault + handler:nil]; + [controller addAction:closeAction]; + + [self presentViewController:controller + animated:isAnimated + completion:nil]; +} + +- (BFRImageViewController *)imageViewControllerForLivePhotoDisableAutoplay:(BOOL)shouldDisableAutoPlay { + PHFetchOptions *options = [[PHFetchOptions alloc] init]; + options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; + options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d", PHAssetMediaTypeImage]; + options.predicate = [NSPredicate predicateWithFormat:@"mediaSubtype == %d", PHAssetMediaSubtypePhotoLive]; + options.includeAllBurstAssets = NO; + PHFetchResult *allLivePhotos = [PHAsset fetchAssetsWithOptions:options]; + + NSMutableArray *livePhotosToShow = [NSMutableArray new]; + + if (allLivePhotos.count > 0) { + NSInteger maxResults = 4; + NSInteger currentFetchCount = 0; + + for (PHFetchResult *result in allLivePhotos) { + if (currentFetchCount == maxResults) { + break; + } + + [livePhotosToShow addObject:result]; + currentFetchCount++; + } + + BFRImageViewController *viewController = [[BFRImageViewController alloc] + initWithImageSource:[livePhotosToShow copy]]; + viewController.disableAutoplayForLivePhoto = shouldDisableAutoPlay; + return viewController; + } else { + UIAlertController *controller = [UIAlertController + alertControllerWithTitle:@"No Live Photos" + message:@"There doesn't appear to be any live photos on your device." + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *closeAction = [UIAlertAction + actionWithTitle:NSLocalizedString(@"Close", nil) + style:UIAlertActionStyleDefault + handler:nil]; + [controller addAction:closeAction]; + + [self presentViewController:controller + animated:YES + completion:nil]; + + return nil; + } +} + +@end diff --git a/BFRImageViewerDemo/BFRImageViewer/FourthViewController.m b/BFRImageViewerDemo/BFRImageViewer/FourthViewController.m index 623d086..528b789 100644 --- a/BFRImageViewerDemo/BFRImageViewer/FourthViewController.m +++ b/BFRImageViewerDemo/BFRImageViewer/FourthViewController.m @@ -33,7 +33,16 @@ - (void)viewDidLoad { [btn setTitle:@"Backload URL Image" forState:UIControlStateNormal]; [self.view addSubview:btn]; [btn.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = YES; - [btn.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = YES; + [btn.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor constant:-20].active = YES; + + + UIButton *btnClosure = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [btnClosure addTarget:self action:@selector(openImageViewerWithCompletionHandler) forControlEvents:UIControlEventTouchUpInside]; + btnClosure.translatesAutoresizingMaskIntoConstraints = NO; + [btnClosure setTitle:@"Backload URL Image + Completion Handler" forState:UIControlStateNormal]; + [self.view addSubview:btnClosure]; + [btnClosure.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = YES; + [btnClosure.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor constant:20].active = YES; } - (void)openImageViewer { @@ -43,4 +52,26 @@ - (void)openImageViewer { [self presentViewController:imageVC animated:YES completion:nil]; } +- (void)openImageViewerWithCompletionHandler { + BFRBackLoadedImageSource *backloadedImage = [[BFRBackLoadedImageSource alloc] initWithInitialImage:[UIImage imageNamed:@"lowResImage"] hiResURL:[NSURL URLWithString:@"https://overflow.buffer.com/wp-content/uploads/2016/12/1-hByZ0VpJusdVwpZd-Z4-Zw.png"]]; + + backloadedImage.onCompletion = ^(UIImage * _Nullable img, NSError * _Nullable error) { + UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Download Done" message:[NSString stringWithFormat:@"Finished downloading hi res image.\nImage:%@\nError:%@", img, error] preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction *close = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; + [alertVC addAction:close]; + + + UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; + while (topController.presentedViewController) { + topController = topController.presentedViewController; + } + + [topController presentViewController:alertVC animated:YES completion:nil]; + }; + + BFRImageViewController *imageVC = [[BFRImageViewController alloc] initWithImageSource:@[backloadedImage]]; + [self presentViewController:imageVC animated:YES completion:nil]; +} + @end diff --git a/BFRImageViewerDemo/BFRImageViewer/Info.plist b/BFRImageViewerDemo/BFRImageViewer/Info.plist index 7bfe257..a0e47a9 100644 --- a/BFRImageViewerDemo/BFRImageViewer/Info.plist +++ b/BFRImageViewerDemo/BFRImageViewer/Info.plist @@ -2,6 +2,8 @@ + NSPhotoLibraryUsageDescription + The app will open an image from your library. CFBundleDevelopmentRegion en CFBundleExecutable diff --git a/BFRImageViewerDemo/BFRImageViewer/ThirdViewController.m b/BFRImageViewerDemo/BFRImageViewer/ThirdViewController.m index 73be809..05f81d6 100644 --- a/BFRImageViewerDemo/BFRImageViewer/ThirdViewController.m +++ b/BFRImageViewerDemo/BFRImageViewer/ThirdViewController.m @@ -32,8 +32,8 @@ - (void)viewDidLoad { // To use the custom transition animation with BFRImageViewer // 1) Have an instance of BFRImageTransitionAnimator around - // 2) Set it's aniamtedImage, animatedImageContainer and imageOriginFrame. Optionally, set the desiredContentMode - // 3) When you present the BFRImageViewController, set it's transitioningDelegate to your BFRImageTransitionAnimator instance. + // 2) Set its animatedImage, animatedImageContainer and imageOriginFrame. Optionally, set the desiredContentMode + // 3) When you present the BFRImageViewController, set its transitioningDelegate to your BFRImageTransitionAnimator instance. // You can see all of this in action in openImageViewerWithTransition below // Object to create all the animations @@ -68,7 +68,7 @@ - (void)openImageViewerWithTransition { self.imageViewAnimator.animatedImageContainer = self.imageView; // The image that will be animated self.imageViewAnimator.animatedImage = self.imageView.image; - // The rect the image will aniamte to and from + // The rect the image will animate to and from self.imageViewAnimator.imageOriginFrame = self.imageView.frame; // Optional - but you'll want this to match the view's content mode that the image is housed in self.imageViewAnimator.desiredContentMode = self.imageView.contentMode; diff --git a/BFRImageViewerDemo/Podfile b/BFRImageViewerDemo/Podfile index 5732545..c6c241b 100644 --- a/BFRImageViewerDemo/Podfile +++ b/BFRImageViewerDemo/Podfile @@ -4,7 +4,6 @@ inhibit_all_warnings! target 'BFRImageViewer' do -pod 'DACircularProgress' pod 'PINRemoteImage', :git => 'https://github.com/pinterest/PINRemoteImage.git' end diff --git a/BFRImageViewerDemo/Podfile.lock b/BFRImageViewerDemo/Podfile.lock index cdedadb..2af2cea 100644 --- a/BFRImageViewerDemo/Podfile.lock +++ b/BFRImageViewerDemo/Podfile.lock @@ -1,5 +1,4 @@ PODS: - - DACircularProgress (2.3.1) - FLAnimatedImage (1.0.12) - PINCache (3.0.1-beta.2): - PINCache/Arc-exception-safe (= 3.0.1-beta.2) @@ -19,9 +18,13 @@ PODS: - PINRemoteImage/Core DEPENDENCIES: - - DACircularProgress - PINRemoteImage (from `https://github.com/pinterest/PINRemoteImage.git`) +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - FLAnimatedImage + - PINCache + EXTERNAL SOURCES: PINRemoteImage: :git: https://github.com/pinterest/PINRemoteImage.git @@ -32,11 +35,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINRemoteImage.git SPEC CHECKSUMS: - DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 PINCache: 6d273a6e0754bd26e3f12a38a90dde73cc6a42b2 PINRemoteImage: ff63baf185088530db6cfa41cb665e2b5126b5c3 -PODFILE CHECKSUM: bbfa0df3719b324330008a0f77bd00f55234120a +PODFILE CHECKSUM: dbe839487dd363bb5f818b4a7bf33c99a444bd2c -COCOAPODS: 1.1.1 +COCOAPODS: 1.5.3 diff --git a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.h b/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.h deleted file mode 100644 index 391b449..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// DACircularProgressView.h -// DACircularProgress -// -// Created by Daniel Amitay on 2/6/12. -// Copyright (c) 2012 Daniel Amitay. All rights reserved. -// - -#import - -@interface DACircularProgressView : UIView - -@property(nonatomic, strong) UIColor *trackTintColor UI_APPEARANCE_SELECTOR; -@property(nonatomic, strong) UIColor *progressTintColor UI_APPEARANCE_SELECTOR; -@property(nonatomic, strong) UIColor *innerTintColor UI_APPEARANCE_SELECTOR; -@property(nonatomic) NSInteger roundedCorners UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( -@property(nonatomic) CGFloat thicknessRatio UI_APPEARANCE_SELECTOR; -@property(nonatomic) NSInteger clockwiseProgress UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( -@property(nonatomic) CGFloat progress; - -@property(nonatomic) CGFloat indeterminateDuration UI_APPEARANCE_SELECTOR; -@property(nonatomic) NSInteger indeterminate UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( - -- (void)setProgress:(CGFloat)progress animated:(BOOL)animated; -- (void)setProgress:(CGFloat)progress animated:(BOOL)animated initialDelay:(CFTimeInterval)initialDelay; -- (void)setProgress:(CGFloat)progress animated:(BOOL)animated initialDelay:(CFTimeInterval)initialDelay withDuration:(CFTimeInterval)duration; - -@end diff --git a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.m b/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.m deleted file mode 100644 index ea39dcd..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.m +++ /dev/null @@ -1,321 +0,0 @@ -// -// DACircularProgressView.m -// DACircularProgress -// -// Created by Daniel Amitay on 2/6/12. -// Copyright (c) 2012 Daniel Amitay. All rights reserved. -// - -#import "DACircularProgressView.h" - -#import - -@interface DACircularProgressLayer : CALayer - -@property(nonatomic, strong) UIColor *trackTintColor; -@property(nonatomic, strong) UIColor *progressTintColor; -@property(nonatomic, strong) UIColor *innerTintColor; -@property(nonatomic) NSInteger roundedCorners; -@property(nonatomic) CGFloat thicknessRatio; -@property(nonatomic) CGFloat progress; -@property(nonatomic) NSInteger clockwiseProgress; - -@end - -@implementation DACircularProgressLayer - -@dynamic trackTintColor; -@dynamic progressTintColor; -@dynamic innerTintColor; -@dynamic roundedCorners; -@dynamic thicknessRatio; -@dynamic progress; -@dynamic clockwiseProgress; - -+ (BOOL)needsDisplayForKey:(NSString *)key -{ - if ([key isEqualToString:@"progress"]) { - return YES; - } else { - return [super needsDisplayForKey:key]; - } -} - -- (void)drawInContext:(CGContextRef)context -{ - CGRect rect = self.bounds; - CGPoint centerPoint = CGPointMake(rect.size.width / 2.0f, rect.size.height / 2.0f); - CGFloat radius = MIN(rect.size.height, rect.size.width) / 2.0f; - - BOOL clockwise = (self.clockwiseProgress != 0); - - CGFloat progress = MIN(self.progress, 1.0f - FLT_EPSILON); - CGFloat radians = 0; - if (clockwise) { - radians = (float)((progress * 2.0f * M_PI) - M_PI_2); - } else { - radians = (float)(3 * M_PI_2 - (progress * 2.0f * M_PI)); - } - - CGContextSetFillColorWithColor(context, self.trackTintColor.CGColor); - CGMutablePathRef trackPath = CGPathCreateMutable(); - CGPathMoveToPoint(trackPath, NULL, centerPoint.x, centerPoint.y); - CGPathAddArc(trackPath, NULL, centerPoint.x, centerPoint.y, radius, (float)(2.0f * M_PI), 0.0f, TRUE); - CGPathCloseSubpath(trackPath); - CGContextAddPath(context, trackPath); - CGContextFillPath(context); - CGPathRelease(trackPath); - - if (progress > 0.0f) { - CGContextSetFillColorWithColor(context, self.progressTintColor.CGColor); - CGMutablePathRef progressPath = CGPathCreateMutable(); - CGPathMoveToPoint(progressPath, NULL, centerPoint.x, centerPoint.y); - CGPathAddArc(progressPath, NULL, centerPoint.x, centerPoint.y, radius, (float)(3.0f * M_PI_2), radians, !clockwise); - CGPathCloseSubpath(progressPath); - CGContextAddPath(context, progressPath); - CGContextFillPath(context); - CGPathRelease(progressPath); - } - - if (progress > 0.0f && self.roundedCorners) { - CGFloat pathWidth = radius * self.thicknessRatio; - CGFloat xOffset = radius * (1.0f + ((1.0f - (self.thicknessRatio / 2.0f)) * cosf(radians))); - CGFloat yOffset = radius * (1.0f + ((1.0f - (self.thicknessRatio / 2.0f)) * sinf(radians))); - CGPoint endPoint = CGPointMake(xOffset, yOffset); - - CGRect startEllipseRect = (CGRect) { - .origin.x = centerPoint.x - pathWidth / 2.0f, - .origin.y = 0.0f, - .size.width = pathWidth, - .size.height = pathWidth - }; - CGContextAddEllipseInRect(context, startEllipseRect); - CGContextFillPath(context); - - CGRect endEllipseRect = (CGRect) { - .origin.x = endPoint.x - pathWidth / 2.0f, - .origin.y = endPoint.y - pathWidth / 2.0f, - .size.width = pathWidth, - .size.height = pathWidth - }; - CGContextAddEllipseInRect(context, endEllipseRect); - CGContextFillPath(context); - } - - CGContextSetBlendMode(context, kCGBlendModeClear); - CGFloat innerRadius = radius * (1.0f - self.thicknessRatio); - CGRect clearRect = (CGRect) { - .origin.x = centerPoint.x - innerRadius, - .origin.y = centerPoint.y - innerRadius, - .size.width = innerRadius * 2.0f, - .size.height = innerRadius * 2.0f - }; - CGContextAddEllipseInRect(context, clearRect); - CGContextFillPath(context); - - if (self.innerTintColor) { - CGContextSetBlendMode(context, kCGBlendModeNormal); - CGContextSetFillColorWithColor(context, [self.innerTintColor CGColor]); - CGContextAddEllipseInRect(context, clearRect); - CGContextFillPath(context); - } -} - -@end - -@interface DACircularProgressView () - -@end - -@implementation DACircularProgressView - -+ (void) initialize -{ - if (self == [DACircularProgressView class]) { - DACircularProgressView *circularProgressViewAppearance = [DACircularProgressView appearance]; - [circularProgressViewAppearance setTrackTintColor:[[UIColor whiteColor] colorWithAlphaComponent:0.3f]]; - [circularProgressViewAppearance setProgressTintColor:[UIColor whiteColor]]; - [circularProgressViewAppearance setInnerTintColor:nil]; - [circularProgressViewAppearance setBackgroundColor:[UIColor clearColor]]; - [circularProgressViewAppearance setThicknessRatio:0.3f]; - [circularProgressViewAppearance setRoundedCorners:NO]; - [circularProgressViewAppearance setClockwiseProgress:YES]; - - [circularProgressViewAppearance setIndeterminateDuration:2.0f]; - [circularProgressViewAppearance setIndeterminate:NO]; - } -} - -+ (Class)layerClass -{ - return [DACircularProgressLayer class]; -} - -- (DACircularProgressLayer *)circularProgressLayer -{ - return (DACircularProgressLayer *)self.layer; -} - -- (id)init -{ - return [super initWithFrame:CGRectMake(0.0f, 0.0f, 40.0f, 40.0f)]; -} - -- (void)didMoveToWindow -{ - CGFloat windowContentsScale = self.window.screen.scale; - self.circularProgressLayer.contentsScale = windowContentsScale; - [self.circularProgressLayer setNeedsDisplay]; -} - - -#pragma mark - Progress - -- (CGFloat)progress -{ - return self.circularProgressLayer.progress; -} - -- (void)setProgress:(CGFloat)progress -{ - [self setProgress:progress animated:NO]; -} - -- (void)setProgress:(CGFloat)progress animated:(BOOL)animated -{ - [self setProgress:progress animated:animated initialDelay:0.0]; -} - -- (void)setProgress:(CGFloat)progress - animated:(BOOL)animated - initialDelay:(CFTimeInterval)initialDelay -{ - CGFloat pinnedProgress = MIN(MAX(progress, 0.0f), 1.0f); - [self setProgress:progress - animated:animated - initialDelay:initialDelay - withDuration:fabs(self.progress - pinnedProgress)]; -} - -- (void)setProgress:(CGFloat)progress - animated:(BOOL)animated - initialDelay:(CFTimeInterval)initialDelay - withDuration:(CFTimeInterval)duration -{ - [self.layer removeAnimationForKey:@"indeterminateAnimation"]; - [self.circularProgressLayer removeAnimationForKey:@"progress"]; - - CGFloat pinnedProgress = MIN(MAX(progress, 0.0f), 1.0f); - if (animated) { - CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"progress"]; - animation.duration = duration; - animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - animation.fillMode = kCAFillModeForwards; - animation.fromValue = [NSNumber numberWithFloat:self.progress]; - animation.toValue = [NSNumber numberWithFloat:pinnedProgress]; - animation.beginTime = CACurrentMediaTime() + initialDelay; - animation.delegate = self; - [self.circularProgressLayer addAnimation:animation forKey:@"progress"]; - } else { - [self.circularProgressLayer setNeedsDisplay]; - self.circularProgressLayer.progress = pinnedProgress; - } -} - -- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag -{ - NSNumber *pinnedProgressNumber = [animation valueForKey:@"toValue"]; - self.circularProgressLayer.progress = [pinnedProgressNumber floatValue]; -} - - -#pragma mark - UIAppearance methods - -- (UIColor *)trackTintColor -{ - return self.circularProgressLayer.trackTintColor; -} - -- (void)setTrackTintColor:(UIColor *)trackTintColor -{ - self.circularProgressLayer.trackTintColor = trackTintColor; - [self.circularProgressLayer setNeedsDisplay]; -} - -- (UIColor *)progressTintColor -{ - return self.circularProgressLayer.progressTintColor; -} - -- (void)setProgressTintColor:(UIColor *)progressTintColor -{ - self.circularProgressLayer.progressTintColor = progressTintColor; - [self.circularProgressLayer setNeedsDisplay]; -} - -- (UIColor *)innerTintColor -{ - return self.circularProgressLayer.innerTintColor; -} - -- (void)setInnerTintColor:(UIColor *)innerTintColor -{ - self.circularProgressLayer.innerTintColor = innerTintColor; - [self.circularProgressLayer setNeedsDisplay]; -} - -- (NSInteger)roundedCorners -{ - return self.roundedCorners; -} - -- (void)setRoundedCorners:(NSInteger)roundedCorners -{ - self.circularProgressLayer.roundedCorners = roundedCorners; - [self.circularProgressLayer setNeedsDisplay]; -} - -- (CGFloat)thicknessRatio -{ - return self.circularProgressLayer.thicknessRatio; -} - -- (void)setThicknessRatio:(CGFloat)thicknessRatio -{ - self.circularProgressLayer.thicknessRatio = MIN(MAX(thicknessRatio, 0.f), 1.f); - [self.circularProgressLayer setNeedsDisplay]; -} - -- (NSInteger)indeterminate -{ - CAAnimation *spinAnimation = [self.layer animationForKey:@"indeterminateAnimation"]; - return (spinAnimation == nil ? 0 : 1); -} - -- (void)setIndeterminate:(NSInteger)indeterminate -{ - if (indeterminate) { - if (!self.indeterminate) { - CABasicAnimation *spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; - spinAnimation.byValue = [NSNumber numberWithDouble:indeterminate > 0 ? 2.0f*M_PI : -2.0f*M_PI]; - spinAnimation.duration = self.indeterminateDuration; - spinAnimation.repeatCount = HUGE_VALF; - [self.layer addAnimation:spinAnimation forKey:@"indeterminateAnimation"]; - } - } else { - [self.layer removeAnimationForKey:@"indeterminateAnimation"]; - } -} - -- (NSInteger)clockwiseProgress -{ - return self.circularProgressLayer.clockwiseProgress; -} - -- (void)setClockwiseProgress:(NSInteger)clockwiseProgres -{ - self.circularProgressLayer.clockwiseProgress = clockwiseProgres; - [self.circularProgressLayer setNeedsDisplay]; -} - -@end diff --git a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h b/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h deleted file mode 100644 index 1d4e56c..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// DALabeledCircularProgressView.h -// DACircularProgressExample -// -// Created by Josh Sklar on 4/8/14. -// Copyright (c) 2014 Shout Messenger. All rights reserved. -// - -#import "DACircularProgressView.h" - -/** - @class DALabeledCircularProgressView - - @brief Subclass of DACircularProgressView that adds a UILabel. - */ -@interface DALabeledCircularProgressView : DACircularProgressView - -/** - UILabel placed right on the DACircularProgressView. - */ -@property (strong, nonatomic) UILabel *progressLabel; - -@end diff --git a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.m b/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.m deleted file mode 100644 index c0e2bda..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// DALabeledCircularProgressView.m -// DACircularProgressExample -// -// Created by Josh Sklar on 4/8/14. -// Copyright (c) 2014 Shout Messenger. All rights reserved. -// - -#import "DALabeledCircularProgressView.h" - -@implementation DALabeledCircularProgressView - -- (id)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initializeLabel]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) { - [self initializeLabel]; - } - return self; -} - - -#pragma mark - Internal methods - -/** - Creates and initializes - -[DALabeledCircularProgressView progressLabel]. - */ -- (void)initializeLabel -{ - self.progressLabel = [[UILabel alloc] initWithFrame:self.bounds]; - self.progressLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - self.progressLabel.textAlignment = NSTextAlignmentCenter; - self.progressLabel.backgroundColor = [UIColor clearColor]; - [self addSubview:self.progressLabel]; -} - -@end diff --git a/BFRImageViewerDemo/Pods/DACircularProgress/LICENSE.md b/BFRImageViewerDemo/Pods/DACircularProgress/LICENSE.md deleted file mode 100755 index 94d0610..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/LICENSE.md +++ /dev/null @@ -1,23 +0,0 @@ -# License - -## MIT License - -Copyright (c) 2013 Daniel Amitay (http://danielamitay.com) - -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/BFRImageViewerDemo/Pods/DACircularProgress/README.md b/BFRImageViewerDemo/Pods/DACircularProgress/README.md deleted file mode 100755 index 3c40031..0000000 --- a/BFRImageViewerDemo/Pods/DACircularProgress/README.md +++ /dev/null @@ -1,77 +0,0 @@ -## DACircularProgress - -`DACircularProgress` is a `UIView` subclass with circular `UIProgressView` properties. - -It was originally built to be an imitation of Facebook's photo progress indicator. - -View the included example project for a demonstration. - -![Screenshot](https://github.com/danielamitay/DACircularProgress/raw/master/screenshot.png) - -## Installation - -To use `DACircularProgress`: - -- Copy over the `DACircularProgress` folder to your project folder. -- Make sure that your project includes ``. -- `#import "DACircularProgressView.h"` - -### Example Code - -```objective-c - -self.progressView = [[DACircularProgressView alloc] initWithFrame:CGRectMake(140.0f, 30.0f, 40.0f, 40.0f)]; -self.progressView.roundedCorners = YES; -self.progressView.trackTintColor = [UIColor clearColor]; -[self.view addSubview:self.progressView]; -``` - -- You can also use Interface Builder by adding a `UIView` element and setting its class to `DACircularProgress` - -## Notes - -### Compatibility - -iOS5.0+ - -### Automatic Reference Counting (ARC) support - -`DACircularProgress` was made with ARC enabled by default. - -## Contact - -- [Personal website](http://danielamitay.com) -- [GitHub](http://github.com/danielamitay) -- [Twitter](http://twitter.com/danielamitay) -- [LinkedIn](http://www.linkedin.com/in/danielamitay) -- [Email](hello@danielamitay.com) - -If you use/enjoy `DACircularProgress`, let me know! - -## Credits - -`DACircularProgress` is brought to you by [Daniel Amitay](http://www.amitay.us) and [contributors to the project](https://github.com/danielamitay/DACircularProgress/contributors). A special thanks to [Cédric Luthi](https://github.com/0xced) for a significant amount of changes. If you have feature suggestions or bug reports, feel free to help out by sending pull requests or by [creating new issues](https://github.com/danielamitay/DACircularProgress/issues/new). - -## License - -### MIT License - -Copyright (c) 2013 Daniel Amitay (http://danielamitay.com) - -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. diff --git a/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DACircularProgressView.h b/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DACircularProgressView.h deleted file mode 120000 index b67e984..0000000 --- a/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DACircularProgressView.h +++ /dev/null @@ -1 +0,0 @@ -../../../DACircularProgress/DACircularProgress/DACircularProgressView.h \ No newline at end of file diff --git a/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DALabeledCircularProgressView.h b/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DALabeledCircularProgressView.h deleted file mode 120000 index 89a694f..0000000 --- a/BFRImageViewerDemo/Pods/Headers/Private/DACircularProgress/DALabeledCircularProgressView.h +++ /dev/null @@ -1 +0,0 @@ -../../../DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h \ No newline at end of file diff --git a/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DACircularProgressView.h b/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DACircularProgressView.h deleted file mode 120000 index b67e984..0000000 --- a/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DACircularProgressView.h +++ /dev/null @@ -1 +0,0 @@ -../../../DACircularProgress/DACircularProgress/DACircularProgressView.h \ No newline at end of file diff --git a/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DALabeledCircularProgressView.h b/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DALabeledCircularProgressView.h deleted file mode 120000 index 89a694f..0000000 --- a/BFRImageViewerDemo/Pods/Headers/Public/DACircularProgress/DALabeledCircularProgressView.h +++ /dev/null @@ -1 +0,0 @@ -../../../DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h \ No newline at end of file diff --git a/BFRImageViewerDemo/Pods/Manifest.lock b/BFRImageViewerDemo/Pods/Manifest.lock index cdedadb..2af2cea 100644 --- a/BFRImageViewerDemo/Pods/Manifest.lock +++ b/BFRImageViewerDemo/Pods/Manifest.lock @@ -1,5 +1,4 @@ PODS: - - DACircularProgress (2.3.1) - FLAnimatedImage (1.0.12) - PINCache (3.0.1-beta.2): - PINCache/Arc-exception-safe (= 3.0.1-beta.2) @@ -19,9 +18,13 @@ PODS: - PINRemoteImage/Core DEPENDENCIES: - - DACircularProgress - PINRemoteImage (from `https://github.com/pinterest/PINRemoteImage.git`) +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - FLAnimatedImage + - PINCache + EXTERNAL SOURCES: PINRemoteImage: :git: https://github.com/pinterest/PINRemoteImage.git @@ -32,11 +35,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINRemoteImage.git SPEC CHECKSUMS: - DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 PINCache: 6d273a6e0754bd26e3f12a38a90dde73cc6a42b2 PINRemoteImage: ff63baf185088530db6cfa41cb665e2b5126b5c3 -PODFILE CHECKSUM: bbfa0df3719b324330008a0f77bd00f55234120a +PODFILE CHECKSUM: dbe839487dd363bb5f818b4a7bf33c99a444bd2c -COCOAPODS: 1.1.1 +COCOAPODS: 1.5.3 diff --git a/BFRImageViewerDemo/Pods/Pods.xcodeproj/project.pbxproj b/BFRImageViewerDemo/Pods/Pods.xcodeproj/project.pbxproj index 273403e..4820091 100644 --- a/BFRImageViewerDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/BFRImageViewerDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,101 +7,94 @@ objects = { /* Begin PBXBuildFile section */ - 0024F89673D793582C1B016ED8430AC1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1983BDC107FFDC16EB402E85A2D57DA6 /* QuartzCore.framework */; }; - 02179658BFB4DF8C0472FAC4269AF745 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D12B08F44BA0C726C5BCB2412F62B8E9 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 049F2463CB9C37EF2854761E8888CCE3 /* PINRemoteImageTask.m in Sources */ = {isa = PBXBuildFile; fileRef = C4AA28ADA0965F7AC035C5E25C4EC583 /* PINRemoteImageTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0A939E8B3AAD7941A0C6C7AEE9361F70 /* PINRemoteImageMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 71EB1B2B4FB89A78F3A8385813823310 /* PINRemoteImageMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B235099DFA61362AEA467044B319448 /* PINRemoteImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD6749EA98C452378EDD4F9E1878EB07 /* PINRemoteImage-dummy.m */; }; - 0CA23DCC76B83B612A3CEED98D14B23E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1983BDC107FFDC16EB402E85A2D57DA6 /* QuartzCore.framework */; }; - 0E9E2B040680E0B5F2A41D247875C60F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */; }; - 0EC2C058313393FF48DBA73DF43EF3F5 /* Pods-BFRImageViewer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A509816A23E2B2BE95D0383193EDF064 /* Pods-BFRImageViewer-dummy.m */; }; - 0F43026EB93ECF66B39EDA40E07873CE /* PINRemoteImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BAA3399AE65AB72F58516054C757E7C /* PINRemoteImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 10BEB12285521DD3EFCC88276FE2788A /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F52D48BE116262D8E096EB945BA77 /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-fobjc-arc-exceptions -DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks -DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 132EA333280E0D76CA900578B47D5B72 /* PINDataTaskOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DDF89AB358BCA78E4C329077B87D37 /* PINDataTaskOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1463FDCFD852A4FC5FEBD4128966403C /* PINRemoteImageDownloadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB1199AC79D0D2FA24A7FAB45B6B470 /* PINRemoteImageDownloadTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1880066C9C29E5B9E73ABD5A95622262 /* PINProgressiveImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5128EF6B0C02C4CE86813C589FCA1537 /* PINProgressiveImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1EFD9583025366C1EB5F456A6CD3E3BD /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9916B2E855D65ECAE53C892FD9DE215 /* MobileCoreServices.framework */; }; - 1F0DE65891A4AC71FF589C469CC41E8E /* PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = EFC84D45EEC8BC803E82AF11A1A894DB /* PINRemoteImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 242BCE2D0D0BAFAC3BA670702347A42D /* PINRemoteImageBasicCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F8E0391C88B698C81429155D1E63AA13 /* PINRemoteImageBasicCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2C6BA2BD8EC92CCAB6AD7C2BC56B8415 /* NSData+ImageDetectors.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B6A549B6EB4B9455688FFBBCB9F9970 /* NSData+ImageDetectors.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 311781DDA777D7295189F163C9D60FBC /* PINButton+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D216A1AE97520D71691F2F18F73CCE80 /* PINButton+PINRemoteImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3681254D0D693A67149AA96A1A071F64 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = C15FA3DFF2DBA22F8684C6B0E4A942D4 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38CC39A456F1D38CD4CDF6FBAF5FC93D /* PINRemoteImageProcessorTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 442F845091462489215DD1A5CE912D8D /* PINRemoteImageProcessorTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3A0007C5D0F074814B1028AB6F4D34C6 /* PINCache+PINRemoteImageCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AB9D90A43E7FB7311C92C18F78A1A0 /* PINCache+PINRemoteImageCaching.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3A80E6D6BCF67A75A5906172F667EC52 /* PINAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 191E9BCB37A6A3CB72436798452D361F /* PINAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3C287D75CF3F4C586F6B5646684E2AF7 /* PINRemoteImageMemoryContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = F2E0AA5B9CF5EC389BD0E53528B17B51 /* PINRemoteImageMemoryContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C4DCC84674225ED664A8BFDD7ED2F2C /* PINURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 91ACE60A9AD347371453EED73675DDDE /* PINURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FA3597678124B3AC54F07C8C2B8D061 /* PINURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 074996F7C2542EE1A249798D2105D4BB /* PINURLSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4025E4EF5E01C93919047C77FAF4B7B6 /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 99A71E8CB50C22BC42C5CA5E2BE3B77C /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 453D9611C2E6C5BB6E4779251572A900 /* NSData+ImageDetectors.m in Sources */ = {isa = PBXBuildFile; fileRef = 38CC5AB2396426F0F8696ABB546F81BC /* NSData+ImageDetectors.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 45EE4E8B3833971578DE857ED53C0AB2 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2AF52CF41D0CA688A271203B9A49633 /* ImageIO.framework */; }; - 479037B3A88BBD0C34D5DC1DCBB84C83 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 5832875C97940435F312D1CA8800C9A9 /* PINOperationGroup.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 47DDC63BE0247749C8C1AAB5A8107640 /* PINRemoteImageCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = B86555A9202517817259C5E63A6DE7B7 /* PINRemoteImageCallbacks.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 49D141B6A7324A2AA411627BBA6FE57E /* PINAnimatedImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E80DE5A90FFAD4252D7754F54948C523 /* PINAnimatedImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 49D5E5A8D1D258D35E07EB2A7E016FE8 /* PINButton+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 20D276F2D4D7BC24F420CCD2501DF7E7 /* PINButton+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C06F5DF8152D7A7964E7FAB6D324E79 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 42839CF5D2E564467A2CE348927C03FD /* PINOperationQueue.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 51157F7A2664E6CD320A08566897FB28 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2AF52CF41D0CA688A271203B9A49633 /* ImageIO.framework */; }; - 54BD4B2920F5A63EC9B0B9B47DE1BB14 /* DALabeledCircularProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = CC74E10F063D4E772EEBBD4A9B80F784 /* DALabeledCircularProgressView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5A4DE4D84C554DF22EBDFA815661B7C3 /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 51EBE843F094794D72B34F50B5B21D30 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C9AA2A60B07AA4EE36209B878362A23 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C18C9598A34D36462CE95B16650BAC4 /* FLAnimatedImage-dummy.m */; }; - 63EAEA3C15F493173AE81FF5F366EE5C /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D8CC324F1C3E9C512AC1223F0E58A4 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 645CEF707D2588907D1D8273CC28ACAC /* PINRemoteImageCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FE3BFA1489D403B9D9280717FB9103E /* PINRemoteImageCaching.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 662B486D7326F3C2A4014CA81BC39B17 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = BFEBABA89AF4C39A7829A6BAA79D7AA4 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67B58D322DDE680B16979EFE00297670 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E516036390BA561D4132699F80343C87 /* Accelerate.framework */; }; - 6DABCF4E595D546441A1474EBDFC0D42 /* PINRemoteLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 529A5A10F4736882F96E54559AD399DD /* PINRemoteLock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F077C3ECD0A7F2902EF7D4499C1397B /* PINImageView+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = C6021F9CBBA360A8D28CD13C52316A02 /* PINImageView+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7013832B5C69B147A73EB70472678828 /* PINRemoteImageManagerResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A3F4BF5D4BC7B2C3529343DA28C0F2C0 /* PINRemoteImageManagerResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 72E34A5186553870C8C033541CB2FAF7 /* PINRemoteImageCategoryManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E3991D421DE0457198E8D33FC007A77 /* PINRemoteImageCategoryManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 73224CB39DEDC688ADE0D6D51FCAA3F7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1EF55610D4A5B0010ACC32D2083E788 /* CoreGraphics.framework */; }; - 75AF3BEAD48E00BCCBA27FD7C3F533B5 /* PINRemoteImageMemoryContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = D37F4FF2691F5AD14074D8A1C9956B1A /* PINRemoteImageMemoryContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7694A63FC4F6ACF0198BB0D669A61A7B /* FLAnimatedImageView+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE89D4493E7E477CE23D5C236671247 /* FLAnimatedImageView+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7AFAB2F9AB463BCAF5D2FADAAFEC24D0 /* PINImage+DecodedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E0A008B1F80845CEFB8508B7AB1FC19 /* PINImage+DecodedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B3D92194728ECD576FA49FC4EF88107 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 389F30E9C0ABD780CC83836EFB44C3E3 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7FB124F3AF76A8F96329472D4CB73DEF /* PINProgressiveImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B846119593EDF3614E6E7916002005 /* PINProgressiveImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81F05C8AA950F13A257531D5C5704359 /* PINRemoteImageCategoryManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC9C6B5E9671DC798A27854EA600DEC /* PINRemoteImageCategoryManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83E9DFB76FA30A776E39905B0D5EAEB3 /* PINAnimatedImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C1B234ECBE069C915B453BFCB6A309F /* PINAnimatedImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8481A11BD6ECCCB2C14AFDE8D4D8C5CB /* PINRemoteImageTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 701565E8DCF442E22060A747AEDD94EC /* PINRemoteImageTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 86615B3760E570EDF21B003A2DE4B301 /* PINRemoteImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F7A0C132FC1641AED504FDE95185E011 /* PINRemoteImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B97B2B63D30083E8B8C50071D0BB64C /* PINRemoteImageBasicCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 316A5CB7FBBFF66204BBA9ED74D6718D /* PINRemoteImageBasicCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CC7FAA896A87D4104329D2AE38D2793 /* PINRemoteImageDownloadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 70033908ADBC919DDC8E992338EE9FC6 /* PINRemoteImageDownloadTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D901A2439A3A69471E536E103A7A36C /* PINImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 295EBEA2FCD50E4DB46A92B81F89356F /* PINImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8FAAB8F0396F678083F107E18562FDA8 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5282B390A785F0765C0FBE4FDAFC6EDE /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 906B8995E31354FFCB1E97A0AF6583BC /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 19230B0BE960DCC6260E0AE5F8D79D7E /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91EBC9062FB3791ED80EDC278B507413 /* PINImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 265EFCA27F8B3DFAF50C3180FC4DAC25 /* PINImage+WebP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 920B39F0E5F3A2BF51DC65B31D17F061 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */; }; - 94D880AC12F7FBAB7F27D2BBA9CBB53E /* DACircularProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CA3936DF3971E64A9F88E6080DAAB65 /* DACircularProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 98BE25B80E1451F5A9126EA80B3C50FC /* PINRemoteImageProcessorTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 3024C2D4879D18CA790793CFF118BA80 /* PINRemoteImageProcessorTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9BE724C48852B870CFBC89A53A5DB1EF /* FLAnimatedImageView+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF2AE5611D91286E2B7FC972C95BB34 /* FLAnimatedImageView+PINRemoteImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DC4CFD80CD8AF3CD037C699105E010D /* PINCache+PINRemoteImageCaching.m in Sources */ = {isa = PBXBuildFile; fileRef = EA04BFF51A241F303647865553F8D3B2 /* PINCache+PINRemoteImageCaching.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A3A46156C9FCE04957F55EA1D35B8B36 /* DACircularProgress-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 823CCEB2BA360CD17AF1707F8C0F04F9 /* DACircularProgress-dummy.m */; }; - A589C2AAEEC55339FFC90231BAAEB896 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */; }; - AD07BFBFB1755108A4972679ADD69385 /* PINImage+DecodedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D0BDB5CCFB7AA2FCB75211CE93878CDD /* PINImage+DecodedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AFF08577BC3807DCF8FC72F1C2C48AAC /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EF52EC48C2CF12A2C5861295E69FC57 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B3550A4DAD326329DFA27C0F362C603E /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F7960B436E6BB799AF9499A48B67E1 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C23657B0710AE187185AB686C4682162 /* DALabeledCircularProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6207745A3A1B0ED4C20016B02E1B423A /* DALabeledCircularProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2C0D9895744B427E899166EF8C60A75 /* PINImageView+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 083B5FCEE6A7BE85EBB1EB4155AF5E3A /* PINImageView+PINRemoteImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C45E86FC59C190C76CF9F2D3B7717149 /* PINAlternateRepresentationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = E2780DAEAF80B0ACDEA7E7A0753B3448 /* PINAlternateRepresentationProvider.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CA2D87374F251FCEFCD395C1D7FE7C14 /* PINAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = CA6F7A32E1DEE5C500F58E235CCF5FF3 /* PINAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D30B252BA51F3CBB595730D089EA03E3 /* PINRemoteImageCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC93DD33C6E74578971EFC4450D8373 /* PINRemoteImageCallbacks.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D7C8C74DC13E7B14589293C2ED27084C /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = BFAFAF3C8C80287DAEB5FE6C58D74AC6 /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DAC392BCA0E74AE7058BE41C81F49B1A /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E857537D8093A485EBFE9E2DDBDBD637 /* PINCache-dummy.m */; }; - E04AE38DC88A86C6E76CEE8CF3317D2C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */; }; - E258027B79964DC37705E6FBDEB2A781 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A30010DEB8ABEEBA2DD5FAEF03B2B8B /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E2E352503FE37DE43747B532521277E1 /* PINRemoteLock.m in Sources */ = {isa = PBXBuildFile; fileRef = A796A80E82352C272B87C4DCDC23555D /* PINRemoteLock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E3ED6DBD13F491C899A15C35C05C69B8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */; }; - E610527E4AE2E75B1F57AFAC42B4F99D /* PINDataTaskOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 561B0E75336C6CD965D19D9A8AA1AD76 /* PINDataTaskOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB74D07B265ECD35D7A58174C71226E2 /* DACircularProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = A233742EE6DA45C45D982D0316D3284D /* DACircularProgressView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EBA586FFE5A67CC3057EC4FBE99D16EF /* PINAlternateRepresentationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = D16FACF71696201CB4004CD73ACAD88A /* PINAlternateRepresentationProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FBB4D9371221EBA6BA69408E33A83D5B /* PINRemoteImageManagerResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB763E8E4485C9C0ABB9A73D27CA026 /* PINRemoteImageManagerResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 049F2463CB9C37EF2854761E8888CCE3 /* PINRemoteImageTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 839383219A491590DE39F12FDA42B21C /* PINRemoteImageTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0B235099DFA61362AEA467044B319448 /* PINRemoteImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F0AC6FB170A5CB5742915B2C4AF915 /* PINRemoteImage-dummy.m */; }; + 0F43026EB93ECF66B39EDA40E07873CE /* PINRemoteImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F5591A6A564570B56C8C75D0D622704B /* PINRemoteImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 10BEB12285521DD3EFCC88276FE2788A /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C50809AF1DB9BC4ED4C811482B6AFD6 /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-fobjc-arc-exceptions -DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks -DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 132EA333280E0D76CA900578B47D5B72 /* PINDataTaskOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 65D5E033471170876D28572F01975363 /* PINDataTaskOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1463FDCFD852A4FC5FEBD4128966403C /* PINRemoteImageDownloadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D5399C7937D90B915376ABECE65A94D4 /* PINRemoteImageDownloadTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1880066C9C29E5B9E73ABD5A95622262 /* PINProgressiveImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9059BBF29F80664DD5235FB613A1E9FA /* PINProgressiveImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1C99674D9EE3821F0460C06E86EBAF51 /* PINRemoteImageMemoryContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EB49C7DB81E8A9AEC6AFEA1FA522FF8 /* PINRemoteImageMemoryContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 242BCE2D0D0BAFAC3BA670702347A42D /* PINRemoteImageBasicCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E50EB4588E4A7E72B5A88E01ABA32BE /* PINRemoteImageBasicCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 275DDD3C68266A2E6769F3C8DDD00AEF /* PINRemoteLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 5746B007F4AE310DF17B0885F60D0D4F /* PINRemoteLock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B5FEA8377B267CE91653EF5FBB856FF /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7413F7EAE39AD54CBB2FF9354D3F3112 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F4045CA5D0C05E8A7106177C56CBBB6 /* PINCache+PINRemoteImageCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD53A1C49BC6EF664295D42703805DB /* PINCache+PINRemoteImageCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2FDA48DA7C3413C822347E93A52A2ED7 /* FLAnimatedImageView+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A0AB560A8A9AE53AA05683E1E5AB570 /* FLAnimatedImageView+PINRemoteImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 326E6BCE9F9DBFA12D1EB2488A68E28C /* PINProgressiveImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B07BE68281E325A858BEFEC72B7D28E2 /* PINProgressiveImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38CC39A456F1D38CD4CDF6FBAF5FC93D /* PINRemoteImageProcessorTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 78125BF1CFFD960C7A4089B8BEB0F312 /* PINRemoteImageProcessorTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3A80E6D6BCF67A75A5906172F667EC52 /* PINAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 91F8FA5874A43B1E57152B78A86CB8AA /* PINAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3BF30A88E8D88CB73657B9E55E5D15E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */; }; + 3CB54645F630095EA50CD3AAE52CC30C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */; }; + 3F1E4EA667FD71A51DCC612528309582 /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD8E136BD52D9EFDFC546E4F79BBD2D /* Nullability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3FA3597678124B3AC54F07C8C2B8D061 /* PINURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B4EB20A28BACC43DB60114E8E10C34C5 /* PINURLSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 453D9611C2E6C5BB6E4779251572A900 /* NSData+ImageDetectors.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AC936B6085337856FEC39109E880A8 /* NSData+ImageDetectors.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 479037B3A88BBD0C34D5DC1DCBB84C83 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 863CB42056449E0753627A2B5C8CC05D /* PINOperationGroup.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 47926E99C6D315E56B2E93849031812A /* PINRemoteImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E8F8C7994B4A99FBB4569EF0227B6E50 /* PINRemoteImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49D5E5A8D1D258D35E07EB2A7E016FE8 /* PINButton+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 533B4A9D80CF95A03B30A44AEF42D736 /* PINButton+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C06F5DF8152D7A7964E7FAB6D324E79 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = B3B0F57636865D26E791EC72573A18BC /* PINOperationQueue.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 534FBD8D0E92F8D5A4A7FED6F0033F27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */; }; + 54F0A238489A8D6DF7B44EA9ACA4C219 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 935AA2A62F008455766C4882A0F0AF9F /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 579CA865D495CC6A4B3B2C60C950C1CB /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = E86544A2E55E08CB4E36DD726FF7CFD2 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5C9AA2A60B07AA4EE36209B878362A23 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76E45DBD483EAFE6DCE1362D310DAA20 /* FLAnimatedImage-dummy.m */; }; + 5CBCB57BB09EACE282C5CF9ACC1C2721 /* PINURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 899AE5D0B4029A0D4427C87993F79A72 /* PINURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E99A6B10D880E611FFEC8E1D686095E /* PINRemoteImageCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = DEA75279B09BBBFF4BCF21E566758E24 /* PINRemoteImageCaching.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6036CFE504D47F783C5EE436F72610D3 /* PINAnimatedImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B764FA5B0C2A6E0A8E3D6ABF77DF904 /* PINAnimatedImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65BED53A5C898DED91F0311867484160 /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 47595EA5663CE8920CFB20A2C76E3C96 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6F077C3ECD0A7F2902EF7D4499C1397B /* PINImageView+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C2F2BBC8159540335CD9B7090CF91FC /* PINImageView+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7013832B5C69B147A73EB70472678828 /* PINRemoteImageManagerResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A566A2D0EBE0217A5CE9949824133968 /* PINRemoteImageManagerResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 72420619A4622DB71CB601F410F262E1 /* PINAlternateRepresentationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BD2AD51BA848228192569376C946A6 /* PINAlternateRepresentationProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72E34A5186553870C8C033541CB2FAF7 /* PINRemoteImageCategoryManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C3BCD60213393BAE5D0FCADDDF26C3A7 /* PINRemoteImageCategoryManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 75AF3BEAD48E00BCCBA27FD7C3F533B5 /* PINRemoteImageMemoryContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = E49BF8E96AECEECF11F41895C749012F /* PINRemoteImageMemoryContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7694A63FC4F6ACF0198BB0D669A61A7B /* FLAnimatedImageView+PINRemoteImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E40CF846E72E9B3332471E3AFC0EAF7 /* FLAnimatedImageView+PINRemoteImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 77AC176D88B0888A14BE613CD68F6EB7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA9A11E805006AAC2470655C17579EC3 /* CoreGraphics.framework */; }; + 7B3D92194728ECD576FA49FC4EF88107 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8555BB7B7ABCC7B4DC4D672CAB3F64D3 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 81F34A20418613F766AB0E9CA9048C07 /* PINRemoteImageProcessorTask.h in Headers */ = {isa = PBXBuildFile; fileRef = C4BA9B04E4BABB5579654AB66C27C998 /* PINRemoteImageProcessorTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8289A8671C5C1308D30B2765B370EBAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */; }; + 83E9DFB76FA30A776E39905B0D5EAEB3 /* PINAnimatedImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C6141402E154C6E1CBE236A5783E29EC /* PINAnimatedImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 86C5EAAB584231ACF881EF3DB40DF325 /* PINImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = C70175BDBAB05F8F89F4746F32855F77 /* PINImage+WebP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FAAB8F0396F678083F107E18562FDA8 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4711F770A08A509BD26F8DA3628F3284 /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 91EBC9062FB3791ED80EDC278B507413 /* PINImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = D20574EEA65F327AE8E1BEDB42EAF538 /* PINImage+WebP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9206DB18B070593FF1BB29C3A9538D6A /* PINDataTaskOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B711ED853147A9A6242D37A7700E4B /* PINDataTaskOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 955EF44D88CDFBD32B23CB46CC884620 /* PINRemoteImageBasicCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A6696E17AA51903769427244D110DA5 /* PINRemoteImageBasicCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B51DED9F2800F5715AC998686A4DEBE /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9F10FFF67C9EEC9294318E395399CE9 /* QuartzCore.framework */; }; + 9CB611EB70BA8A8ED414CFA9C7EAC55E /* Pods-BFRImageViewer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A509816A23E2B2BE95D0383193EDF064 /* Pods-BFRImageViewer-dummy.m */; }; + 9D4DE7BCD4B6C27ED95923B79663E4F7 /* PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F585BAB6CBD4C42F3094347A11317CE /* PINRemoteImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9DC4CFD80CD8AF3CD037C699105E010D /* PINCache+PINRemoteImageCaching.m in Sources */ = {isa = PBXBuildFile; fileRef = A9DDF7BF8758730D80523125F511943B /* PINCache+PINRemoteImageCaching.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A16F129FC118F57DB82AA6956D1E976C /* PINRemoteImageCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = DFA5D81C6C4104421E85D785F9E51236 /* PINRemoteImageCallbacks.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A37779519A462F15EB54382CF8968539 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4CD651AF555E390638EADA7B2469D9 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A6DB273127DE9ED9228113F04D3C4DDB /* PINImageView+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = C14C54A43AB4BB5CB643910272390DF5 /* PINImageView+PINRemoteImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A912FCB20C763BE20989F5C09A948B8D /* PINRemoteImageDownloadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 810505EE437BFF25CD946B0BEB6DE0AC /* PINRemoteImageDownloadTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD07BFBFB1755108A4972679ADD69385 /* PINImage+DecodedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F5667A34113CDAE2F4326DADCA5A792 /* PINImage+DecodedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B075308F8E1EA06A6568E807B07769F7 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BF1671AAF8402EEFF4B515C0D33E12FD /* PINCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B19E9E517EB42086342DC598C6624EA4 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = B9135B89A11DA98593B7927AFDC62458 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B748AE8AC884F26887654464C3EF9C67 /* NSData+ImageDetectors.h in Headers */ = {isa = PBXBuildFile; fileRef = 394B8D3369EAA1D998F7B116232414BD /* NSData+ImageDetectors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B7C55C9287CBB998BE1EDEAF79278456 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D3116B74292B10422EA53E10A27E7E9A /* PINDiskCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BDF3344434AB306B3C261F6B39D9FAEC /* PINButton+PINRemoteImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C5D9E7589C2EC5BA697AA348FFB4155 /* PINButton+PINRemoteImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF91C44587928D603AD6EB23E9286537 /* PINRemoteImageCategoryManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C78B78BFA7A65E03DBC28E683B5453 /* PINRemoteImageCategoryManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0BDEA8E05F2849128437172991A41DB /* PINAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B834F97A5AD88967BD56F9A33DCF8B9F /* PINAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C45E86FC59C190C76CF9F2D3B7717149 /* PINAlternateRepresentationProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C647F0E28F3BD12760AF52E213048F7D /* PINAlternateRepresentationProvider.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C8B4CA357C127C1C794AEE8DBC7CEFB4 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9EFE57FA8945D65CE2671124F81F577 /* MobileCoreServices.framework */; }; + CD9899A12EF91880166832390843FBD2 /* PINImage+DecodedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 144C7F0EE25896DFE8D732BC5AB2BD56 /* PINImage+DecodedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D30B252BA51F3CBB595730D089EA03E3 /* PINRemoteImageCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7B17CED99FE839F6DCCB59DA52CE3E /* PINRemoteImageCallbacks.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D7C8C74DC13E7B14589293C2ED27084C /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E069F1B3A62FD5AA9D7B4C49B04508 /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DAC392BCA0E74AE7058BE41C81F49B1A /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C921299FBC593448E1BF50A13FD158 /* PINCache-dummy.m */; }; + DB634795DCF67E2EAE0CA1F07D421F22 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 481D894B89E90DADA5583C7982CC9CEC /* Accelerate.framework */; }; + DDA640DE83B83C43285ABA7CF32FD69E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89D34AC91B82BB6BB8D331E9B4AD1F18 /* ImageIO.framework */; }; + DDF90CD81C662191B3F0C4FA07CD7ED1 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89D34AC91B82BB6BB8D331E9B4AD1F18 /* ImageIO.framework */; }; + E258027B79964DC37705E6FBDEB2A781 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 638E96B2763B4E9521ED8E1DB2E55FE6 /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E2E352503FE37DE43747B532521277E1 /* PINRemoteLock.m in Sources */ = {isa = PBXBuildFile; fileRef = 36A3B3FEF825B0B28528230C7F0439A2 /* PINRemoteLock.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EABA0DA8921DE31AE52D735E241A49AB /* PINRemoteImageManagerResult.h in Headers */ = {isa = PBXBuildFile; fileRef = DC698E538C35C34BCE6010B1C266D22F /* PINRemoteImageManagerResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F422A09440A1D2C53030F6EE7B42662C /* PINRemoteImageMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A799AFE6CBCFC9A1FF761C23CA0CEC11 /* PINRemoteImageMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA62DF0115A0039CD8A7448AD912377E /* PINRemoteImageTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D8E00D58E8EC4705CAD090EAABA184A /* PINRemoteImageTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 07A7255A2F8C949D77A28CC3B237C423 /* PBXContainerItemProxy */ = { + 3C84573ED6D5D71C36AEEADC34F56C48 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C791F0A928C1A8FE97074DFC9ACF4E75; - remoteInfo = DACircularProgress; + remoteGlobalIDString = 23F5B673D25F9E1F1ABB3F8AA0302A2C; + remoteInfo = PINRemoteImage; }; 70B1ABF786DE4A9DA7BFB8630A76B08C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -110,13 +103,6 @@ remoteGlobalIDString = 53F8571E2D572C4069860E38654A566A; remoteInfo = FLAnimatedImage; }; - 8548DE77804D1917C3E3D6CFB58555EC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 23F5B673D25F9E1F1ABB3F8AA0302A2C; - remoteInfo = PINRemoteImage; - }; 9218F44CF623829E53E12B8130E772CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; @@ -124,14 +110,14 @@ remoteGlobalIDString = C3BAF7A79AC3D9AD212C3F6B700AEC77; remoteInfo = PINCache; }; - A7DA46F372781F41F9A351E050C46048 /* PBXContainerItemProxy */ = { + 9351D82F24EEAEE947D4E4C760F41EDF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 53F8571E2D572C4069860E38654A566A; remoteInfo = FLAnimatedImage; }; - C7616F81E207D20DE6291BC34BD66CFC /* PBXContainerItemProxy */ = { + BC06A7610C4806E3D1ED70D750FAAAE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; @@ -142,122 +128,105 @@ /* Begin PBXFileReference section */ 005E0B06483BF6325933690AD3CF847F /* Pods-BFRImageViewer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BFRImageViewer.release.xcconfig"; sourceTree = ""; }; - 0309660013227897705A6972AA1846E8 /* libPINRemoteImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPINRemoteImage.a; path = libPINRemoteImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 074996F7C2542EE1A249798D2105D4BB /* PINURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINURLSessionManager.m; path = Pod/Classes/PINURLSessionManager.m; sourceTree = ""; }; - 083B5FCEE6A7BE85EBB1EB4155AF5E3A /* PINImageView+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImageView+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/PINImageView+PINRemoteImage.h"; sourceTree = ""; }; - 0BAA3399AE65AB72F58516054C757E7C /* PINRemoteImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageManager.m; path = Pod/Classes/PINRemoteImageManager.m; sourceTree = ""; }; - 0C1B234ECBE069C915B453BFCB6A309F /* PINAnimatedImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAnimatedImageManager.m; path = Pod/Classes/PINAnimatedImageManager.m; sourceTree = ""; }; - 0FB763E8E4485C9C0ABB9A73D27CA026 /* PINRemoteImageManagerResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageManagerResult.h; path = Pod/Classes/PINRemoteImageManagerResult.h; sourceTree = ""; }; + 08C78B78BFA7A65E03DBC28E683B5453 /* PINRemoteImageCategoryManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCategoryManager.h; path = Pod/Classes/PINRemoteImageCategoryManager.h; sourceTree = ""; }; 12BDE0C2ED3D6A1AD1020A56B0495FB7 /* Pods-BFRImageViewer-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BFRImageViewer-frameworks.sh"; sourceTree = ""; }; - 182B706E38C635452A4EF3E2B7318B42 /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; - 191E9BCB37A6A3CB72436798452D361F /* PINAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAnimatedImage.m; path = Pod/Classes/PINAnimatedImage.m; sourceTree = ""; }; - 19230B0BE960DCC6260E0AE5F8D79D7E /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; - 1983BDC107FFDC16EB402E85A2D57DA6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 1D39D4FEF51CE413AF46DED66D289AA7 /* libFLAnimatedImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFLAnimatedImage.a; path = libFLAnimatedImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 20D276F2D4D7BC24F420CCD2501DF7E7 /* PINButton+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINButton+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/PINButton+PINRemoteImage.m"; sourceTree = ""; }; - 24D8CC324F1C3E9C512AC1223F0E58A4 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; - 265EFCA27F8B3DFAF50C3180FC4DAC25 /* PINImage+WebP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImage+WebP.m"; path = "Pod/Classes/Categories/PINImage+WebP.m"; sourceTree = ""; }; - 295EBEA2FCD50E4DB46A92B81F89356F /* PINImage+WebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImage+WebP.h"; path = "Pod/Classes/Categories/PINImage+WebP.h"; sourceTree = ""; }; - 2E3991D421DE0457198E8D33FC007A77 /* PINRemoteImageCategoryManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageCategoryManager.m; path = Pod/Classes/PINRemoteImageCategoryManager.m; sourceTree = ""; }; - 3024C2D4879D18CA790793CFF118BA80 /* PINRemoteImageProcessorTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageProcessorTask.h; path = Pod/Classes/PINRemoteImageProcessorTask.h; sourceTree = ""; }; - 30DED4EB2FE46426F659CB946496F900 /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; - 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 316A5CB7FBBFF66204BBA9ED74D6718D /* PINRemoteImageBasicCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageBasicCache.h; path = Pod/Classes/PINRemoteImageBasicCache.h; sourceTree = ""; }; - 38956D2B09407A01422332281DB769ED /* PINRemoteImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINRemoteImage-prefix.pch"; sourceTree = ""; }; - 389F30E9C0ABD780CC83836EFB44C3E3 /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; - 38CC5AB2396426F0F8696ABB546F81BC /* NSData+ImageDetectors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageDetectors.m"; path = "Pod/Classes/Categories/NSData+ImageDetectors.m"; sourceTree = ""; }; - 3E0A008B1F80845CEFB8508B7AB1FC19 /* PINImage+DecodedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImage+DecodedImage.h"; path = "Pod/Classes/Categories/PINImage+DecodedImage.h"; sourceTree = ""; }; - 3E79D4A0108A1439C899ABE224DD13F0 /* PINRemoteImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINRemoteImage.xcconfig; sourceTree = ""; }; - 3EF52EC48C2CF12A2C5861295E69FC57 /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; - 3FB1199AC79D0D2FA24A7FAB45B6B470 /* PINRemoteImageDownloadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageDownloadTask.m; path = Pod/Classes/PINRemoteImageDownloadTask.m; sourceTree = ""; }; - 42839CF5D2E564467A2CE348927C03FD /* PINOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINOperationQueue.m; path = PINCache/PINOperationQueue.m; sourceTree = ""; }; - 442F845091462489215DD1A5CE912D8D /* PINRemoteImageProcessorTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageProcessorTask.m; path = Pod/Classes/PINRemoteImageProcessorTask.m; sourceTree = ""; }; - 5128EF6B0C02C4CE86813C589FCA1537 /* PINProgressiveImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINProgressiveImage.m; path = Pod/Classes/PINProgressiveImage.m; sourceTree = ""; }; - 51EBE843F094794D72B34F50B5B21D30 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; - 5282B390A785F0765C0FBE4FDAFC6EDE /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 529A5A10F4736882F96E54559AD399DD /* PINRemoteLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteLock.h; path = Pod/Classes/PINRemoteLock.h; sourceTree = ""; }; - 561B0E75336C6CD965D19D9A8AA1AD76 /* PINDataTaskOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDataTaskOperation.h; path = Pod/Classes/PINDataTaskOperation.h; sourceTree = ""; }; - 5832875C97940435F312D1CA8800C9A9 /* PINOperationGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINOperationGroup.m; path = PINCache/PINOperationGroup.m; sourceTree = ""; }; - 58387257DABB5ED468932C2A0C1FD2B1 /* libPods-BFRImageViewer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-BFRImageViewer.a"; path = "libPods-BFRImageViewer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5CE89D4493E7E477CE23D5C236671247 /* FLAnimatedImageView+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FLAnimatedImageView+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/FLAnimatedImageView+PINRemoteImage.m"; sourceTree = ""; }; - 6207745A3A1B0ED4C20016B02E1B423A /* DALabeledCircularProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DALabeledCircularProgressView.h; path = DACircularProgress/DALabeledCircularProgressView.h; sourceTree = ""; }; - 6B6A549B6EB4B9455688FFBBCB9F9970 /* NSData+ImageDetectors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageDetectors.h"; path = "Pod/Classes/Categories/NSData+ImageDetectors.h"; sourceTree = ""; }; + 144C7F0EE25896DFE8D732BC5AB2BD56 /* PINImage+DecodedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImage+DecodedImage.h"; path = "Pod/Classes/Categories/PINImage+DecodedImage.h"; sourceTree = ""; }; + 1C50809AF1DB9BC4ED4C811482B6AFD6 /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; + 1C7B17CED99FE839F6DCCB59DA52CE3E /* PINRemoteImageCallbacks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageCallbacks.m; path = Pod/Classes/PINRemoteImageCallbacks.m; sourceTree = ""; }; + 22C921299FBC593448E1BF50A13FD158 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; + 2A4CD651AF555E390638EADA7B2469D9 /* PINOperationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINOperationQueue.h; path = PINCache/PINOperationQueue.h; sourceTree = ""; }; + 2AADB470E3B36CA08E068C1207FF7EB4 /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; + 2AD53A1C49BC6EF664295D42703805DB /* PINCache+PINRemoteImageCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINCache+PINRemoteImageCaching.h"; path = "Pod/Classes/PINCache/PINCache+PINRemoteImageCaching.h"; sourceTree = ""; }; + 36A3B3FEF825B0B28528230C7F0439A2 /* PINRemoteLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteLock.m; path = Pod/Classes/PINRemoteLock.m; sourceTree = ""; }; + 394B8D3369EAA1D998F7B116232414BD /* NSData+ImageDetectors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageDetectors.h"; path = "Pod/Classes/Categories/NSData+ImageDetectors.h"; sourceTree = ""; }; + 3A0AB560A8A9AE53AA05683E1E5AB570 /* FLAnimatedImageView+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FLAnimatedImageView+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/FLAnimatedImageView+PINRemoteImage.h"; sourceTree = ""; }; + 4711F770A08A509BD26F8DA3628F3284 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 47595EA5663CE8920CFB20A2C76E3C96 /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; + 481D894B89E90DADA5583C7982CC9CEC /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; + 4AD8E136BD52D9EFDFC546E4F79BBD2D /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; + 4C277E273DD582277FC2A3A4604C174B /* PINRemoteImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINRemoteImage-prefix.pch"; sourceTree = ""; }; + 4E50EB4588E4A7E72B5A88E01ABA32BE /* PINRemoteImageBasicCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageBasicCache.m; path = Pod/Classes/PINRemoteImageBasicCache.m; sourceTree = ""; }; + 4E616F2C9A436C7D1BD4317387BEE2C4 /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; + 4EB49C7DB81E8A9AEC6AFEA1FA522FF8 /* PINRemoteImageMemoryContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageMemoryContainer.h; path = Pod/Classes/PINRemoteImageMemoryContainer.h; sourceTree = ""; }; + 4F5667A34113CDAE2F4326DADCA5A792 /* PINImage+DecodedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImage+DecodedImage.m"; path = "Pod/Classes/Categories/PINImage+DecodedImage.m"; sourceTree = ""; }; + 533B4A9D80CF95A03B30A44AEF42D736 /* PINButton+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINButton+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/PINButton+PINRemoteImage.m"; sourceTree = ""; }; + 5746B007F4AE310DF17B0885F60D0D4F /* PINRemoteLock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteLock.h; path = Pod/Classes/PINRemoteLock.h; sourceTree = ""; }; + 59F0AC6FB170A5CB5742915B2C4AF915 /* PINRemoteImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINRemoteImage-dummy.m"; sourceTree = ""; }; + 5C4B5476DE199AC4AE32D1F678B8D359 /* libPINRemoteImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPINRemoteImage.a; path = libPINRemoteImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5C5D9E7589C2EC5BA697AA348FFB4155 /* PINButton+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINButton+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/PINButton+PINRemoteImage.h"; sourceTree = ""; }; + 5F585BAB6CBD4C42F3094347A11317CE /* PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImage.h; path = Pod/Classes/PINRemoteImage.h; sourceTree = ""; }; + 638E96B2763B4E9521ED8E1DB2E55FE6 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + 65D5E033471170876D28572F01975363 /* PINDataTaskOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDataTaskOperation.m; path = Pod/Classes/PINDataTaskOperation.m; sourceTree = ""; }; 6B7C16DC5CA28E08B4407706F6CBD367 /* Pods-BFRImageViewer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BFRImageViewer.debug.xcconfig"; sourceTree = ""; }; - 6C18C9598A34D36462CE95B16650BAC4 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - 6DF2AE5611D91286E2B7FC972C95BB34 /* FLAnimatedImageView+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FLAnimatedImageView+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/FLAnimatedImageView+PINRemoteImage.h"; sourceTree = ""; }; - 6FE3BFA1489D403B9D9280717FB9103E /* PINRemoteImageCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCaching.h; path = Pod/Classes/PINRemoteImageCaching.h; sourceTree = ""; }; - 70033908ADBC919DDC8E992338EE9FC6 /* PINRemoteImageDownloadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageDownloadTask.h; path = Pod/Classes/PINRemoteImageDownloadTask.h; sourceTree = ""; }; - 701565E8DCF442E22060A747AEDD94EC /* PINRemoteImageTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageTask.h; path = Pod/Classes/PINRemoteImageTask.h; sourceTree = ""; }; - 71EB1B2B4FB89A78F3A8385813823310 /* PINRemoteImageMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageMacros.h; path = Pod/Classes/PINRemoteImageMacros.h; sourceTree = ""; }; - 78DDF89AB358BCA78E4C329077B87D37 /* PINDataTaskOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDataTaskOperation.m; path = Pod/Classes/PINDataTaskOperation.m; sourceTree = ""; }; - 8237040CE637A87641BDF1B865061C3F /* libPINCache.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPINCache.a; path = libPINCache.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 823CCEB2BA360CD17AF1707F8C0F04F9 /* DACircularProgress-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DACircularProgress-dummy.m"; sourceTree = ""; }; - 83F7960B436E6BB799AF9499A48B67E1 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; - 8A30010DEB8ABEEBA2DD5FAEF03B2B8B /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - 91ACE60A9AD347371453EED73675DDDE /* PINURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINURLSessionManager.h; path = Pod/Classes/PINURLSessionManager.h; sourceTree = ""; }; + 6E40CF846E72E9B3332471E3AFC0EAF7 /* FLAnimatedImageView+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FLAnimatedImageView+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/FLAnimatedImageView+PINRemoteImage.m"; sourceTree = ""; }; + 7413F7EAE39AD54CBB2FF9354D3F3112 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; + 7604CAC5EF1D98120CC6C7E793B4F232 /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; + 76E45DBD483EAFE6DCE1362D310DAA20 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + 78125BF1CFFD960C7A4089B8BEB0F312 /* PINRemoteImageProcessorTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageProcessorTask.m; path = Pod/Classes/PINRemoteImageProcessorTask.m; sourceTree = ""; }; + 7A6696E17AA51903769427244D110DA5 /* PINRemoteImageBasicCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageBasicCache.h; path = Pod/Classes/PINRemoteImageBasicCache.h; sourceTree = ""; }; + 810505EE437BFF25CD946B0BEB6DE0AC /* PINRemoteImageDownloadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageDownloadTask.h; path = Pod/Classes/PINRemoteImageDownloadTask.h; sourceTree = ""; }; + 839383219A491590DE39F12FDA42B21C /* PINRemoteImageTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageTask.m; path = Pod/Classes/PINRemoteImageTask.m; sourceTree = ""; }; + 8555BB7B7ABCC7B4DC4D672CAB3F64D3 /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; + 863CB42056449E0753627A2B5C8CC05D /* PINOperationGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINOperationGroup.m; path = PINCache/PINOperationGroup.m; sourceTree = ""; }; + 899AE5D0B4029A0D4427C87993F79A72 /* PINURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINURLSessionManager.h; path = Pod/Classes/PINURLSessionManager.h; sourceTree = ""; }; + 89D34AC91B82BB6BB8D331E9B4AD1F18 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + 8B764FA5B0C2A6E0A8E3D6ABF77DF904 /* PINAnimatedImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAnimatedImageManager.h; path = Pod/Classes/PINAnimatedImageManager.h; sourceTree = ""; }; + 8D8E00D58E8EC4705CAD090EAABA184A /* PINRemoteImageTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageTask.h; path = Pod/Classes/PINRemoteImageTask.h; sourceTree = ""; }; + 9059BBF29F80664DD5235FB613A1E9FA /* PINProgressiveImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINProgressiveImage.m; path = Pod/Classes/PINProgressiveImage.m; sourceTree = ""; }; + 90AC936B6085337856FEC39109E880A8 /* NSData+ImageDetectors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageDetectors.m"; path = "Pod/Classes/Categories/NSData+ImageDetectors.m"; sourceTree = ""; }; + 90BD2AD51BA848228192569376C946A6 /* PINAlternateRepresentationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAlternateRepresentationProvider.h; path = Pod/Classes/PINAlternateRepresentationProvider.h; sourceTree = ""; }; + 91F8FA5874A43B1E57152B78A86CB8AA /* PINAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAnimatedImage.m; path = Pod/Classes/PINAnimatedImage.m; sourceTree = ""; }; + 935AA2A62F008455766C4882A0F0AF9F /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 99A71E8CB50C22BC42C5CA5E2BE3B77C /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; - 9BD7F6F43FB7435698D353424A2E39FE /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - 9CA3936DF3971E64A9F88E6080DAAB65 /* DACircularProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DACircularProgressView.h; path = DACircularProgress/DACircularProgressView.h; sourceTree = ""; }; - A233742EE6DA45C45D982D0316D3284D /* DACircularProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DACircularProgressView.m; path = DACircularProgress/DACircularProgressView.m; sourceTree = ""; }; - A3F4BF5D4BC7B2C3529343DA28C0F2C0 /* PINRemoteImageManagerResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageManagerResult.m; path = Pod/Classes/PINRemoteImageManagerResult.m; sourceTree = ""; }; + 951D8A65055576FE800383C51BDECCF7 /* libPods-BFRImageViewer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-BFRImageViewer.a"; path = "libPods-BFRImageViewer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 99E069F1B3A62FD5AA9D7B4C49B04508 /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; + 9C2F2BBC8159540335CD9B7090CF91FC /* PINImageView+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImageView+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/PINImageView+PINRemoteImage.m"; sourceTree = ""; }; A509816A23E2B2BE95D0383193EDF064 /* Pods-BFRImageViewer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BFRImageViewer-dummy.m"; sourceTree = ""; }; - A796A80E82352C272B87C4DCDC23555D /* PINRemoteLock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteLock.m; path = Pod/Classes/PINRemoteLock.m; sourceTree = ""; }; - AD448BABA9CF88D751524B540624A815 /* DACircularProgress.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DACircularProgress.xcconfig; sourceTree = ""; }; - B2AF52CF41D0CA688A271203B9A49633 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - B86555A9202517817259C5E63A6DE7B7 /* PINRemoteImageCallbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCallbacks.h; path = Pod/Classes/PINRemoteImageCallbacks.h; sourceTree = ""; }; - BFAFAF3C8C80287DAEB5FE6C58D74AC6 /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; - BFEBABA89AF4C39A7829A6BAA79D7AA4 /* PINOperationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINOperationQueue.h; path = PINCache/PINOperationQueue.h; sourceTree = ""; }; - C15FA3DFF2DBA22F8684C6B0E4A942D4 /* PINOperationGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINOperationGroup.h; path = PINCache/PINOperationGroup.h; sourceTree = ""; }; - C4AA28ADA0965F7AC035C5E25C4EC583 /* PINRemoteImageTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageTask.m; path = Pod/Classes/PINRemoteImageTask.m; sourceTree = ""; }; - C6021F9CBBA360A8D28CD13C52316A02 /* PINImageView+PINRemoteImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImageView+PINRemoteImage.m"; path = "Pod/Classes/Image Categories/PINImageView+PINRemoteImage.m"; sourceTree = ""; }; - C9916B2E855D65ECAE53C892FD9DE215 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - CA6F7A32E1DEE5C500F58E235CCF5FF3 /* PINAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAnimatedImage.h; path = Pod/Classes/PINAnimatedImage.h; sourceTree = ""; }; - CC74E10F063D4E772EEBBD4A9B80F784 /* DALabeledCircularProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DALabeledCircularProgressView.m; path = DACircularProgress/DALabeledCircularProgressView.m; sourceTree = ""; }; - CD6749EA98C452378EDD4F9E1878EB07 /* PINRemoteImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINRemoteImage-dummy.m"; sourceTree = ""; }; - CEC9C6B5E9671DC798A27854EA600DEC /* PINRemoteImageCategoryManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCategoryManager.h; path = Pod/Classes/PINRemoteImageCategoryManager.h; sourceTree = ""; }; - D0BDB5CCFB7AA2FCB75211CE93878CDD /* PINImage+DecodedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImage+DecodedImage.m"; path = "Pod/Classes/Categories/PINImage+DecodedImage.m"; sourceTree = ""; }; - D12B08F44BA0C726C5BCB2412F62B8E9 /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; - D16FACF71696201CB4004CD73ACAD88A /* PINAlternateRepresentationProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAlternateRepresentationProvider.h; path = Pod/Classes/PINAlternateRepresentationProvider.h; sourceTree = ""; }; - D216A1AE97520D71691F2F18F73CCE80 /* PINButton+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINButton+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/PINButton+PINRemoteImage.h"; sourceTree = ""; }; + A566A2D0EBE0217A5CE9949824133968 /* PINRemoteImageManagerResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageManagerResult.m; path = Pod/Classes/PINRemoteImageManagerResult.m; sourceTree = ""; }; + A799AFE6CBCFC9A1FF761C23CA0CEC11 /* PINRemoteImageMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageMacros.h; path = Pod/Classes/PINRemoteImageMacros.h; sourceTree = ""; }; + A9DDF7BF8758730D80523125F511943B /* PINCache+PINRemoteImageCaching.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINCache+PINRemoteImageCaching.m"; path = "Pod/Classes/PINCache/PINCache+PINRemoteImageCaching.m"; sourceTree = ""; }; + A9F10FFF67C9EEC9294318E395399CE9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + B07BE68281E325A858BEFEC72B7D28E2 /* PINProgressiveImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINProgressiveImage.h; path = Pod/Classes/PINProgressiveImage.h; sourceTree = ""; }; + B3B0F57636865D26E791EC72573A18BC /* PINOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINOperationQueue.m; path = PINCache/PINOperationQueue.m; sourceTree = ""; }; + B4EB20A28BACC43DB60114E8E10C34C5 /* PINURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINURLSessionManager.m; path = Pod/Classes/PINURLSessionManager.m; sourceTree = ""; }; + B834F97A5AD88967BD56F9A33DCF8B9F /* PINAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAnimatedImage.h; path = Pod/Classes/PINAnimatedImage.h; sourceTree = ""; }; + B9135B89A11DA98593B7927AFDC62458 /* PINOperationGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINOperationGroup.h; path = PINCache/PINOperationGroup.h; sourceTree = ""; }; + B9BD431F4A603ABB14BD66BA0A51FD46 /* libPINCache.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPINCache.a; path = libPINCache.a; sourceTree = BUILT_PRODUCTS_DIR; }; + BDEC0F1AF77A4CBEC4BC66ECA85314A7 /* PINRemoteImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINRemoteImage.xcconfig; sourceTree = ""; }; + BF1671AAF8402EEFF4B515C0D33E12FD /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; + BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + C14C54A43AB4BB5CB643910272390DF5 /* PINImageView+PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImageView+PINRemoteImage.h"; path = "Pod/Classes/Image Categories/PINImageView+PINRemoteImage.h"; sourceTree = ""; }; + C3BCD60213393BAE5D0FCADDDF26C3A7 /* PINRemoteImageCategoryManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageCategoryManager.m; path = Pod/Classes/PINRemoteImageCategoryManager.m; sourceTree = ""; }; + C4BA9B04E4BABB5579654AB66C27C998 /* PINRemoteImageProcessorTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageProcessorTask.h; path = Pod/Classes/PINRemoteImageProcessorTask.h; sourceTree = ""; }; + C6141402E154C6E1CBE236A5783E29EC /* PINAnimatedImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAnimatedImageManager.m; path = Pod/Classes/PINAnimatedImageManager.m; sourceTree = ""; }; + C647F0E28F3BD12760AF52E213048F7D /* PINAlternateRepresentationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAlternateRepresentationProvider.m; path = Pod/Classes/PINAlternateRepresentationProvider.m; sourceTree = ""; }; + C70175BDBAB05F8F89F4746F32855F77 /* PINImage+WebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINImage+WebP.h"; path = "Pod/Classes/Categories/PINImage+WebP.h"; sourceTree = ""; }; + C9A0132257AB3D12D27B5262AF409A78 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + C9EFE57FA8945D65CE2671124F81F577 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + D20574EEA65F327AE8E1BEDB42EAF538 /* PINImage+WebP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINImage+WebP.m"; path = "Pod/Classes/Categories/PINImage+WebP.m"; sourceTree = ""; }; + D3116B74292B10422EA53E10A27E7E9A /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; D31C1FE368D8FCB180BB58C72DFCC868 /* Pods-BFRImageViewer-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BFRImageViewer-acknowledgements.markdown"; sourceTree = ""; }; - D37F4FF2691F5AD14074D8A1C9956B1A /* PINRemoteImageMemoryContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageMemoryContainer.m; path = Pod/Classes/PINRemoteImageMemoryContainer.m; sourceTree = ""; }; - D70835E683638FC424642AB5FCC6D18B /* DACircularProgress-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DACircularProgress-prefix.pch"; sourceTree = ""; }; - D8764C9D9ABE0381B7100252680B7F69 /* libDACircularProgress.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDACircularProgress.a; path = libDACircularProgress.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D5399C7937D90B915376ABECE65A94D4 /* PINRemoteImageDownloadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageDownloadTask.m; path = Pod/Classes/PINRemoteImageDownloadTask.m; sourceTree = ""; }; DAFB1E21441EA3CA147805B2EE9986B6 /* Pods-BFRImageViewer-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BFRImageViewer-acknowledgements.plist"; sourceTree = ""; }; - DCC93DD33C6E74578971EFC4450D8373 /* PINRemoteImageCallbacks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageCallbacks.m; path = Pod/Classes/PINRemoteImageCallbacks.m; sourceTree = ""; }; + DC698E538C35C34BCE6010B1C266D22F /* PINRemoteImageManagerResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageManagerResult.h; path = Pod/Classes/PINRemoteImageManagerResult.h; sourceTree = ""; }; DE910A2BF4F3B96B81B163DD978709E2 /* Pods-BFRImageViewer-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BFRImageViewer-resources.sh"; sourceTree = ""; }; - E1EF55610D4A5B0010ACC32D2083E788 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - E2780DAEAF80B0ACDEA7E7A0753B3448 /* PINAlternateRepresentationProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINAlternateRepresentationProvider.m; path = Pod/Classes/PINAlternateRepresentationProvider.m; sourceTree = ""; }; - E516036390BA561D4132699F80343C87 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; - E80DE5A90FFAD4252D7754F54948C523 /* PINAnimatedImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINAnimatedImageManager.h; path = Pod/Classes/PINAnimatedImageManager.h; sourceTree = ""; }; - E857537D8093A485EBFE9E2DDBDBD637 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; - E95F52D48BE116262D8E096EB945BA77 /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; - EA04BFF51A241F303647865553F8D3B2 /* PINCache+PINRemoteImageCaching.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PINCache+PINRemoteImageCaching.m"; path = "Pod/Classes/PINCache/PINCache+PINRemoteImageCaching.m"; sourceTree = ""; }; - EA690D9B4AFF44E99214D96D63936AA0 /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; - EFC84D45EEC8BC803E82AF11A1A894DB /* PINRemoteImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImage.h; path = Pod/Classes/PINRemoteImage.h; sourceTree = ""; }; - F1B846119593EDF3614E6E7916002005 /* PINProgressiveImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINProgressiveImage.h; path = Pod/Classes/PINProgressiveImage.h; sourceTree = ""; }; - F2E0AA5B9CF5EC389BD0E53528B17B51 /* PINRemoteImageMemoryContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageMemoryContainer.h; path = Pod/Classes/PINRemoteImageMemoryContainer.h; sourceTree = ""; }; - F3AB9D90A43E7FB7311C92C18F78A1A0 /* PINCache+PINRemoteImageCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PINCache+PINRemoteImageCaching.h"; path = "Pod/Classes/PINCache/PINCache+PINRemoteImageCaching.h"; sourceTree = ""; }; - F7A0C132FC1641AED504FDE95185E011 /* PINRemoteImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageManager.h; path = Pod/Classes/PINRemoteImageManager.h; sourceTree = ""; }; - F8E0391C88B698C81429155D1E63AA13 /* PINRemoteImageBasicCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageBasicCache.m; path = Pod/Classes/PINRemoteImageBasicCache.m; sourceTree = ""; }; + DEA75279B09BBBFF4BCF21E566758E24 /* PINRemoteImageCaching.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCaching.h; path = Pod/Classes/PINRemoteImageCaching.h; sourceTree = ""; }; + DFA5D81C6C4104421E85D785F9E51236 /* PINRemoteImageCallbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageCallbacks.h; path = Pod/Classes/PINRemoteImageCallbacks.h; sourceTree = ""; }; + E49BF8E96AECEECF11F41895C749012F /* PINRemoteImageMemoryContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageMemoryContainer.m; path = Pod/Classes/PINRemoteImageMemoryContainer.m; sourceTree = ""; }; + E86544A2E55E08CB4E36DD726FF7CFD2 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; + E8F8C7994B4A99FBB4569EF0227B6E50 /* PINRemoteImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINRemoteImageManager.h; path = Pod/Classes/PINRemoteImageManager.h; sourceTree = ""; }; + EA9A11E805006AAC2470655C17579EC3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + F20EB2B220567413CD3B7D2D082D9458 /* libFLAnimatedImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFLAnimatedImage.a; path = libFLAnimatedImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + F5591A6A564570B56C8C75D0D622704B /* PINRemoteImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINRemoteImageManager.m; path = Pod/Classes/PINRemoteImageManager.m; sourceTree = ""; }; + F9B711ED853147A9A6242D37A7700E4B /* PINDataTaskOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDataTaskOperation.h; path = Pod/Classes/PINDataTaskOperation.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 5EB3279CA70C2EE3BD67E88E0D2E241D /* Frameworks */ = { + 225D32E0496A3B11F5C3EAE33E05EFFF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E3ED6DBD13F491C899A15C35C05C69B8 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6AC5301020B6AD8027C2878CBBCC73EB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A589C2AAEEC55339FFC90231BAAEB896 /* Foundation.framework in Frameworks */, - 0CA23DCC76B83B612A3CEED98D14B23E /* QuartzCore.framework in Frameworks */, + 3CB54645F630095EA50CD3AAE52CC30C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -265,9 +234,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 67B58D322DDE680B16979EFE00297670 /* Accelerate.framework in Frameworks */, - 920B39F0E5F3A2BF51DC65B31D17F061 /* Foundation.framework in Frameworks */, - 45EE4E8B3833971578DE857ED53C0AB2 /* ImageIO.framework in Frameworks */, + DB634795DCF67E2EAE0CA1F07D421F22 /* Accelerate.framework in Frameworks */, + 8289A8671C5C1308D30B2765B370EBAE /* Foundation.framework in Frameworks */, + DDF90CD81C662191B3F0C4FA07CD7ED1 /* ImageIO.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -275,11 +244,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 73224CB39DEDC688ADE0D6D51FCAA3F7 /* CoreGraphics.framework in Frameworks */, - 0E9E2B040680E0B5F2A41D247875C60F /* Foundation.framework in Frameworks */, - 51157F7A2664E6CD320A08566897FB28 /* ImageIO.framework in Frameworks */, - 1EFD9583025366C1EB5F456A6CD3E3BD /* MobileCoreServices.framework in Frameworks */, - 0024F89673D793582C1B016ED8430AC1 /* QuartzCore.framework in Frameworks */, + 77AC176D88B0888A14BE613CD68F6EB7 /* CoreGraphics.framework in Frameworks */, + 534FBD8D0E92F8D5A4A7FED6F0033F27 /* Foundation.framework in Frameworks */, + DDA640DE83B83C43285ABA7CF32FD69E /* ImageIO.framework in Frameworks */, + C8B4CA357C127C1C794AEE8DBC7CEFB4 /* MobileCoreServices.framework in Frameworks */, + 9B51DED9F2800F5715AC998686A4DEBE /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -287,183 +256,156 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E04AE38DC88A86C6E76CEE8CF3317D2C /* Foundation.framework in Frameworks */, + 3BF30A88E8D88CB73657B9E55E5D15E4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 056BEC36C6AA0D20C9AC8B4EA89CF936 /* PINCache */ = { - isa = PBXGroup; - children = ( - F3AB9D90A43E7FB7311C92C18F78A1A0 /* PINCache+PINRemoteImageCaching.h */, - EA04BFF51A241F303647865553F8D3B2 /* PINCache+PINRemoteImageCaching.m */, - ); - name = PINCache; - sourceTree = ""; - }; 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */ = { isa = PBXGroup; children = ( - 8BB2CBD4A2A8C0DED75A160667AA82A6 /* iOS */, + B524E1F0396C90EB2A3A6739B94B9BCF /* iOS */, ); name = Frameworks; sourceTree = ""; }; - 17BFCBE2D79463814098B43ECEC55B72 /* Arc-exception-safe */ = { - isa = PBXGroup; - children = ( - E95F52D48BE116262D8E096EB945BA77 /* PINDiskCache.m */, - ); - name = "Arc-exception-safe"; - sourceTree = ""; - }; - 2A022411883EBBFF79C3CA52C1C56A01 /* Pods */ = { + 1B0E2C980F0DDBC129AB07AB066D6E7E /* PINCache */ = { isa = PBXGroup; children = ( - 3CCB7D3AB7CDCB1B75326418FF38BB32 /* DACircularProgress */, - 3D08592A0013A8D6506D140FCC470C06 /* FLAnimatedImage */, - BACE0A15FD800623FAA0E52E195C5518 /* PINCache */, - 883A13FFAF5089E1F7F4121BDD242ABC /* PINRemoteImage */, + 2AD53A1C49BC6EF664295D42703805DB /* PINCache+PINRemoteImageCaching.h */, + A9DDF7BF8758730D80523125F511943B /* PINCache+PINRemoteImageCaching.m */, ); - name = Pods; + name = PINCache; sourceTree = ""; }; - 350846657FE776AD0CF0DCA38D62B329 /* Products */ = { + 1C610A3BE476228410708BDE62D92CD9 /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - D8764C9D9ABE0381B7100252680B7F69 /* libDACircularProgress.a */, - 1D39D4FEF51CE413AF46DED66D289AA7 /* libFLAnimatedImage.a */, - 8237040CE637A87641BDF1B865061C3F /* libPINCache.a */, - 0309660013227897705A6972AA1846E8 /* libPINRemoteImage.a */, - 58387257DABB5ED468932C2A0C1FD2B1 /* libPods-BFRImageViewer.a */, + 7413F7EAE39AD54CBB2FF9354D3F3112 /* FLAnimatedImage.h */, + 638E96B2763B4E9521ED8E1DB2E55FE6 /* FLAnimatedImage.m */, + 935AA2A62F008455766C4882A0F0AF9F /* FLAnimatedImageView.h */, + 4711F770A08A509BD26F8DA3628F3284 /* FLAnimatedImageView.m */, + 640D1D371C0255403ED55836D038F722 /* Support Files */, ); - name = Products; + name = FLAnimatedImage; + path = FLAnimatedImage; sourceTree = ""; }; - 3CCB7D3AB7CDCB1B75326418FF38BB32 /* DACircularProgress */ = { + 5683BE8680A84B0CCB9C364D6EA1E494 /* PINCache */ = { isa = PBXGroup; children = ( - 9CA3936DF3971E64A9F88E6080DAAB65 /* DACircularProgressView.h */, - A233742EE6DA45C45D982D0316D3284D /* DACircularProgressView.m */, - 6207745A3A1B0ED4C20016B02E1B423A /* DALabeledCircularProgressView.h */, - CC74E10F063D4E772EEBBD4A9B80F784 /* DALabeledCircularProgressView.m */, - 4909F437089919B5F3CB5002BF3C3D4D /* Support Files */, + C248BA22436ABEB2E89023DCBFBCFBA2 /* Arc-exception-safe */, + A8B728B5B3708B3053497E5B7FB97435 /* Core */, + C7A4B68F74DEE1CEDFBADAE78A598722 /* Support Files */, ); - name = DACircularProgress; - path = DACircularProgress; + name = PINCache; + path = PINCache; sourceTree = ""; }; - 3D08592A0013A8D6506D140FCC470C06 /* FLAnimatedImage */ = { + 640D1D371C0255403ED55836D038F722 /* Support Files */ = { isa = PBXGroup; children = ( - 83F7960B436E6BB799AF9499A48B67E1 /* FLAnimatedImage.h */, - 8A30010DEB8ABEEBA2DD5FAEF03B2B8B /* FLAnimatedImage.m */, - 24D8CC324F1C3E9C512AC1223F0E58A4 /* FLAnimatedImageView.h */, - 5282B390A785F0765C0FBE4FDAFC6EDE /* FLAnimatedImageView.m */, - C6C857970A0F46E3CF0AA60DE9260129 /* Support Files */, + 4E616F2C9A436C7D1BD4317387BEE2C4 /* FLAnimatedImage.xcconfig */, + 76E45DBD483EAFE6DCE1362D310DAA20 /* FLAnimatedImage-dummy.m */, + C9A0132257AB3D12D27B5262AF409A78 /* FLAnimatedImage-prefix.pch */, ); - name = FLAnimatedImage; - path = FLAnimatedImage; + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; - 4909F437089919B5F3CB5002BF3C3D4D /* Support Files */ = { + 7731C28DC10FECF56643F57F040CEAF7 /* Pods */ = { isa = PBXGroup; children = ( - AD448BABA9CF88D751524B540624A815 /* DACircularProgress.xcconfig */, - 823CCEB2BA360CD17AF1707F8C0F04F9 /* DACircularProgress-dummy.m */, - D70835E683638FC424642AB5FCC6D18B /* DACircularProgress-prefix.pch */, + 1C610A3BE476228410708BDE62D92CD9 /* FLAnimatedImage */, + 5683BE8680A84B0CCB9C364D6EA1E494 /* PINCache */, + ED167D4164B9F8A23557AD973F0920DC /* PINRemoteImage */, ); - name = "Support Files"; - path = "../Target Support Files/DACircularProgress"; + name = Pods; sourceTree = ""; }; - 49B7BD97C9ECF8896FC212275917B592 /* Support Files */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - 30DED4EB2FE46426F659CB946496F900 /* PINCache.xcconfig */, - E857537D8093A485EBFE9E2DDBDBD637 /* PINCache-dummy.m */, - EA690D9B4AFF44E99214D96D63936AA0 /* PINCache-prefix.pch */, + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */, + 7731C28DC10FECF56643F57F040CEAF7 /* Pods */, + 7F777C335E064A911D8281E2D157E792 /* Products */, + EA118ECA2C1D7EB7821274C4ECBF8752 /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/PINCache"; sourceTree = ""; }; - 4A1369DDDAE54B384CA85023D3470A14 /* Core */ = { + 7F777C335E064A911D8281E2D157E792 /* Products */ = { isa = PBXGroup; children = ( - 99A71E8CB50C22BC42C5CA5E2BE3B77C /* Nullability.h */, - 3EF52EC48C2CF12A2C5861295E69FC57 /* PINCache.h */, - 389F30E9C0ABD780CC83836EFB44C3E3 /* PINCache.m */, - 51EBE843F094794D72B34F50B5B21D30 /* PINCacheObjectSubscripting.h */, - D12B08F44BA0C726C5BCB2412F62B8E9 /* PINDiskCache.h */, - 19230B0BE960DCC6260E0AE5F8D79D7E /* PINMemoryCache.h */, - BFAFAF3C8C80287DAEB5FE6C58D74AC6 /* PINMemoryCache.m */, - C15FA3DFF2DBA22F8684C6B0E4A942D4 /* PINOperationGroup.h */, - 5832875C97940435F312D1CA8800C9A9 /* PINOperationGroup.m */, - BFEBABA89AF4C39A7829A6BAA79D7AA4 /* PINOperationQueue.h */, - 42839CF5D2E564467A2CE348927C03FD /* PINOperationQueue.m */, + F20EB2B220567413CD3B7D2D082D9458 /* libFLAnimatedImage.a */, + B9BD431F4A603ABB14BD66BA0A51FD46 /* libPINCache.a */, + 5C4B5476DE199AC4AE32D1F678B8D359 /* libPINRemoteImage.a */, + 951D8A65055576FE800383C51BDECCF7 /* libPods-BFRImageViewer.a */, ); - name = Core; + name = Products; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 8BA2D44B7A1EBC5DB50CD940AC400DD7 /* Support Files */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */, - 2A022411883EBBFF79C3CA52C1C56A01 /* Pods */, - 350846657FE776AD0CF0DCA38D62B329 /* Products */, - EA118ECA2C1D7EB7821274C4ECBF8752 /* Targets Support Files */, + BDEC0F1AF77A4CBEC4BC66ECA85314A7 /* PINRemoteImage.xcconfig */, + 59F0AC6FB170A5CB5742915B2C4AF915 /* PINRemoteImage-dummy.m */, + 4C277E273DD582277FC2A3A4604C174B /* PINRemoteImage-prefix.pch */, ); + name = "Support Files"; + path = "../Target Support Files/PINRemoteImage"; sourceTree = ""; }; - 883A13FFAF5089E1F7F4121BDD242ABC /* PINRemoteImage */ = { + A8B728B5B3708B3053497E5B7FB97435 /* Core */ = { isa = PBXGroup; children = ( - DD8BB124176007BD2FA003DC3F215FCC /* Core */, - CFFA6DF3A79E13FDE591BE25EF0FE6F5 /* FLAnimatedImage */, - 056BEC36C6AA0D20C9AC8B4EA89CF936 /* PINCache */, - E0D374194C33C19787C3791AB3A864E4 /* Support Files */, + 4AD8E136BD52D9EFDFC546E4F79BBD2D /* Nullability.h */, + BF1671AAF8402EEFF4B515C0D33E12FD /* PINCache.h */, + 8555BB7B7ABCC7B4DC4D672CAB3F64D3 /* PINCache.m */, + E86544A2E55E08CB4E36DD726FF7CFD2 /* PINCacheObjectSubscripting.h */, + D3116B74292B10422EA53E10A27E7E9A /* PINDiskCache.h */, + 47595EA5663CE8920CFB20A2C76E3C96 /* PINMemoryCache.h */, + 99E069F1B3A62FD5AA9D7B4C49B04508 /* PINMemoryCache.m */, + B9135B89A11DA98593B7927AFDC62458 /* PINOperationGroup.h */, + 863CB42056449E0753627A2B5C8CC05D /* PINOperationGroup.m */, + 2A4CD651AF555E390638EADA7B2469D9 /* PINOperationQueue.h */, + B3B0F57636865D26E791EC72573A18BC /* PINOperationQueue.m */, ); - name = PINRemoteImage; - path = PINRemoteImage; + name = Core; sourceTree = ""; }; - 8BB2CBD4A2A8C0DED75A160667AA82A6 /* iOS */ = { + B524E1F0396C90EB2A3A6739B94B9BCF /* iOS */ = { isa = PBXGroup; children = ( - E516036390BA561D4132699F80343C87 /* Accelerate.framework */, - E1EF55610D4A5B0010ACC32D2083E788 /* CoreGraphics.framework */, - 30FE0CFDE5F7989D621C71EF12A99335 /* Foundation.framework */, - B2AF52CF41D0CA688A271203B9A49633 /* ImageIO.framework */, - C9916B2E855D65ECAE53C892FD9DE215 /* MobileCoreServices.framework */, - 1983BDC107FFDC16EB402E85A2D57DA6 /* QuartzCore.framework */, + 481D894B89E90DADA5583C7982CC9CEC /* Accelerate.framework */, + EA9A11E805006AAC2470655C17579EC3 /* CoreGraphics.framework */, + BF5459152FA08D39AF2F0814F6F0DA52 /* Foundation.framework */, + 89D34AC91B82BB6BB8D331E9B4AD1F18 /* ImageIO.framework */, + C9EFE57FA8945D65CE2671124F81F577 /* MobileCoreServices.framework */, + A9F10FFF67C9EEC9294318E395399CE9 /* QuartzCore.framework */, ); name = iOS; sourceTree = ""; }; - BACE0A15FD800623FAA0E52E195C5518 /* PINCache */ = { + C248BA22436ABEB2E89023DCBFBCFBA2 /* Arc-exception-safe */ = { isa = PBXGroup; children = ( - 17BFCBE2D79463814098B43ECEC55B72 /* Arc-exception-safe */, - 4A1369DDDAE54B384CA85023D3470A14 /* Core */, - 49B7BD97C9ECF8896FC212275917B592 /* Support Files */, + 1C50809AF1DB9BC4ED4C811482B6AFD6 /* PINDiskCache.m */, ); - name = PINCache; - path = PINCache; + name = "Arc-exception-safe"; sourceTree = ""; }; - C6C857970A0F46E3CF0AA60DE9260129 /* Support Files */ = { + C7A4B68F74DEE1CEDFBADAE78A598722 /* Support Files */ = { isa = PBXGroup; children = ( - 182B706E38C635452A4EF3E2B7318B42 /* FLAnimatedImage.xcconfig */, - 6C18C9598A34D36462CE95B16650BAC4 /* FLAnimatedImage-dummy.m */, - 9BD7F6F43FB7435698D353424A2E39FE /* FLAnimatedImage-prefix.pch */, + 7604CAC5EF1D98120CC6C7E793B4F232 /* PINCache.xcconfig */, + 22C921299FBC593448E1BF50A13FD158 /* PINCache-dummy.m */, + 2AADB470E3B36CA08E068C1207FF7EB4 /* PINCache-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; + path = "../Target Support Files/PINCache"; sourceTree = ""; }; CBDCF88FFEFD3A5F6F0A48957646E694 /* Pods-BFRImageViewer */ = { @@ -481,84 +423,85 @@ path = "Target Support Files/Pods-BFRImageViewer"; sourceTree = ""; }; - CFFA6DF3A79E13FDE591BE25EF0FE6F5 /* FLAnimatedImage */ = { + D6C3ECC7374135335FB05296D8C77F47 /* Core */ = { isa = PBXGroup; children = ( - 6DF2AE5611D91286E2B7FC972C95BB34 /* FLAnimatedImageView+PINRemoteImage.h */, - 5CE89D4493E7E477CE23D5C236671247 /* FLAnimatedImageView+PINRemoteImage.m */, + 394B8D3369EAA1D998F7B116232414BD /* NSData+ImageDetectors.h */, + 90AC936B6085337856FEC39109E880A8 /* NSData+ImageDetectors.m */, + 90BD2AD51BA848228192569376C946A6 /* PINAlternateRepresentationProvider.h */, + C647F0E28F3BD12760AF52E213048F7D /* PINAlternateRepresentationProvider.m */, + B834F97A5AD88967BD56F9A33DCF8B9F /* PINAnimatedImage.h */, + 91F8FA5874A43B1E57152B78A86CB8AA /* PINAnimatedImage.m */, + 8B764FA5B0C2A6E0A8E3D6ABF77DF904 /* PINAnimatedImageManager.h */, + C6141402E154C6E1CBE236A5783E29EC /* PINAnimatedImageManager.m */, + 5C5D9E7589C2EC5BA697AA348FFB4155 /* PINButton+PINRemoteImage.h */, + 533B4A9D80CF95A03B30A44AEF42D736 /* PINButton+PINRemoteImage.m */, + F9B711ED853147A9A6242D37A7700E4B /* PINDataTaskOperation.h */, + 65D5E033471170876D28572F01975363 /* PINDataTaskOperation.m */, + 144C7F0EE25896DFE8D732BC5AB2BD56 /* PINImage+DecodedImage.h */, + 4F5667A34113CDAE2F4326DADCA5A792 /* PINImage+DecodedImage.m */, + C70175BDBAB05F8F89F4746F32855F77 /* PINImage+WebP.h */, + D20574EEA65F327AE8E1BEDB42EAF538 /* PINImage+WebP.m */, + C14C54A43AB4BB5CB643910272390DF5 /* PINImageView+PINRemoteImage.h */, + 9C2F2BBC8159540335CD9B7090CF91FC /* PINImageView+PINRemoteImage.m */, + B07BE68281E325A858BEFEC72B7D28E2 /* PINProgressiveImage.h */, + 9059BBF29F80664DD5235FB613A1E9FA /* PINProgressiveImage.m */, + 5F585BAB6CBD4C42F3094347A11317CE /* PINRemoteImage.h */, + 7A6696E17AA51903769427244D110DA5 /* PINRemoteImageBasicCache.h */, + 4E50EB4588E4A7E72B5A88E01ABA32BE /* PINRemoteImageBasicCache.m */, + DEA75279B09BBBFF4BCF21E566758E24 /* PINRemoteImageCaching.h */, + DFA5D81C6C4104421E85D785F9E51236 /* PINRemoteImageCallbacks.h */, + 1C7B17CED99FE839F6DCCB59DA52CE3E /* PINRemoteImageCallbacks.m */, + 08C78B78BFA7A65E03DBC28E683B5453 /* PINRemoteImageCategoryManager.h */, + C3BCD60213393BAE5D0FCADDDF26C3A7 /* PINRemoteImageCategoryManager.m */, + 810505EE437BFF25CD946B0BEB6DE0AC /* PINRemoteImageDownloadTask.h */, + D5399C7937D90B915376ABECE65A94D4 /* PINRemoteImageDownloadTask.m */, + A799AFE6CBCFC9A1FF761C23CA0CEC11 /* PINRemoteImageMacros.h */, + E8F8C7994B4A99FBB4569EF0227B6E50 /* PINRemoteImageManager.h */, + F5591A6A564570B56C8C75D0D622704B /* PINRemoteImageManager.m */, + DC698E538C35C34BCE6010B1C266D22F /* PINRemoteImageManagerResult.h */, + A566A2D0EBE0217A5CE9949824133968 /* PINRemoteImageManagerResult.m */, + 4EB49C7DB81E8A9AEC6AFEA1FA522FF8 /* PINRemoteImageMemoryContainer.h */, + E49BF8E96AECEECF11F41895C749012F /* PINRemoteImageMemoryContainer.m */, + C4BA9B04E4BABB5579654AB66C27C998 /* PINRemoteImageProcessorTask.h */, + 78125BF1CFFD960C7A4089B8BEB0F312 /* PINRemoteImageProcessorTask.m */, + 8D8E00D58E8EC4705CAD090EAABA184A /* PINRemoteImageTask.h */, + 839383219A491590DE39F12FDA42B21C /* PINRemoteImageTask.m */, + 5746B007F4AE310DF17B0885F60D0D4F /* PINRemoteLock.h */, + 36A3B3FEF825B0B28528230C7F0439A2 /* PINRemoteLock.m */, + 899AE5D0B4029A0D4427C87993F79A72 /* PINURLSessionManager.h */, + B4EB20A28BACC43DB60114E8E10C34C5 /* PINURLSessionManager.m */, ); - name = FLAnimatedImage; + name = Core; sourceTree = ""; }; - DD8BB124176007BD2FA003DC3F215FCC /* Core */ = { + E09E9CC7A101035A681DF41E820B6A7A /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - 6B6A549B6EB4B9455688FFBBCB9F9970 /* NSData+ImageDetectors.h */, - 38CC5AB2396426F0F8696ABB546F81BC /* NSData+ImageDetectors.m */, - D16FACF71696201CB4004CD73ACAD88A /* PINAlternateRepresentationProvider.h */, - E2780DAEAF80B0ACDEA7E7A0753B3448 /* PINAlternateRepresentationProvider.m */, - CA6F7A32E1DEE5C500F58E235CCF5FF3 /* PINAnimatedImage.h */, - 191E9BCB37A6A3CB72436798452D361F /* PINAnimatedImage.m */, - E80DE5A90FFAD4252D7754F54948C523 /* PINAnimatedImageManager.h */, - 0C1B234ECBE069C915B453BFCB6A309F /* PINAnimatedImageManager.m */, - D216A1AE97520D71691F2F18F73CCE80 /* PINButton+PINRemoteImage.h */, - 20D276F2D4D7BC24F420CCD2501DF7E7 /* PINButton+PINRemoteImage.m */, - 561B0E75336C6CD965D19D9A8AA1AD76 /* PINDataTaskOperation.h */, - 78DDF89AB358BCA78E4C329077B87D37 /* PINDataTaskOperation.m */, - 3E0A008B1F80845CEFB8508B7AB1FC19 /* PINImage+DecodedImage.h */, - D0BDB5CCFB7AA2FCB75211CE93878CDD /* PINImage+DecodedImage.m */, - 295EBEA2FCD50E4DB46A92B81F89356F /* PINImage+WebP.h */, - 265EFCA27F8B3DFAF50C3180FC4DAC25 /* PINImage+WebP.m */, - 083B5FCEE6A7BE85EBB1EB4155AF5E3A /* PINImageView+PINRemoteImage.h */, - C6021F9CBBA360A8D28CD13C52316A02 /* PINImageView+PINRemoteImage.m */, - F1B846119593EDF3614E6E7916002005 /* PINProgressiveImage.h */, - 5128EF6B0C02C4CE86813C589FCA1537 /* PINProgressiveImage.m */, - EFC84D45EEC8BC803E82AF11A1A894DB /* PINRemoteImage.h */, - 316A5CB7FBBFF66204BBA9ED74D6718D /* PINRemoteImageBasicCache.h */, - F8E0391C88B698C81429155D1E63AA13 /* PINRemoteImageBasicCache.m */, - 6FE3BFA1489D403B9D9280717FB9103E /* PINRemoteImageCaching.h */, - B86555A9202517817259C5E63A6DE7B7 /* PINRemoteImageCallbacks.h */, - DCC93DD33C6E74578971EFC4450D8373 /* PINRemoteImageCallbacks.m */, - CEC9C6B5E9671DC798A27854EA600DEC /* PINRemoteImageCategoryManager.h */, - 2E3991D421DE0457198E8D33FC007A77 /* PINRemoteImageCategoryManager.m */, - 70033908ADBC919DDC8E992338EE9FC6 /* PINRemoteImageDownloadTask.h */, - 3FB1199AC79D0D2FA24A7FAB45B6B470 /* PINRemoteImageDownloadTask.m */, - 71EB1B2B4FB89A78F3A8385813823310 /* PINRemoteImageMacros.h */, - F7A0C132FC1641AED504FDE95185E011 /* PINRemoteImageManager.h */, - 0BAA3399AE65AB72F58516054C757E7C /* PINRemoteImageManager.m */, - 0FB763E8E4485C9C0ABB9A73D27CA026 /* PINRemoteImageManagerResult.h */, - A3F4BF5D4BC7B2C3529343DA28C0F2C0 /* PINRemoteImageManagerResult.m */, - F2E0AA5B9CF5EC389BD0E53528B17B51 /* PINRemoteImageMemoryContainer.h */, - D37F4FF2691F5AD14074D8A1C9956B1A /* PINRemoteImageMemoryContainer.m */, - 3024C2D4879D18CA790793CFF118BA80 /* PINRemoteImageProcessorTask.h */, - 442F845091462489215DD1A5CE912D8D /* PINRemoteImageProcessorTask.m */, - 701565E8DCF442E22060A747AEDD94EC /* PINRemoteImageTask.h */, - C4AA28ADA0965F7AC035C5E25C4EC583 /* PINRemoteImageTask.m */, - 529A5A10F4736882F96E54559AD399DD /* PINRemoteLock.h */, - A796A80E82352C272B87C4DCDC23555D /* PINRemoteLock.m */, - 91ACE60A9AD347371453EED73675DDDE /* PINURLSessionManager.h */, - 074996F7C2542EE1A249798D2105D4BB /* PINURLSessionManager.m */, + 3A0AB560A8A9AE53AA05683E1E5AB570 /* FLAnimatedImageView+PINRemoteImage.h */, + 6E40CF846E72E9B3332471E3AFC0EAF7 /* FLAnimatedImageView+PINRemoteImage.m */, ); - name = Core; + name = FLAnimatedImage; sourceTree = ""; }; - E0D374194C33C19787C3791AB3A864E4 /* Support Files */ = { + EA118ECA2C1D7EB7821274C4ECBF8752 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 3E79D4A0108A1439C899ABE224DD13F0 /* PINRemoteImage.xcconfig */, - CD6749EA98C452378EDD4F9E1878EB07 /* PINRemoteImage-dummy.m */, - 38956D2B09407A01422332281DB769ED /* PINRemoteImage-prefix.pch */, + CBDCF88FFEFD3A5F6F0A48957646E694 /* Pods-BFRImageViewer */, ); - name = "Support Files"; - path = "../Target Support Files/PINRemoteImage"; + name = "Targets Support Files"; sourceTree = ""; }; - EA118ECA2C1D7EB7821274C4ECBF8752 /* Targets Support Files */ = { + ED167D4164B9F8A23557AD973F0920DC /* PINRemoteImage */ = { isa = PBXGroup; children = ( - CBDCF88FFEFD3A5F6F0A48957646E694 /* Pods-BFRImageViewer */, + D6C3ECC7374135335FB05296D8C77F47 /* Core */, + E09E9CC7A101035A681DF41E820B6A7A /* FLAnimatedImage */, + 1B0E2C980F0DDBC129AB07AB066D6E7E /* PINCache */, + 8BA2D44B7A1EBC5DB50CD940AC400DD7 /* Support Files */, ); - name = "Targets Support Files"; + name = PINRemoteImage; + path = PINRemoteImage; sourceTree = ""; }; /* End PBXGroup section */ @@ -568,17 +511,8 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B3550A4DAD326329DFA27C0F362C603E /* FLAnimatedImage.h in Headers */, - 63EAEA3C15F493173AE81FF5F366EE5C /* FLAnimatedImageView.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A14A3D09D59B9E6CB79FA84BACA8CE18 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 94D880AC12F7FBAB7F27D2BBA9CBB53E /* DACircularProgressView.h in Headers */, - C23657B0710AE187185AB686C4682162 /* DALabeledCircularProgressView.h in Headers */, + 2B5FEA8377B267CE91653EF5FBB856FF /* FLAnimatedImage.h in Headers */, + 54F0A238489A8D6DF7B44EA9ACA4C219 /* FLAnimatedImageView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -586,13 +520,13 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4025E4EF5E01C93919047C77FAF4B7B6 /* Nullability.h in Headers */, - AFF08577BC3807DCF8FC72F1C2C48AAC /* PINCache.h in Headers */, - 5A4DE4D84C554DF22EBDFA815661B7C3 /* PINCacheObjectSubscripting.h in Headers */, - 02179658BFB4DF8C0472FAC4269AF745 /* PINDiskCache.h in Headers */, - 906B8995E31354FFCB1E97A0AF6583BC /* PINMemoryCache.h in Headers */, - 3681254D0D693A67149AA96A1A071F64 /* PINOperationGroup.h in Headers */, - 662B486D7326F3C2A4014CA81BC39B17 /* PINOperationQueue.h in Headers */, + 3F1E4EA667FD71A51DCC612528309582 /* Nullability.h in Headers */, + B075308F8E1EA06A6568E807B07769F7 /* PINCache.h in Headers */, + 579CA865D495CC6A4B3B2C60C950C1CB /* PINCacheObjectSubscripting.h in Headers */, + B7C55C9287CBB998BE1EDEAF79278456 /* PINDiskCache.h in Headers */, + 65BED53A5C898DED91F0311867484160 /* PINMemoryCache.h in Headers */, + B19E9E517EB42086342DC598C6624EA4 /* PINOperationGroup.h in Headers */, + A37779519A462F15EB54382CF8968539 /* PINOperationQueue.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -600,32 +534,32 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9BE724C48852B870CFBC89A53A5DB1EF /* FLAnimatedImageView+PINRemoteImage.h in Headers */, - 2C6BA2BD8EC92CCAB6AD7C2BC56B8415 /* NSData+ImageDetectors.h in Headers */, - EBA586FFE5A67CC3057EC4FBE99D16EF /* PINAlternateRepresentationProvider.h in Headers */, - CA2D87374F251FCEFCD395C1D7FE7C14 /* PINAnimatedImage.h in Headers */, - 49D141B6A7324A2AA411627BBA6FE57E /* PINAnimatedImageManager.h in Headers */, - 311781DDA777D7295189F163C9D60FBC /* PINButton+PINRemoteImage.h in Headers */, - 3A0007C5D0F074814B1028AB6F4D34C6 /* PINCache+PINRemoteImageCaching.h in Headers */, - E610527E4AE2E75B1F57AFAC42B4F99D /* PINDataTaskOperation.h in Headers */, - 7AFAB2F9AB463BCAF5D2FADAAFEC24D0 /* PINImage+DecodedImage.h in Headers */, - 8D901A2439A3A69471E536E103A7A36C /* PINImage+WebP.h in Headers */, - C2C0D9895744B427E899166EF8C60A75 /* PINImageView+PINRemoteImage.h in Headers */, - 7FB124F3AF76A8F96329472D4CB73DEF /* PINProgressiveImage.h in Headers */, - 1F0DE65891A4AC71FF589C469CC41E8E /* PINRemoteImage.h in Headers */, - 8B97B2B63D30083E8B8C50071D0BB64C /* PINRemoteImageBasicCache.h in Headers */, - 645CEF707D2588907D1D8273CC28ACAC /* PINRemoteImageCaching.h in Headers */, - 47DDC63BE0247749C8C1AAB5A8107640 /* PINRemoteImageCallbacks.h in Headers */, - 81F05C8AA950F13A257531D5C5704359 /* PINRemoteImageCategoryManager.h in Headers */, - 8CC7FAA896A87D4104329D2AE38D2793 /* PINRemoteImageDownloadTask.h in Headers */, - 0A939E8B3AAD7941A0C6C7AEE9361F70 /* PINRemoteImageMacros.h in Headers */, - 86615B3760E570EDF21B003A2DE4B301 /* PINRemoteImageManager.h in Headers */, - FBB4D9371221EBA6BA69408E33A83D5B /* PINRemoteImageManagerResult.h in Headers */, - 3C287D75CF3F4C586F6B5646684E2AF7 /* PINRemoteImageMemoryContainer.h in Headers */, - 98BE25B80E1451F5A9126EA80B3C50FC /* PINRemoteImageProcessorTask.h in Headers */, - 8481A11BD6ECCCB2C14AFDE8D4D8C5CB /* PINRemoteImageTask.h in Headers */, - 6DABCF4E595D546441A1474EBDFC0D42 /* PINRemoteLock.h in Headers */, - 3C4DCC84674225ED664A8BFDD7ED2F2C /* PINURLSessionManager.h in Headers */, + 2FDA48DA7C3413C822347E93A52A2ED7 /* FLAnimatedImageView+PINRemoteImage.h in Headers */, + B748AE8AC884F26887654464C3EF9C67 /* NSData+ImageDetectors.h in Headers */, + 72420619A4622DB71CB601F410F262E1 /* PINAlternateRepresentationProvider.h in Headers */, + C0BDEA8E05F2849128437172991A41DB /* PINAnimatedImage.h in Headers */, + 6036CFE504D47F783C5EE436F72610D3 /* PINAnimatedImageManager.h in Headers */, + BDF3344434AB306B3C261F6B39D9FAEC /* PINButton+PINRemoteImage.h in Headers */, + 2F4045CA5D0C05E8A7106177C56CBBB6 /* PINCache+PINRemoteImageCaching.h in Headers */, + 9206DB18B070593FF1BB29C3A9538D6A /* PINDataTaskOperation.h in Headers */, + CD9899A12EF91880166832390843FBD2 /* PINImage+DecodedImage.h in Headers */, + 86C5EAAB584231ACF881EF3DB40DF325 /* PINImage+WebP.h in Headers */, + A6DB273127DE9ED9228113F04D3C4DDB /* PINImageView+PINRemoteImage.h in Headers */, + 326E6BCE9F9DBFA12D1EB2488A68E28C /* PINProgressiveImage.h in Headers */, + 9D4DE7BCD4B6C27ED95923B79663E4F7 /* PINRemoteImage.h in Headers */, + 955EF44D88CDFBD32B23CB46CC884620 /* PINRemoteImageBasicCache.h in Headers */, + 5E99A6B10D880E611FFEC8E1D686095E /* PINRemoteImageCaching.h in Headers */, + A16F129FC118F57DB82AA6956D1E976C /* PINRemoteImageCallbacks.h in Headers */, + BF91C44587928D603AD6EB23E9286537 /* PINRemoteImageCategoryManager.h in Headers */, + A912FCB20C763BE20989F5C09A948B8D /* PINRemoteImageDownloadTask.h in Headers */, + F422A09440A1D2C53030F6EE7B42662C /* PINRemoteImageMacros.h in Headers */, + 47926E99C6D315E56B2E93849031812A /* PINRemoteImageManager.h in Headers */, + EABA0DA8921DE31AE52D735E241A49AB /* PINRemoteImageManagerResult.h in Headers */, + 1C99674D9EE3821F0460C06E86EBAF51 /* PINRemoteImageMemoryContainer.h in Headers */, + 81F34A20418613F766AB0E9CA9048C07 /* PINRemoteImageProcessorTask.h in Headers */, + FA62DF0115A0039CD8A7448AD912377E /* PINRemoteImageTask.h in Headers */, + 275DDD3C68266A2E6769F3C8DDD00AEF /* PINRemoteLock.h in Headers */, + 5CBCB57BB09EACE282C5CF9ACC1C2721 /* PINURLSessionManager.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -648,44 +582,43 @@ ); name = PINRemoteImage; productName = PINRemoteImage; - productReference = 0309660013227897705A6972AA1846E8 /* libPINRemoteImage.a */; + productReference = 5C4B5476DE199AC4AE32D1F678B8D359 /* libPINRemoteImage.a */; productType = "com.apple.product-type.library.static"; }; - 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */ = { + 348A03069D4CE76E6A8379401766455F /* Pods-BFRImageViewer */ = { isa = PBXNativeTarget; - buildConfigurationList = 0EA4F995CBBF1300B4D566BFA7DD3B38 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */; + buildConfigurationList = E0573228D7E86908BCA62CE51054F9D7 /* Build configuration list for PBXNativeTarget "Pods-BFRImageViewer" */; buildPhases = ( - 7AE2B9876FC7B6898B64C81D3973EE56 /* Sources */, - 8E86703F96A4090BC5045C37B7C91BBB /* Frameworks */, - 7302CE7D9AE53174060E2127FEC17174 /* Headers */, + 477C1B3AB0A50743A6B78BF4BF82FFDE /* Sources */, + 225D32E0496A3B11F5C3EAE33E05EFFF /* Frameworks */, ); buildRules = ( ); dependencies = ( + F6A1E8381BD393083AF5CFF950EF742C /* PBXTargetDependency */, + FF6D1DA3038787496875C32477E4F16A /* PBXTargetDependency */, + 7D90CEF790581405CDCA00336519107B /* PBXTargetDependency */, ); - name = FLAnimatedImage; - productName = FLAnimatedImage; - productReference = 1D39D4FEF51CE413AF46DED66D289AA7 /* libFLAnimatedImage.a */; + name = "Pods-BFRImageViewer"; + productName = "Pods-BFRImageViewer"; + productReference = 951D8A65055576FE800383C51BDECCF7 /* libPods-BFRImageViewer.a */; productType = "com.apple.product-type.library.static"; }; - 7DB59FA7AA91506D8FA0F3E3EF56F1C0 /* Pods-BFRImageViewer */ = { + 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */ = { isa = PBXNativeTarget; - buildConfigurationList = 767EEC60B658C73CADB4AE5DED404C98 /* Build configuration list for PBXNativeTarget "Pods-BFRImageViewer" */; + buildConfigurationList = 0EA4F995CBBF1300B4D566BFA7DD3B38 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */; buildPhases = ( - 907FCE957C82CD4F445626B7BC34F937 /* Sources */, - 5EB3279CA70C2EE3BD67E88E0D2E241D /* Frameworks */, + 7AE2B9876FC7B6898B64C81D3973EE56 /* Sources */, + 8E86703F96A4090BC5045C37B7C91BBB /* Frameworks */, + 7302CE7D9AE53174060E2127FEC17174 /* Headers */, ); buildRules = ( ); dependencies = ( - D6FF8EBC55DF894B73B76B4B12252C0B /* PBXTargetDependency */, - 5360009E6F4CA212E2B6954DE3A1DB51 /* PBXTargetDependency */, - B3A77EC437E3E7EAAC1A683D877E8AEC /* PBXTargetDependency */, - D46A1A4FEFF7F0087E10549ECA41D47B /* PBXTargetDependency */, ); - name = "Pods-BFRImageViewer"; - productName = "Pods-BFRImageViewer"; - productReference = 58387257DABB5ED468932C2A0C1FD2B1 /* libPods-BFRImageViewer.a */; + name = FLAnimatedImage; + productName = FLAnimatedImage; + productReference = F20EB2B220567413CD3B7D2D082D9458 /* libFLAnimatedImage.a */; productType = "com.apple.product-type.library.static"; }; C3BAF7A79AC3D9AD212C3F6B700AEC77 /* PINCache */ = { @@ -702,24 +635,7 @@ ); name = PINCache; productName = PINCache; - productReference = 8237040CE637A87641BDF1B865061C3F /* libPINCache.a */; - productType = "com.apple.product-type.library.static"; - }; - C791F0A928C1A8FE97074DFC9ACF4E75 /* DACircularProgress */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8BD5E582BE5D22462B3154D9B786288B /* Build configuration list for PBXNativeTarget "DACircularProgress" */; - buildPhases = ( - A4FD0994E6EDE999DC4DE4EF825BF82B /* Sources */, - 6AC5301020B6AD8027C2878CBBCC73EB /* Frameworks */, - A14A3D09D59B9E6CB79FA84BACA8CE18 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DACircularProgress; - productName = DACircularProgress; - productReference = D8764C9D9ABE0381B7100252680B7F69 /* libDACircularProgress.a */; + productReference = B9BD431F4A603ABB14BD66BA0A51FD46 /* libPINCache.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -728,8 +644,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -739,20 +655,27 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 350846657FE776AD0CF0DCA38D62B329 /* Products */; + productRefGroup = 7F777C335E064A911D8281E2D157E792 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - C791F0A928C1A8FE97074DFC9ACF4E75 /* DACircularProgress */, 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */, C3BAF7A79AC3D9AD212C3F6B700AEC77 /* PINCache */, 23F5B673D25F9E1F1ABB3F8AA0302A2C /* PINRemoteImage */, - 7DB59FA7AA91506D8FA0F3E3EF56F1C0 /* Pods-BFRImageViewer */, + 348A03069D4CE76E6A8379401766455F /* Pods-BFRImageViewer */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ + 477C1B3AB0A50743A6B78BF4BF82FFDE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CB611EB70BA8A8ED414CFA9C7EAC55E /* Pods-BFRImageViewer-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7861C609620B5EE0FB82D40034B079BE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -776,14 +699,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 907FCE957C82CD4F445626B7BC34F937 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0EC2C058313393FF48DBA73DF43EF3F5 /* Pods-BFRImageViewer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 912E7B4E1B1989E52B225349E675B14A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -815,24 +730,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A4FD0994E6EDE999DC4DE4EF825BF82B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A3A46156C9FCE04957F55EA1D35B8B36 /* DACircularProgress-dummy.m in Sources */, - EB74D07B265ECD35D7A58174C71226E2 /* DACircularProgressView.m in Sources */, - 54BD4B2920F5A63EC9B0B9B47DE1BB14 /* DALabeledCircularProgressView.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 5360009E6F4CA212E2B6954DE3A1DB51 /* PBXTargetDependency */ = { + 7D90CEF790581405CDCA00336519107B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */; - targetProxy = A7DA46F372781F41F9A351E050C46048 /* PBXContainerItemProxy */; + name = PINRemoteImage; + target = 23F5B673D25F9E1F1ABB3F8AA0302A2C /* PINRemoteImage */; + targetProxy = 3C84573ED6D5D71C36AEEADC34F56C48 /* PBXContainerItemProxy */; }; 95D21572C96C71D5E6D6A2E3A7168485 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -840,344 +745,329 @@ target = 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */; targetProxy = 70B1ABF786DE4A9DA7BFB8630A76B08C /* PBXContainerItemProxy */; }; - B3A77EC437E3E7EAAC1A683D877E8AEC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PINCache; - target = C3BAF7A79AC3D9AD212C3F6B700AEC77 /* PINCache */; - targetProxy = C7616F81E207D20DE6291BC34BD66CFC /* PBXContainerItemProxy */; - }; C31D140D907B9330DE8561F58F740BA8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = PINCache; target = C3BAF7A79AC3D9AD212C3F6B700AEC77 /* PINCache */; targetProxy = 9218F44CF623829E53E12B8130E772CF /* PBXContainerItemProxy */; }; - D46A1A4FEFF7F0087E10549ECA41D47B /* PBXTargetDependency */ = { + F6A1E8381BD393083AF5CFF950EF742C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PINRemoteImage; - target = 23F5B673D25F9E1F1ABB3F8AA0302A2C /* PINRemoteImage */; - targetProxy = 8548DE77804D1917C3E3D6CFB58555EC /* PBXContainerItemProxy */; + name = FLAnimatedImage; + target = 53F8571E2D572C4069860E38654A566A /* FLAnimatedImage */; + targetProxy = 9351D82F24EEAEE947D4E4C760F41EDF /* PBXContainerItemProxy */; }; - D6FF8EBC55DF894B73B76B4B12252C0B /* PBXTargetDependency */ = { + FF6D1DA3038787496875C32477E4F16A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DACircularProgress; - target = C791F0A928C1A8FE97074DFC9ACF4E75 /* DACircularProgress */; - targetProxy = 07A7255A2F8C949D77A28CC3B237C423 /* PBXContainerItemProxy */; + name = PINCache; + target = C3BAF7A79AC3D9AD212C3F6B700AEC77 /* PINCache */; + targetProxy = BC06A7610C4806E3D1ED70D750FAAAE5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { + 0E9C61315CEE1D716CDA2B31BB5951D9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6B7C16DC5CA28E08B4407706F6CBD367 /* Pods-BFRImageViewer.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1EE19F5DD95931924296F637BF18BD8F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; 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_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 21F216BD223FDDE8CF948D8CE6EEC930 /* Release */ = { + 26CB5D00732F171D3190F2E71708AA31 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 30DED4EB2FE46426F659CB946496F900 /* PINCache.xcconfig */; + baseConfigurationReference = BDEC0F1AF77A4CBEC4BC66ECA85314A7 /* PINRemoteImage.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - MTL_ENABLE_DEBUG_INFO = NO; + GCC_PREFIX_HEADER = "Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = PINRemoteImage; + PRODUCT_NAME = PINRemoteImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; - 2BCABD3CD097719AAEDF5AEFCBEB8080 /* Debug */ = { + 2D929763320F3D46BBAC2869B53292A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 30DED4EB2FE46426F659CB946496F900 /* PINCache.xcconfig */; + baseConfigurationReference = 7604CAC5EF1D98120CC6C7E793B4F232 /* PINCache.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 5.0; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - }; - name = Debug; - }; - 44CDBB6D11DE06DB64D6268622BDC47E /* 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; - CODE_SIGNING_REQUIRED = NO; - 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.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 4733FCAF8FD03882650648F0BDCB9BE2 /* Debug */ = { + A3E7A857F99FCF7BD840A135EF3D3C03 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 182B706E38C635452A4EF3E2B7318B42 /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 7604CAC5EF1D98120CC6C7E793B4F232 /* PINCache.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - MTL_ENABLE_DEBUG_INFO = YES; + GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 4D1954E2801E450DD6D6B7D65B3FF7C9 /* Debug */ = { + A85C24F2EDDFABB6CA8EDC3D9CE77496 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD448BABA9CF88D751524B540624A815 /* DACircularProgress.xcconfig */; + baseConfigurationReference = 4E616F2C9A436C7D1BD4317387BEE2C4 /* FLAnimatedImage.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DACircularProgress/DACircularProgress-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - MTL_ENABLE_DEBUG_INFO = YES; + GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = FLAnimatedImage; + PRODUCT_NAME = FLAnimatedImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - A6ED3EAE55957FA94E6D46FC88EB38AF /* Debug */ = { + B3F5D4D57166CFEE09FE415F5D65A4F4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3E79D4A0108A1439C899ABE224DD13F0 /* PINRemoteImage.xcconfig */; + baseConfigurationReference = BDEC0F1AF77A4CBEC4BC66ECA85314A7 /* PINRemoteImage.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = PINRemoteImage; + PRODUCT_NAME = PINRemoteImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - A76CC8449A38E58497455D5C631BAACD /* Debug */ = { + B87737122FA5A7F979C3034235D58EFE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B7C16DC5CA28E08B4407706F6CBD367 /* Pods-BFRImageViewer.debug.xcconfig */; + baseConfigurationReference = 005E0B06483BF6325933690AD3CF847F /* Pods-BFRImageViewer.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; 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; - }; - A873B752DFE33BE50517113D06E7C42C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AD448BABA9CF88D751524B540624A815 /* DACircularProgress.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/DACircularProgress/DACircularProgress-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; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; name = Release; }; - AED41EAFA33E6D5609F4E3F1AF1451A8 /* Release */ = { + C767674CF92A205AD2C23BF063A7959C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 182B706E38C635452A4EF3E2B7318B42 /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 4E616F2C9A436C7D1BD4317387BEE2C4 /* FLAnimatedImage.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 6.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; - }; - B65FFA828B4C97283048DD2DCD6D998C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3E79D4A0108A1439C899ABE224DD13F0 /* PINRemoteImage.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_MODULE_NAME = FLAnimatedImage; + PRODUCT_NAME = FLAnimatedImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; - E7F9A15D50A9048347611467781D9F8D /* Release */ = { + F4568DEE257655D290C2B9CEAB37C934 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 005E0B06483BF6325933690AD3CF847F /* Pods-BFRImageViewer.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - 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; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; @@ -1187,8 +1077,8 @@ 0EA4F995CBBF1300B4D566BFA7DD3B38 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4733FCAF8FD03882650648F0BDCB9BE2 /* Debug */, - AED41EAFA33E6D5609F4E3F1AF1451A8 /* Release */, + C767674CF92A205AD2C23BF063A7959C /* Debug */, + A85C24F2EDDFABB6CA8EDC3D9CE77496 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1196,8 +1086,8 @@ 184DFDA0FED7052762054F11DFBD709B /* Build configuration list for PBXNativeTarget "PINRemoteImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - A6ED3EAE55957FA94E6D46FC88EB38AF /* Debug */, - B65FFA828B4C97283048DD2DCD6D998C /* Release */, + 26CB5D00732F171D3190F2E71708AA31 /* Debug */, + B3F5D4D57166CFEE09FE415F5D65A4F4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1205,8 +1095,8 @@ 19D57BD91EB0575AA43C9A5D74849D84 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2BCABD3CD097719AAEDF5AEFCBEB8080 /* Debug */, - 21F216BD223FDDE8CF948D8CE6EEC930 /* Release */, + A3E7A857F99FCF7BD840A135EF3D3C03 /* Debug */, + 2D929763320F3D46BBAC2869B53292A9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1214,26 +1104,17 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 767EEC60B658C73CADB4AE5DED404C98 /* Build configuration list for PBXNativeTarget "Pods-BFRImageViewer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A76CC8449A38E58497455D5C631BAACD /* Debug */, - E7F9A15D50A9048347611467781D9F8D /* Release */, + 1EE19F5DD95931924296F637BF18BD8F /* Debug */, + F4568DEE257655D290C2B9CEAB37C934 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8BD5E582BE5D22462B3154D9B786288B /* Build configuration list for PBXNativeTarget "DACircularProgress" */ = { + E0573228D7E86908BCA62CE51054F9D7 /* Build configuration list for PBXNativeTarget "Pods-BFRImageViewer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4D1954E2801E450DD6D6B7D65B3FF7C9 /* Debug */, - A873B752DFE33BE50517113D06E7C42C /* Release */, + 0E9C61315CEE1D716CDA2B31BB5951D9 /* Debug */, + B87737122FA5A7F979C3034235D58EFE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-dummy.m b/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-dummy.m deleted file mode 100644 index 76cdc76..0000000 --- a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_DACircularProgress : NSObject -@end -@implementation PodsDummy_DACircularProgress -@end diff --git a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-prefix.pch b/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress.xcconfig deleted file mode 100644 index c0c78f4..0000000 --- a/BFRImageViewerDemo/Pods/Target Support Files/DACircularProgress/DACircularProgress.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/DACircularProgress -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DACircularProgress" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" -OTHER_LDFLAGS = -framework "QuartzCore" -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/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch b/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch index aa992a4..beb2a24 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch +++ b/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig index ceb6bed..ecc28ba 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig +++ b/BFRImageViewerDemo/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig @@ -1,9 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FLAnimatedImage +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FLAnimatedImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FLAnimatedImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" OTHER_LDFLAGS = -framework "CoreGraphics" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FLAnimatedImage PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache-prefix.pch b/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache-prefix.pch index 5e15de4..2b29dbc 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache-prefix.pch +++ b/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache-prefix.pch @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif #ifndef TARGET_OS_WATCH diff --git a/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache.xcconfig index 2c70e84..02f20d2 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache.xcconfig +++ b/BFRImageViewerDemo/Pods/Target Support Files/PINCache/PINCache.xcconfig @@ -1,9 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINCache +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PINCache GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PINCache" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PINCache" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PINCache" OTHER_LDFLAGS = -framework "Foundation" -weak_framework "UIKit" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINCache PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch b/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch index aa992a4..beb2a24 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch +++ b/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage.xcconfig index 296244a..c174e5e 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage.xcconfig +++ b/BFRImageViewerDemo/Pods/Target Support Files/PINRemoteImage/PINRemoteImage.xcconfig @@ -1,10 +1,11 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PINRemoteImage GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PINRemoteImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FLAnimatedImage" "$PODS_CONFIGURATION_BUILD_DIR/PINCache" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PINRemoteImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/PINCache" OTHER_LDFLAGS = -framework "Accelerate" -framework "ImageIO" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINRemoteImage PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.markdown b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.markdown index 3ff71b1..c339f6b 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.markdown +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.markdown @@ -1,32 +1,6 @@ # Acknowledgements This application makes use of the following third party libraries: -## DACircularProgress - -# License - -## MIT License - -Copyright (c) 2013 Daniel Amitay (http://danielamitay.com) - -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. - ## FLAnimatedImage The MIT License (MIT) diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.plist b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.plist index a5b30b6..49db439 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.plist +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-acknowledgements.plist @@ -12,38 +12,6 @@ Type PSGroupSpecifier - - FooterText - # License - -## MIT License - -Copyright (c) 2013 Daniel Amitay (http://danielamitay.com) - -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. - License - MIT - Title - DACircularProgress - Type - PSGroupSpecifier - FooterText The MIT License (MIT) diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-frameworks.sh b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-frameworks.sh index 893c16a..08e3eaa 100755 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-frameworks.sh +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-frameworks.sh @@ -1,11 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +40,9 @@ install_framework() source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,24 +71,65 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + 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} ${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" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -80,5 +138,9 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-resources.sh b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-resources.sh index 25e9d37..345301f 100755 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-resources.sh +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -8,7 +16,11 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() -case "${TARGETED_DEVICE_FAMILY}" in +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -18,6 +30,12 @@ case "${TARGETED_DEVICE_FAMILY}" in 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -38,29 +56,29 @@ EOM 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}" + 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}" || true 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} ${TARGET_DEVICE_ARGS}" + 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} ${TARGET_DEVICE_ARGS}" || true 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}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 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}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$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\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 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\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 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\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -68,7 +86,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac @@ -82,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +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) @@ -92,5 +110,9 @@ then 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}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + 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}" + else + 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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi fi diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.debug.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.debug.xcconfig index b1d45bb..32b2c8c 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.debug.xcconfig +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.debug.xcconfig @@ -1,9 +1,9 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DACircularProgress" "$PODS_CONFIGURATION_BUILD_DIR/FLAnimatedImage" "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/PINCache" -isystem "${PODS_ROOT}/Headers/Public/PINRemoteImage" -OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"FLAnimatedImage" -l"PINCache" -l"PINRemoteImage" -framework "Accelerate" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -weak_framework "UIKit" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/PINCache" "${PODS_CONFIGURATION_BUILD_DIR}/PINRemoteImage" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/PINCache" -isystem "${PODS_ROOT}/Headers/Public/PINRemoteImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"PINCache" -l"PINRemoteImage" -framework "Accelerate" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -weak_framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.release.xcconfig b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.release.xcconfig index b1d45bb..32b2c8c 100644 --- a/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.release.xcconfig +++ b/BFRImageViewerDemo/Pods/Target Support Files/Pods-BFRImageViewer/Pods-BFRImageViewer.release.xcconfig @@ -1,9 +1,9 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" -LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DACircularProgress" "$PODS_CONFIGURATION_BUILD_DIR/FLAnimatedImage" "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/PINCache" -isystem "${PODS_ROOT}/Headers/Public/PINRemoteImage" -OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"FLAnimatedImage" -l"PINCache" -l"PINRemoteImage" -framework "Accelerate" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -weak_framework "UIKit" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/PINCache" "${PODS_ROOT}/Headers/Public/PINRemoteImage" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/PINCache" "${PODS_CONFIGURATION_BUILD_DIR}/PINRemoteImage" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/PINCache" -isystem "${PODS_ROOT}/Headers/Public/PINRemoteImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"PINCache" -l"PINRemoteImage" -framework "Accelerate" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -weak_framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/readme.md b/readme.md index c26b82d..de5423b 100644 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ ### Summary The BFRImageViewer is a turnkey solution to present images within your iOS app 🎉! -If features swipe gestures to dismiss, automatic image scaling, zooming and panning, supports multiple images, image types, URL backloading, custom view controller transitions and plays nicely with 3D touch! We use it all over the place in [Buffer for iOS](https://itunes.apple.com/us/app/buffer-for-twitter-pinterest/id490474324?mt=8) :-). +It features swipe gestures to dismiss, automatic image scaling, zooming and panning, supports multiple images, image types, URL backloading, custom view controller transitions, built in parallax effect, live photos and plays nicely with 3D touch! We use it all over the place in [Buffer for iOS](https://itunes.apple.com/us/app/buffer-for-twitter-pinterest/id490474324?mt=8) :-). We've got code samples of each feature in the demo app, feel free to take a peek 👀. @@ -26,7 +26,7 @@ pod 'BFRImageViewer' ### Quickstart To get up and running quickly with BFRImageViewer, just initialize it - that's really about it! ```objc -//Image source can be an array containing a mix of PHAssets, NSURLs, URL strings, UIImage or BFRBackLoadedImageSource +//Image source can be an array containing a mix of PHAssets, NSURLs, URL strings, UIImage, PHLivePhoto or BFRBackLoadedImageSource BFRImageViewController *imageVC = [[BFRImageViewController alloc] initWithImageSource:@[image]]; ``` ```swift