diff --git a/Canvas.podspec b/Canvas.podspec index 29552c1..0bfd4e2 100644 --- a/Canvas.podspec +++ b/Canvas.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = "Canvas" - s.version = "0.1.1" + s.version = "0.1.2" s.summary = "Animate in Xcode without code" s.description = <<-DESC Simplify iOS Development with zero coding animations and Storyboard components DESC s.homepage = "http://canvaspod.io" s.license = { :type => 'MIT', :file => 'LICENSE' } - s.authors = { "Meng To" => "shadownessguy@gmail.com", "Jamz Tang" => "jamz@jamztang.com" } + s.authors = { "Meng To" => "shadownessguy@gmail.com", "James Tang" => "j@jamztang.com" } s.platform = :ios, '7.0' s.source = { :git => "https://github.com/CanvasPod/Canvas.git", :tag => s.version.to_s } s.source_files = 'CanvasLibrary/*.{h,m}' diff --git a/Canvas.xcworkspace/xcshareddata/Canvas.xccheckout b/Canvas.xcworkspace/xcshareddata/Canvas.xccheckout index 8b25593..d305dcd 100644 --- a/Canvas.xcworkspace/xcshareddata/Canvas.xccheckout +++ b/Canvas.xcworkspace/xcshareddata/Canvas.xccheckout @@ -5,34 +5,34 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - F226BCBD-BA2C-403E-B75D-FD1782F88615 + C4080DF8-38A8-4E71-AEA9-62C3F40024BE IDESourceControlProjectName Canvas IDESourceControlProjectOriginsDictionary - 3ECEE01E-6B90-437D-B16C-9130BB904A72 - https://github.com/MengTo/Canvas.git + 1C0DDB43-1D56-4CE6-9F56-77AB850CBA78 + https://github.com/CanvasPod/Canvas IDESourceControlProjectPath Canvas.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary - 3ECEE01E-6B90-437D-B16C-9130BB904A72 + 1C0DDB43-1D56-4CE6-9F56-77AB850CBA78 .. IDESourceControlProjectURL - https://github.com/MengTo/Canvas.git + https://github.com/CanvasPod/Canvas IDESourceControlProjectVersion 110 IDESourceControlProjectWCCIdentifier - 3ECEE01E-6B90-437D-B16C-9130BB904A72 + 1C0DDB43-1D56-4CE6-9F56-77AB850CBA78 IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - 3ECEE01E-6B90-437D-B16C-9130BB904A72 + 1C0DDB43-1D56-4CE6-9F56-77AB850CBA78 IDESourceControlWCCName Canvas diff --git a/Canvas/CSAnimationTableViewController.m b/Canvas/CSAnimationTableViewController.m index 0937a4a..db0124d 100644 --- a/Canvas/CSAnimationTableViewController.m +++ b/Canvas/CSAnimationTableViewController.m @@ -7,7 +7,7 @@ // #import "CSAnimationTableViewController.h" -#import "CSAnimationView.h" +#import "Canvas.h" @interface CSAnimationTableViewController () diff --git a/Canvas/CSComponentsViewController.m b/Canvas/CSComponentsViewController.m index 01c7d3a..7dfff01 100644 --- a/Canvas/CSComponentsViewController.m +++ b/Canvas/CSComponentsViewController.m @@ -7,7 +7,7 @@ // #import "CSComponentsViewController.h" -#import "CSAnimationView.h" +#import "Canvas.h" @interface CSComponentsViewController () diff --git a/Canvas/CSUsageViewController.m b/Canvas/CSUsageViewController.m index e331c33..64d4218 100644 --- a/Canvas/CSUsageViewController.m +++ b/Canvas/CSUsageViewController.m @@ -7,8 +7,8 @@ // #import "CSUsageViewController.h" -#import "CSAnimationView.h" #import "CanvasInfo.h" +#import "Canvas.h" @interface CSUsageViewController () diff --git a/Canvas/Canvas-Info.plist b/Canvas/Canvas-Info.plist index cab64ff..c98d722 100644 --- a/Canvas/Canvas-Info.plist +++ b/Canvas/Canvas-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.1 + 0.1.2 CFBundleSignature ???? CFBundleVersion - 2 + 3 LSRequiresIPhoneOS UIMainStoryboardFile diff --git a/CanvasLibrary/Canvas.h b/CanvasLibrary/Canvas.h new file mode 100644 index 0000000..76f0720 --- /dev/null +++ b/CanvasLibrary/Canvas.h @@ -0,0 +1,19 @@ +// +// Canvas.h +// Pods +// +// Created by James Tang on 27/7/14. +// +// + +#import +#import "CSAnimationView.h" +#import "CSAnimation.h" +#import "CSBlurView.h" +#import "CSNavigationController.h" +#import "UIButton+TCCustomFont.h" +#import "UILabel+TCCustomFont.h" +#import "UINavigationBar+TCCustomFont.h" +#import "UITextField+TCCustomFont.h" +#import "UITextView+TCCustomFont.h" +#import "UITextField+PlaceholderColor.h" \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock index f1f2ed6..8bc5d85 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,7 +1,7 @@ PODS: - - Canvas (0.1.1) - - DAKeyboardControl (2.3.0) - - URBMediaFocusViewController (0.5.2) + - Canvas (0.1.2) + - DAKeyboardControl (2.3.1) + - URBMediaFocusViewController (0.5.5) DEPENDENCIES: - Canvas (from `./Canvas.podspec`) @@ -13,8 +13,8 @@ EXTERNAL SOURCES: :path: ./Canvas.podspec SPEC CHECKSUMS: - Canvas: f1911025fc9ec9c7339df6e4399c90c87ce6b631 - DAKeyboardControl: 219d6e32b9343eb85151255c43b1f238d8f0bbf7 - URBMediaFocusViewController: 81ec528838679066fec33b486139d5f8f966bc07 + Canvas: 62305148f2d0e6980be9dfa59cc374faa5870f18 + DAKeyboardControl: b17935d41242e094f96ec22696405c620ffb088b + URBMediaFocusViewController: 4dff9de3767e60b96ba325c897d4ffa7131a122e -COCOAPODS: 0.32.1 +COCOAPODS: 0.33.1 diff --git a/Pods/BuildHeaders/Canvas/Canvas.h b/Pods/BuildHeaders/Canvas/Canvas.h new file mode 120000 index 0000000..232a158 --- /dev/null +++ b/Pods/BuildHeaders/Canvas/Canvas.h @@ -0,0 +1 @@ +../../../CanvasLibrary/Canvas.h \ No newline at end of file diff --git a/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.h b/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.h index bf946b6..bbc1ef5 100644 --- a/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.h +++ b/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.h @@ -8,7 +8,7 @@ #import -typedef void (^DAKeyboardDidMoveBlock)(CGRect keyboardFrameInView); +typedef void (^DAKeyboardDidMoveBlock)(CGRect keyboardFrameInView, BOOL opening, BOOL closing); /** DAKeyboardControl allows you to easily add keyboard awareness and scrolling dismissal (a receding keyboard ala iMessages app) to any UIView, UIScrollView @@ -26,31 +26,35 @@ typedef void (^DAKeyboardDidMoveBlock)(CGRect keyboardFrameInView); /** Adding pan-to-dismiss (functionality introduced in iMessages) @param didMoveBlock called everytime the keyboard is moved so you can update - the frames of your views + the frames of your views @see addKeyboardNonpanningWithActionHandler: @see removeKeyboardControl */ - (void)addKeyboardPanningWithActionHandler:(DAKeyboardDidMoveBlock)didMoveBlock; +- (void)addKeyboardPanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock; /** Adding keyboard awareness (appearance and disappearance only) @param didMoveBlock called everytime the keyboard is moved so you can update - the frames of your views + the frames of your views @see addKeyboardPanningWithActionHandler: @see removeKeyboardControl */ - (void)addKeyboardNonpanningWithActionHandler:(DAKeyboardDidMoveBlock)didMoveBlock; +- (void)addKeyboardNonpanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock; /** Remove the keyboard action handler @note You MUST call this method to remove the keyboard handler before the view - goes out of memory. + goes out of memory. */ - (void)removeKeyboardControl; /** Returns the keyboard frame in the view */ - (CGRect)keyboardFrameInView; +@property (nonatomic, readonly, getter = isKeyboardOpened) BOOL keyboardOpened; /** Convenience method to dismiss the keyboard */ - (void)hideKeyboard; @end - diff --git a/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.m b/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.m index 24cc650..ad1aa24 100644 --- a/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.m +++ b/Pods/DAKeyboardControl/DAKeyboardControl/DAKeyboardControl.m @@ -9,60 +9,93 @@ #import "DAKeyboardControl.h" #import + static inline UIViewAnimationOptions AnimationOptionsForCurve(UIViewAnimationCurve curve) { - return (curve << 16 | UIViewAnimationOptionBeginFromCurrentState); + return curve << 16; } static char UIViewKeyboardTriggerOffset; -static char UIViewKeyboardDidMoveBlock; +static char UIViewKeyboardDidMoveFrameBasedBlock; +static char UIViewKeyboardDidMoveConstraintBasedBlock; static char UIViewKeyboardActiveInput; static char UIViewKeyboardActiveView; static char UIViewKeyboardPanRecognizer; static char UIViewPreviousKeyboardRect; static char UIViewIsPanning; +static char UIViewKeyboardOpened; @interface UIView (DAKeyboardControl_Internal) -@property (nonatomic) DAKeyboardDidMoveBlock keyboardDidMoveBlock; -@property (nonatomic, weak) UIResponder *keyboardActiveInput; -@property (nonatomic, weak) UIView *keyboardActiveView; +@property (nonatomic) DAKeyboardDidMoveBlock frameBasedKeyboardDidMoveBlock; +@property (nonatomic) DAKeyboardDidMoveBlock constraintBasedKeyboardDidMoveBlock; +@property (nonatomic, strong) UIResponder *keyboardActiveInput; +@property (nonatomic, strong) UIView *keyboardActiveView; @property (nonatomic, strong) UIPanGestureRecognizer *keyboardPanRecognizer; @property (nonatomic) CGRect previousKeyboardRect; @property (nonatomic, getter = isPanning) BOOL panning; - +@property (nonatomic, getter = isKeyboardOpened) BOOL keyboardOpened; @end @implementation UIView (DAKeyboardControl) @dynamic keyboardTriggerOffset; ++ (void)load +{ + // Swizzle the 'addSubview:' method to ensure that all input fields + // have a valid inputAccessoryView upon addition to the view heirarchy + SEL originalSelector = @selector(addSubview:); + SEL swizzledSelector = @selector(swizzled_addSubview:); + Method originalMethod = class_getInstanceMethod(self, originalSelector); + Method swizzledMethod = class_getInstanceMethod(self, swizzledSelector); + class_addMethod(self, + originalSelector, + class_getMethodImplementation(self, originalSelector), + method_getTypeEncoding(originalMethod)); + class_addMethod(self, + swizzledSelector, + class_getMethodImplementation(self, swizzledSelector), + method_getTypeEncoding(swizzledMethod)); + method_exchangeImplementations(originalMethod, swizzledMethod); +} #pragma mark - Public Methods - (void)addKeyboardPanningWithActionHandler:(DAKeyboardDidMoveBlock)actionHandler { - [self addKeyboardControl:YES actionHandler:actionHandler]; + [self addKeyboardControl:YES frameBasedActionHandler:actionHandler constraintBasedActionHandler:0]; +} + +- (void)addKeyboardPanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock +{ + [self addKeyboardControl:YES frameBasedActionHandler:didMoveFrameBasesBlock constraintBasedActionHandler:didMoveConstraintBasesBlock]; } - (void)addKeyboardNonpanningWithActionHandler:(DAKeyboardDidMoveBlock)actionHandler { - [self addKeyboardControl:NO actionHandler:actionHandler]; + [self addKeyboardControl:NO frameBasedActionHandler:actionHandler constraintBasedActionHandler:0]; } -- (void)addKeyboardControl:(BOOL)panning actionHandler:(DAKeyboardDidMoveBlock)actionHandler +- (void)addKeyboardNonpanningWithFrameBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveFrameBasesBlock + constraintBasedActionHandler:(DAKeyboardDidMoveBlock)didMoveConstraintBasesBlock { + [self addKeyboardControl:NO frameBasedActionHandler:didMoveFrameBasesBlock constraintBasedActionHandler:didMoveConstraintBasesBlock]; +} + +- (void)addKeyboardControl:(BOOL)panning frameBasedActionHandler:(DAKeyboardDidMoveBlock)frameBasedActionHandler constraintBasedActionHandler:(DAKeyboardDidMoveBlock)constraintBasedActionHandler +{ +#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0) + if (panning && [self respondsToSelector:@selector(setKeyboardDismissMode:)]) { + [(UIScrollView *)self setKeyboardDismissMode:UIScrollViewKeyboardDismissModeInteractive]; + } else { + self.panning = panning; + } +#else self.panning = panning; - self.keyboardDidMoveBlock = actionHandler; +#endif + self.frameBasedKeyboardDidMoveBlock = frameBasedActionHandler; + self.constraintBasedKeyboardDidMoveBlock = constraintBasedActionHandler; - // Check to see if the keyboard is already active, and setup accordingly - self.keyboardActiveInput = [self findFirstResponder]; - if (self.keyboardActiveInput) { - self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; - if (self.keyboardActiveView && self.panning && !self.keyboardPanRecognizer) { - [self setupGestureRecognizer]; - } - } - // Register for text input notifications [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(responderDidBecomeActive:) @@ -83,13 +116,14 @@ - (void)addKeyboardControl:(BOOL)panning actionHandler:(DAKeyboardDidMoveBlock)a name:UIKeyboardDidShowNotification object:nil]; + // For the sake of 4.X compatibility [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(inputKeyboardWillChangeFrame:) - name:UIKeyboardWillChangeFrameNotification + name:@"UIKeyboardWillChangeFrameNotification" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(inputKeyboardDidChangeFrame) - name:UIKeyboardDidChangeFrameNotification + name:@"UIKeyboardDidChangeFrameNotification" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self @@ -104,15 +138,18 @@ - (void)addKeyboardControl:(BOOL)panning actionHandler:(DAKeyboardDidMoveBlock)a - (CGRect)keyboardFrameInView { - if (self.keyboardActiveView) { + if (self.keyboardActiveView) + { CGRect keyboardFrameInView = [self convertRect:self.keyboardActiveView.frame fromView:self.keyboardActiveView.window]; return keyboardFrameInView; - } else { - UIWindow *window = ([self isKindOfClass:[UIWindow class]] ? (UIWindow *)self : self.window); - CGRect keyboardFrameInView = (CGRect) { - .origin.y = window.screen.bounds.size.height - }; + } + else + { + CGRect keyboardFrameInView = CGRectMake(0.0f, + [[UIScreen mainScreen] bounds].size.height, + 0.0f, + 0.0f); return keyboardFrameInView; } } @@ -135,11 +172,12 @@ - (void)removeKeyboardControl name:UIKeyboardDidShowNotification object:nil]; + // For the sake of 4.X compatibility [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIKeyboardWillChangeFrameNotification + name:@"UIKeyboardWillChangeFrameNotification" object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIKeyboardDidChangeFrameNotification + name:@"UIKeyboardDidChangeFrameNotification" object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self @@ -153,7 +191,7 @@ - (void)removeKeyboardControl [self removeGestureRecognizer:self.keyboardPanRecognizer]; // Release a few properties - self.keyboardDidMoveBlock = nil; + self.frameBasedKeyboardDidMoveBlock = nil; self.keyboardActiveInput = nil; self.keyboardActiveView = nil; self.keyboardPanRecognizer = nil; @@ -161,23 +199,25 @@ - (void)removeKeyboardControl - (void)hideKeyboard { - if (self.keyboardActiveView) { + if (self.keyboardActiveView) + { self.keyboardActiveView.hidden = YES; self.keyboardActiveView.userInteractionEnabled = NO; [self.keyboardActiveInput resignFirstResponder]; } } - #pragma mark - Input Notifications - (void)responderDidBecomeActive:(NSNotification *)notification { // Grab the active input, it will be used to find the keyboard view later on self.keyboardActiveInput = notification.object; - if (!self.keyboardActiveInput.inputAccessoryView) { + if (!self.keyboardActiveInput.inputAccessoryView) + { UITextField *textField = (UITextField *)self.keyboardActiveInput; - if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) { + if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) + { UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero]; nullView.backgroundColor = [UIColor clearColor]; textField.inputAccessoryView = nullView; @@ -188,30 +228,47 @@ - (void)responderDidBecomeActive:(NSNotification *)notification } } - #pragma mark - Keyboard Notifications - (void)inputKeyboardWillShow:(NSNotification *)notification { - CGRect keyboardEndFrameWindow = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; - double keyboardTransitionDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - UIViewAnimationCurve keyboardTransitionAnimationCurve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; self.keyboardActiveView.hidden = NO; + self.keyboardOpened = YES; CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, YES, NO); + [UIView animateWithDuration:keyboardTransitionDuration delay:0.0f - options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState animations:^{ - if (self.keyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) { - self.keyboardDidMoveBlock(keyboardEndFrameView); - } + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, YES, NO); } completion:^(__unused BOOL finished){ - if (self.panning && !self.keyboardPanRecognizer) { - [self setupGestureRecognizer]; + if (self.panning && !self.keyboardPanRecognizer) + { + // Register for gesture recognizer calls + self.keyboardPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self + action:@selector(panGestureDidChange:)]; + [self.keyboardPanRecognizer setMinimumNumberOfTouches:1]; + [self.keyboardPanRecognizer setDelegate:self]; + [self.keyboardPanRecognizer setCancelsTouchesInView:NO]; + [self addGestureRecognizer:self.keyboardPanRecognizer]; } }]; } @@ -223,27 +280,41 @@ - (void)inputKeyboardDidShow self.keyboardActiveView.hidden = NO; // If the active keyboard view could not be found (UITextViews...), try again - if (!self.keyboardActiveView) { + if (!self.keyboardActiveView) + { // Find the first responder on subviews and look re-assign first responder to it - [self reAssignFirstResponder]; + self.keyboardActiveInput = [self recursiveFindFirstResponder:self]; + self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; + self.keyboardActiveView.hidden = NO; } } - (void)inputKeyboardWillChangeFrame:(NSNotification *)notification { - CGRect keyboardEndFrameWindow = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; - double keyboardTransitionDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - UIViewAnimationCurve keyboardTransitionAnimationCurve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + [UIView animateWithDuration:keyboardTransitionDuration delay:0.0f - options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState animations:^{ - if (self.keyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) { - self.keyboardDidMoveBlock(keyboardEndFrameView); - } + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); } completion:nil]; } @@ -255,19 +326,30 @@ - (void)inputKeyboardDidChangeFrame - (void)inputKeyboardWillHide:(NSNotification *)notification { - CGRect keyboardEndFrameWindow = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; - double keyboardTransitionDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - UIViewAnimationCurve keyboardTransitionAnimationCurve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; + CGRect keyboardEndFrameWindow; + [[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardEndFrameWindow]; + + double keyboardTransitionDuration; + [[notification.userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&keyboardTransitionDuration]; + + UIViewAnimationCurve keyboardTransitionAnimationCurve; + [[notification.userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&keyboardTransitionAnimationCurve]; CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:nil]; + BOOL constraintBasedKeyboardDidMoveBlockCalled = self.constraintBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView); + if (constraintBasedKeyboardDidMoveBlockCalled) + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, YES); + [UIView animateWithDuration:keyboardTransitionDuration delay:0.0f - options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) + options:AnimationOptionsForCurve(keyboardTransitionAnimationCurve) | UIViewAnimationOptionBeginFromCurrentState animations:^{ - if (self.keyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) { - self.keyboardDidMoveBlock(keyboardEndFrameView); - } + if (constraintBasedKeyboardDidMoveBlockCalled) + [self layoutIfNeeded]; + + if (self.frameBasedKeyboardDidMoveBlock && !CGRectIsNull(keyboardEndFrameView)) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, YES); } completion:^(__unused BOOL finished){ // Remove gesture recognizer when keyboard is not showing @@ -281,6 +363,8 @@ - (void)inputKeyboardDidHide self.keyboardActiveView.hidden = NO; self.keyboardActiveView.userInteractionEnabled = YES; self.keyboardActiveView = nil; + self.keyboardActiveInput = nil; + self.keyboardOpened = NO; } - (void)observeValueForKeyPath:(NSString *)keyPath @@ -288,47 +372,65 @@ - (void)observeValueForKeyPath:(NSString *)keyPath change:(__unused NSDictionary *)change context:(__unused void *)context { - if([keyPath isEqualToString:@"frame"] && object == self.keyboardActiveView) { + if([keyPath isEqualToString:@"frame"] && object == self.keyboardActiveView) + { CGRect keyboardEndFrameWindow = [[object valueForKeyPath:keyPath] CGRectValue]; CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:self.keyboardActiveView.window]; - if (CGRectEqualToRect(keyboardEndFrameView, self.previousKeyboardRect)) { - return; - } - if (self.keyboardDidMoveBlock && !self.keyboardActiveView.hidden && !CGRectIsNull(keyboardEndFrameView)) { - self.keyboardDidMoveBlock(keyboardEndFrameView); + + if (CGRectEqualToRect(keyboardEndFrameView, self.previousKeyboardRect)) return; + + if (!self.keyboardActiveView.hidden && !CGRectIsNull(keyboardEndFrameView)) + { + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + if (self.constraintBasedKeyboardDidMoveBlock) + { + self.constraintBasedKeyboardDidMoveBlock(keyboardEndFrameView, NO, NO); + [self layoutIfNeeded]; + } } + self.previousKeyboardRect = keyboardEndFrameView; } } - #pragma mark - Touches Management - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { - if (gestureRecognizer == self.keyboardPanRecognizer || otherGestureRecognizer == self.keyboardPanRecognizer) { + if (gestureRecognizer == self.keyboardPanRecognizer || otherGestureRecognizer == self.keyboardPanRecognizer) + { return YES; - } else { + } + else + { return NO; } } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { - if (gestureRecognizer == self.keyboardPanRecognizer) { + if (gestureRecognizer == self.keyboardPanRecognizer) + { // Don't allow panning if inside the active input (unless SELF is a UITextView and the receiving view) return (![touch.view isFirstResponder] || ([self isKindOfClass:[UITextView class]] && [self isEqual:touch.view])); - } else { + } + else + { return YES; } } - (void)panGestureDidChange:(UIPanGestureRecognizer *)gesture { - if(!self.keyboardActiveView || !self.keyboardActiveInput || self.keyboardActiveView.hidden) { - [self reAssignFirstResponder]; - return; - } else { + if(!self.keyboardActiveView || !self.keyboardActiveInput || self.keyboardActiveView.hidden) + { + self.keyboardActiveInput = [self recursiveFindFirstResponder:self]; + self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; + self.keyboardActiveView.hidden = NO; + } + else + { self.keyboardActiveView.hidden = NO; } @@ -337,19 +439,26 @@ - (void)panGestureDidChange:(UIPanGestureRecognizer *)gesture CGPoint touchLocationInKeyboardWindow = [gesture locationInView:self.keyboardActiveView.window]; // If touch is inside trigger offset, then disable keyboard input - if (touchLocationInKeyboardWindow.y > keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset) { + if (touchLocationInKeyboardWindow.y > keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset) + { self.keyboardActiveView.userInteractionEnabled = NO; - } else { + } + else + { self.keyboardActiveView.userInteractionEnabled = YES; } - switch (gesture.state) { - case UIGestureRecognizerStateBegan: { + switch (gesture.state) + { + case UIGestureRecognizerStateBegan: + { // For the duration of this gesture, do not recognize more touches than // it started with gesture.maximumNumberOfTouches = gesture.numberOfTouches; - } break; - case UIGestureRecognizerStateChanged: { + } + break; + case UIGestureRecognizerStateChanged: + { CGRect newKeyboardViewFrame = self.keyboardActiveView.frame; newKeyboardViewFrame.origin.y = touchLocationInKeyboardWindow.y + self.keyboardTriggerOffset; // Bound the keyboard to the bottom of the screen @@ -357,33 +466,35 @@ - (void)panGestureDidChange:(UIPanGestureRecognizer *)gesture newKeyboardViewFrame.origin.y = MAX(newKeyboardViewFrame.origin.y, keyboardWindowHeight - keyboardViewHeight); // Only update if the frame has actually changed - if (newKeyboardViewFrame.origin.y != self.keyboardActiveView.frame.origin.y) { + if (newKeyboardViewFrame.origin.y != self.keyboardActiveView.frame.origin.y) + { [UIView animateWithDuration:0.0f delay:0.0f options:UIViewAnimationOptionTransitionNone | UIViewAnimationOptionBeginFromCurrentState animations:^{ [self.keyboardActiveView setFrame:newKeyboardViewFrame]; /* Unnecessary now, due to KVO on self.keyboardActiveView - CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame - fromView:self.keyboardActiveView.window]; - if (self.keyboardDidMoveBlock) - self.keyboardDidMoveBlock(newKeyboardViewFrameInView); - */ + CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame + fromView:self.keyboardActiveView.window]; + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(newKeyboardViewFrameInView); + */ } completion:nil]; } - } break; + } + break; case UIGestureRecognizerStateEnded: - case UIGestureRecognizerStateCancelled: { + case UIGestureRecognizerStateCancelled: + { CGFloat thresholdHeight = keyboardWindowHeight - keyboardViewHeight - self.keyboardTriggerOffset + 44.0f; CGPoint velocity = [gesture velocityInView:self.keyboardActiveView]; BOOL shouldRecede; - if (touchLocationInKeyboardWindow.y < thresholdHeight || velocity.y < 0) { + if (touchLocationInKeyboardWindow.y < thresholdHeight || velocity.y < 0) shouldRecede = NO; - } else { + else shouldRecede = YES; - } // If the keyboard has only been pushed down 44 pixels or has been // panned upwards let it pop back up; otherwise, let it drop down @@ -396,96 +507,78 @@ - (void)panGestureDidChange:(UIPanGestureRecognizer *)gesture animations:^{ [self.keyboardActiveView setFrame:newKeyboardViewFrame]; /* Unnecessary now, due to KVO on self.keyboardActiveView - CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame - fromView:self.keyboardActiveView.window]; - if (self.keyboardDidMoveBlock) - self.keyboardDidMoveBlock(newKeyboardViewFrameInView); - */ + CGRect newKeyboardViewFrameInView = [self convertRect:newKeyboardViewFrame + fromView:self.keyboardActiveView.window]; + if (self.frameBasedKeyboardDidMoveBlock) + self.frameBasedKeyboardDidMoveBlock(newKeyboardViewFrameInView); + */ } completion:^(__unused BOOL finished){ [[self keyboardActiveView] setUserInteractionEnabled:!shouldRecede]; - if (shouldRecede) { + if (shouldRecede) + { [self hideKeyboard]; } }]; // Set the max number of touches back to the default gesture.maximumNumberOfTouches = NSUIntegerMax; - } break; - default: { - } break; + } + break; + default: + break; } } - #pragma mark - Internal Methods -- (void)reAssignFirstResponder +- (UIView *)recursiveFindFirstResponder:(UIView *)view { - // Find first responder - UIView *inputView = [self findFirstResponder]; - if (inputView != nil) { - // Re assign the focus - [inputView resignFirstResponder]; - [inputView becomeFirstResponder]; + if ([view isFirstResponder]) + { + return view; } -} - -- (UIView *)findFirstResponder -{ - if (self.isFirstResponder) { - return self; - } - for (UIView *subView in self.subviews) { - UIView *firstResponder = [subView findFirstResponder]; - if (firstResponder != nil) { - return firstResponder; + UIView *found = nil; + for (UIView *v in view.subviews) + { + found = [self recursiveFindFirstResponder:v]; + if (found) + { + break; } } - return nil; -} - -- (void)setupGestureRecognizer -{ - self.keyboardPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureDidChange:)]; - self.keyboardPanRecognizer.minimumNumberOfTouches = 1; - self.keyboardPanRecognizer.delegate = self; - self.keyboardPanRecognizer.cancelsTouchesInView = NO; - [self addGestureRecognizer:self.keyboardPanRecognizer]; + return found; } - -#pragma mark - UIView Method Overrides - -// Per Apple documentation: -// The default implementation of this method does nothing. -- (void)didAddSubview:(UIView *)subview +- (void)swizzled_addSubview:(UIView *)subview { - if ([subview isKindOfClass:[UITextView class]] || [subview isKindOfClass:[UITextField class]]) { - if (!subview.inputAccessoryView) { + if ([subview isKindOfClass:[UITextView class]] || [subview isKindOfClass:[UITextField class]]) + { + if (!subview.inputAccessoryView) + { UITextField *textField = (UITextField *)subview; - if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) { + if ([textField respondsToSelector:@selector(setInputAccessoryView:)]) + { UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero]; nullView.backgroundColor = [UIColor clearColor]; textField.inputAccessoryView = nullView; } } } + [self swizzled_addSubview:subview]; } - #pragma mark - Property Methods -- (CGRect)previousKeyboardRect -{ +-(CGRect)previousKeyboardRect { id previousRectValue = objc_getAssociatedObject(self, &UIViewPreviousKeyboardRect); - if (previousRectValue) { + if (previousRectValue) return [previousRectValue CGRectValue]; - } + return CGRectZero; } -- (void)setPreviousKeyboardRect:(CGRect)previousKeyboardRect { +-(void)setPreviousKeyboardRect:(CGRect)previousKeyboardRect { [self willChangeValueForKey:@"previousKeyboardRect"]; objc_setAssociatedObject(self, &UIViewPreviousKeyboardRect, @@ -494,24 +587,42 @@ - (void)setPreviousKeyboardRect:(CGRect)previousKeyboardRect { [self didChangeValueForKey:@"previousKeyboardRect"]; } -- (DAKeyboardDidMoveBlock)keyboardDidMoveBlock +- (DAKeyboardDidMoveBlock)frameBasedKeyboardDidMoveBlock +{ + return objc_getAssociatedObject(self, + &UIViewKeyboardDidMoveFrameBasedBlock); +} + +- (void)setFrameBasedKeyboardDidMoveBlock:(DAKeyboardDidMoveBlock)frameBasedKeyboardDidMoveBlock +{ + [self willChangeValueForKey:@"frameBasedKeyboardDidMoveBlock"]; + objc_setAssociatedObject(self, + &UIViewKeyboardDidMoveFrameBasedBlock, + frameBasedKeyboardDidMoveBlock, + OBJC_ASSOCIATION_COPY); + [self didChangeValueForKey:@"frameBasedKeyboardDidMoveBlock"]; +} + +- (DAKeyboardDidMoveBlock)constraintBasedKeyboardDidMoveBlock { - return objc_getAssociatedObject(self, &UIViewKeyboardDidMoveBlock); + return objc_getAssociatedObject(self, + &UIViewKeyboardDidMoveConstraintBasedBlock); } -- (void)setKeyboardDidMoveBlock:(DAKeyboardDidMoveBlock)keyboardDidMoveBlock +- (void)setConstraintBasedKeyboardDidMoveBlock:(DAKeyboardDidMoveBlock)constraintBasedKeyboardDidMoveBlock { - [self willChangeValueForKey:@"keyboardDidMoveBlock"]; + [self willChangeValueForKey:@"constraintBasedKeyboardDidMoveBlock"]; objc_setAssociatedObject(self, - &UIViewKeyboardDidMoveBlock, - keyboardDidMoveBlock, + &UIViewKeyboardDidMoveConstraintBasedBlock, + constraintBasedKeyboardDidMoveBlock, OBJC_ASSOCIATION_COPY); - [self didChangeValueForKey:@"keyboardDidMoveBlock"]; + [self didChangeValueForKey:@"constraintBasedKeyboardDidMoveBlock"]; } - (CGFloat)keyboardTriggerOffset { - NSNumber *keyboardTriggerOffsetNumber = objc_getAssociatedObject(self, &UIViewKeyboardTriggerOffset); + NSNumber *keyboardTriggerOffsetNumber = objc_getAssociatedObject(self, + &UIViewKeyboardTriggerOffset); return [keyboardTriggerOffsetNumber floatValue]; } @@ -527,7 +638,8 @@ - (void)setKeyboardTriggerOffset:(CGFloat)keyboardTriggerOffset - (BOOL)isPanning { - NSNumber *keyboardTriggerOffsetNumber = objc_getAssociatedObject(self, &UIViewIsPanning); + NSNumber *keyboardTriggerOffsetNumber = objc_getAssociatedObject(self, + &UIViewIsPanning); return [keyboardTriggerOffsetNumber boolValue]; } @@ -543,7 +655,8 @@ - (void)setPanning:(BOOL)panning - (UIResponder *)keyboardActiveInput { - return objc_getAssociatedObject(self, &UIViewKeyboardActiveInput); + return objc_getAssociatedObject(self, + &UIViewKeyboardActiveInput); } - (void)setKeyboardActiveInput:(UIResponder *)keyboardActiveInput @@ -552,20 +665,23 @@ - (void)setKeyboardActiveInput:(UIResponder *)keyboardActiveInput objc_setAssociatedObject(self, &UIViewKeyboardActiveInput, keyboardActiveInput, - OBJC_ASSOCIATION_ASSIGN); + OBJC_ASSOCIATION_RETAIN); [self didChangeValueForKey:@"keyboardActiveInput"]; } - (UIView *)keyboardActiveView { - return objc_getAssociatedObject(self, &UIViewKeyboardActiveView); + return objc_getAssociatedObject(self, + &UIViewKeyboardActiveView); } - (void)setKeyboardActiveView:(UIView *)keyboardActiveView { [self willChangeValueForKey:@"keyboardActiveView"]; - [self.keyboardActiveView removeObserver:self forKeyPath:@"frame"]; - if (keyboardActiveView) { + [self.keyboardActiveView removeObserver:self + forKeyPath:@"frame"]; + if (keyboardActiveView) + { [keyboardActiveView addObserver:self forKeyPath:@"frame" options:0 @@ -574,13 +690,14 @@ - (void)setKeyboardActiveView:(UIView *)keyboardActiveView objc_setAssociatedObject(self, &UIViewKeyboardActiveView, keyboardActiveView, - OBJC_ASSOCIATION_ASSIGN); + OBJC_ASSOCIATION_RETAIN); [self didChangeValueForKey:@"keyboardActiveView"]; } - (UIPanGestureRecognizer *)keyboardPanRecognizer { - return objc_getAssociatedObject(self, &UIViewKeyboardPanRecognizer); + return objc_getAssociatedObject(self, + &UIViewKeyboardPanRecognizer); } - (void)setKeyboardPanRecognizer:(UIPanGestureRecognizer *)keyboardPanRecognizer @@ -593,6 +710,22 @@ - (void)setKeyboardPanRecognizer:(UIPanGestureRecognizer *)keyboardPanRecognizer [self didChangeValueForKey:@"keyboardPanRecognizer"]; } +- (BOOL)isKeyboardOpened +{ + return [objc_getAssociatedObject(self, + &UIViewKeyboardOpened) boolValue]; +} + +- (void)setKeyboardOpened:(BOOL)keyboardOpened +{ + [self willChangeValueForKey:@"keyboardOpened"]; + objc_setAssociatedObject(self, + &UIViewKeyboardOpened, + @(keyboardOpened), + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self didChangeValueForKey:@"keyboardOpened"]; +} + - (BOOL)keyboardWillRecede { CGFloat keyboardViewHeight = self.keyboardActiveView.bounds.size.height; @@ -605,4 +738,4 @@ - (BOOL)keyboardWillRecede return touchLocationInKeyboardWindow.y >= thresholdHeight && velocity.y >= 0; } -@end +@end \ No newline at end of file diff --git a/Pods/Headers/Canvas/Canvas.h b/Pods/Headers/Canvas/Canvas.h new file mode 120000 index 0000000..232a158 --- /dev/null +++ b/Pods/Headers/Canvas/Canvas.h @@ -0,0 +1 @@ +../../../CanvasLibrary/Canvas.h \ No newline at end of file diff --git a/Pods/Local Podspecs/Canvas.podspec b/Pods/Local Podspecs/Canvas.podspec index 29552c1..0bfd4e2 100644 --- a/Pods/Local Podspecs/Canvas.podspec +++ b/Pods/Local Podspecs/Canvas.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = "Canvas" - s.version = "0.1.1" + s.version = "0.1.2" s.summary = "Animate in Xcode without code" s.description = <<-DESC Simplify iOS Development with zero coding animations and Storyboard components DESC s.homepage = "http://canvaspod.io" s.license = { :type => 'MIT', :file => 'LICENSE' } - s.authors = { "Meng To" => "shadownessguy@gmail.com", "Jamz Tang" => "jamz@jamztang.com" } + s.authors = { "Meng To" => "shadownessguy@gmail.com", "James Tang" => "j@jamztang.com" } s.platform = :ios, '7.0' s.source = { :git => "https://github.com/CanvasPod/Canvas.git", :tag => s.version.to_s } s.source_files = 'CanvasLibrary/*.{h,m}' diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index f1f2ed6..8bc5d85 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,7 +1,7 @@ PODS: - - Canvas (0.1.1) - - DAKeyboardControl (2.3.0) - - URBMediaFocusViewController (0.5.2) + - Canvas (0.1.2) + - DAKeyboardControl (2.3.1) + - URBMediaFocusViewController (0.5.5) DEPENDENCIES: - Canvas (from `./Canvas.podspec`) @@ -13,8 +13,8 @@ EXTERNAL SOURCES: :path: ./Canvas.podspec SPEC CHECKSUMS: - Canvas: f1911025fc9ec9c7339df6e4399c90c87ce6b631 - DAKeyboardControl: 219d6e32b9343eb85151255c43b1f238d8f0bbf7 - URBMediaFocusViewController: 81ec528838679066fec33b486139d5f8f966bc07 + Canvas: 62305148f2d0e6980be9dfa59cc374faa5870f18 + DAKeyboardControl: b17935d41242e094f96ec22696405c620ffb088b + URBMediaFocusViewController: 4dff9de3767e60b96ba325c897d4ffa7131a122e -COCOAPODS: 0.32.1 +COCOAPODS: 0.33.1 diff --git a/Pods/Pods-URBMediaFocusViewController.xcconfig b/Pods/Pods-URBMediaFocusViewController.xcconfig index 8693077..73b9ca2 100644 --- a/Pods/Pods-URBMediaFocusViewController.xcconfig +++ b/Pods/Pods-URBMediaFocusViewController.xcconfig @@ -1 +1 @@ -PODS_URBMEDIAFOCUSVIEWCONTROLLER_OTHER_LDFLAGS = -framework CoreGraphics -framework Foundation -framework UIKit \ No newline at end of file +PODS_URBMEDIAFOCUSVIEWCONTROLLER_OTHER_LDFLAGS = -framework AssetsLibrary -framework CoreGraphics -framework Foundation -framework QuartzCore -framework UIKit \ No newline at end of file diff --git a/Pods/Pods-environment.h b/Pods/Pods-environment.h index 7c1e811..a64f4d4 100644 --- a/Pods/Pods-environment.h +++ b/Pods/Pods-environment.h @@ -10,17 +10,17 @@ #define COCOAPODS_POD_AVAILABLE_Canvas #define COCOAPODS_VERSION_MAJOR_Canvas 0 #define COCOAPODS_VERSION_MINOR_Canvas 1 -#define COCOAPODS_VERSION_PATCH_Canvas 1 +#define COCOAPODS_VERSION_PATCH_Canvas 2 // DAKeyboardControl #define COCOAPODS_POD_AVAILABLE_DAKeyboardControl #define COCOAPODS_VERSION_MAJOR_DAKeyboardControl 2 #define COCOAPODS_VERSION_MINOR_DAKeyboardControl 3 -#define COCOAPODS_VERSION_PATCH_DAKeyboardControl 0 +#define COCOAPODS_VERSION_PATCH_DAKeyboardControl 1 // URBMediaFocusViewController #define COCOAPODS_POD_AVAILABLE_URBMediaFocusViewController #define COCOAPODS_VERSION_MAJOR_URBMediaFocusViewController 0 #define COCOAPODS_VERSION_MINOR_URBMediaFocusViewController 5 -#define COCOAPODS_VERSION_PATCH_URBMediaFocusViewController 2 +#define COCOAPODS_VERSION_PATCH_URBMediaFocusViewController 5 diff --git a/Pods/Pods.xcconfig b/Pods/Pods.xcconfig index 684f504..81153dd 100644 --- a/Pods/Pods.xcconfig +++ b/Pods/Pods.xcconfig @@ -1,5 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Canvas" "${PODS_ROOT}/Headers/DAKeyboardControl" "${PODS_ROOT}/Headers/URBMediaFocusViewController" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/Canvas" -isystem "${PODS_ROOT}/Headers/DAKeyboardControl" -isystem "${PODS_ROOT}/Headers/URBMediaFocusViewController" -OTHER_LDFLAGS = -ObjC -framework CoreGraphics -framework Foundation -framework UIKit +OTHER_LDFLAGS = -ObjC -framework AssetsLibrary -framework CoreGraphics -framework Foundation -framework QuartzCore -framework UIKit PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index e2fe9de..607cd5d 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -10,7 +10,29 @@ 46 objects - 01EC60F285E343AD878660F1 + 01F90D42AEF741AFAB38AC56 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UITextField+PlaceholderColor.m + path + CanvasLibrary/UITextField+PlaceholderColor.m + sourceTree + <group> + + 04B3B535341B4AB2A5E6A0AD + + fileRef + 4E981F67DABC44CBB3FB3D16 + isa + PBXBuildFile + + 05B4E811D1FE4C0EBE5B82B0 includeInIndex 1 @@ -18,57 +40,129 @@ PBXFileReference lastKnownFileType sourcecode.c.h + name + CSNavigationController.h path - URBMediaFocusViewController.h + CanvasLibrary/CSNavigationController.h sourceTree <group> - 021E7220043A42C182C6F85E + 0721040C5AC94A8A894ED49C + + baseConfigurationReference + 5EBD5C8651C742BF81212CE5 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) + COPY_PHASE_STRIP + YES + DSTROOT + /tmp/xcodeproj.dst + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_PRECOMPILE_PREFIX_HEADER + YES + GCC_PREFIX_HEADER + Pods-Canvas-prefix.pch + GCC_VERSION + com.apple.compilers.llvm.clang.1_0 + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + OTHER_CFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_CPLUSPLUSFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_LDFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + VALIDATE_PRODUCT + YES + + isa + XCBuildConfiguration + name + Release + + 086F39E078B04975A89D349D + + fileRef + A700EA361C9B47A8BE8888CF + isa + PBXBuildFile + + 08F8E602FBAE48228968DC6E includeInIndex 1 isa PBXFileReference lastKnownFileType - text.xcconfig + sourcecode.c.objc + name + CSAnimation.m path - Pods-Canvas.xcconfig + CanvasLibrary/CSAnimation.m sourceTree <group> - 030DF9D5FFB847A2B30BA553 + 09CD4B261F2D4B3180ECA05C + + fileRef + 61641D4F15064E6A88F79EA6 + isa + PBXBuildFile + + 0B279308C9914279A3D81921 includeInIndex 1 isa PBXFileReference lastKnownFileType - text + sourcecode.c.h name - Podfile + UILabel+TCCustomFont.h path - ../Podfile + CanvasLibrary/UILabel+TCCustomFont.h sourceTree - SOURCE_ROOT - xcLanguageSpecificationIdentifier - xcode.lang.ruby + <group> - 049711EEFBD8489FB52C3C96 + 0B7E16FAF458479AA0E0177A fileRef - 9145BAF6957C40E580DABB3A + A700EA361C9B47A8BE8888CF + isa + PBXBuildFile + + 0F7F59B998EA4702A6019D0E + + fileRef + C523FB2EA91B4C58AFA800FB isa PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - 08B435734FD24BDD9E6FA5F8 + 111343D38BF747F9BF0F7062 baseConfigurationReference - C4FC4575A9E440FFB6EBB7CB + A60AEBE7DE55489B94FD5273 buildSettings ALWAYS_SEARCH_USER_PATHS @@ -87,8 +181,6 @@ 0 GCC_PRECOMPILE_PREFIX_HEADER YES - GCC_PREFIX_HEADER - Pods-Canvas-prefix.pch GCC_PREPROCESSOR_DEFINITIONS DEBUG=1 @@ -118,7 +210,16 @@ name Debug - 0E959AEEBC34407096ABDF8E + 1175074F53694CEB8E9F57F5 + + isa + PBXTargetDependency + target + F74C8ACBB9C44A9CA015FACE + targetProxy + FB5E046E0CA944E988CEE842 + + 11F42C2B0727483097D9D251 buildSettings @@ -176,69 +277,100 @@ name Release - 121E2F9786A042838983ED62 + 126D87FBFECD4B569FDBC276 + includeInIndex + 1 isa PBXFileReference lastKnownFileType - wrapper.framework - name - UIKit.framework + sourcecode.c.h path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/UIKit.framework + URBMediaFocusViewController.h sourceTree - DEVELOPER_DIR - - 126B82D9CA6D48658425E3C9 - - buildActionMask - 2147483647 - files - - 727338144B3542D58BACD13A - 2E6C7592553D49F2A75301A5 - 7C6C0923765C4C3B9B206E29 - 1F7EE992D2EA4B90860190B9 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 + <group> - 130D9BCAA88D4F7AAE739406 + 13B0EC310011476AA8DEB130 - fileRef - 7256B9E55AA748D8BAE99C60 + baseConfigurationReference + A60AEBE7DE55489B94FD5273 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) + COPY_PHASE_STRIP + YES + DSTROOT + /tmp/xcodeproj.dst + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_PRECOMPILE_PREFIX_HEADER + YES + GCC_VERSION + com.apple.compilers.llvm.clang.1_0 + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + OTHER_CFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_CPLUSPLUSFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_LDFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + VALIDATE_PRODUCT + YES + isa - PBXBuildFile + XCBuildConfiguration + name + Release - 159CD62134EF4A94BB917833 + 1416B437916A474FB2C25194 + children + + 33A835A4C87E47549D6BA2E7 + isa - PBXFileReference - lastKnownFileType - wrapper.framework + PBXGroup name - CoreGraphics.framework - path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/CoreGraphics.framework + Development Pods sourceTree - DEVELOPER_DIR + <group> - 1AC84F878CBD47859D4DB05B + 19007D2E369947F298463CCD - explicitFileType - archive.ar includeInIndex - 0 + 1 isa PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UITextView+TCCustomFont.h path - libPods-Canvas.a + CanvasLibrary/UITextView+TCCustomFont.h sourceTree - BUILT_PRODUCTS_DIR + <group> - 1CAE224123FD4F1297F244D5 + 1CE832BF721E48C0B37EF362 includeInIndex 1 @@ -247,49 +379,64 @@ lastKnownFileType sourcecode.c.h name - CSBlurView.h + CSAnimation.h path - CanvasLibrary/CSBlurView.h + CanvasLibrary/CSAnimation.h sourceTree <group> - 1EC34194BD38437F8A8CA8B9 + 1E80E2C1AB034EAB9F250D4A - children + buildActionMask + 2147483647 + files - 99C6AB232E3142729B2A2F2E - 1AC84F878CBD47859D4DB05B - 9765239B0E264D9481B3CD46 - 59848B98CD3044C1AD814AFF + 0B7E16FAF458479AA0E0177A isa - PBXGroup - name - Products - sourceTree - <group> + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 - 1ED3BCFED76446D8B801ACD9 + 2047424CD48E43A8B5CC389F includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + text.script.sh path - Pods-DAKeyboardControl-prefix.pch + Pods-resources.sh sourceTree <group> - 1F7EE992D2EA4B90860190B9 + 21A87711AC2A4F6893A50EE4 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + UIKit.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/UIKit.framework + sourceTree + DEVELOPER_DIR + + 252F65698DE9413290D76D87 fileRef - 59848B98CD3044C1AD814AFF + 08F8E602FBAE48228968DC6E isa PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + - 21FB4DEDA00547378D42E2B4 + 28706067E3024853846FE4D2 includeInIndex 1 @@ -297,140 +444,38 @@ PBXFileReference lastKnownFileType sourcecode.c.objc - name - UINavigationBar+TCCustomFont.m path - CanvasLibrary/UINavigationBar+TCCustomFont.m + Pods-Canvas-dummy.m sourceTree <group> - 220D690BE7FD414A942F0644 + 29BCA201E33D49F5A6BD8B70 buildActionMask 2147483647 files - A5E41E564FE540A4B6187F35 + C35A4B9461ED43C3BA87529A isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 29F37B7FE1A343CCA8F66F98 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UITextField+PlaceholderColor.m - path - CanvasLibrary/UITextField+PlaceholderColor.m - sourceTree - <group> - - 2C1C9462ACA1487CA1841F80 - - fileRef - F1464A02FCA047F683447ABC - isa - PBXBuildFile - - 2D80F920C24C463CAA40D958 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Pods-Canvas-dummy.m - sourceTree - <group> - - 2E6C7592553D49F2A75301A5 - - fileRef - 1AC84F878CBD47859D4DB05B - isa - PBXBuildFile - - 2FAED19D7721426C97818004 - - buildActionMask - 2147483647 - files - - A0FCEA7E1FC04CF291ACDD1A - A783E20DF15E41FC8BAE9A9E - - isa - PBXSourcesBuildPhase + PBXFrameworksBuildPhase runOnlyForDeploymentPostprocessing 0 - 312808181AB14B6ABD511DE5 + 2A246955305C4611B3D264F8 children - E35DD76FE79E4CF995EFD1A9 - 699EBBB3FB5B415EAC76B0AD - A109E072D1444CCAA944C12E + D1AE02421E2E4C3E9F16D739 isa PBXGroup name - DAKeyboardControl - path - DAKeyboardControl - sourceTree - <group> - - 32E5871388F04C03AF35E518 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UITextField+PlaceholderColor.h - path - CanvasLibrary/UITextField+PlaceholderColor.h + Frameworks sourceTree <group> - 34B938E75ABC4953AAF1D018 - - containerPortal - 955F0C597ADE4BADAF498DDA - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - B7DA204D881F4499A71B8F73 - remoteInfo - Pods-DAKeyboardControl - - 3583AEFC75E743D5935AAD98 - - fileRef - 37DB9DF7E39F4E7CA8B42448 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - 37DB9DF7E39F4E7CA8B42448 + 2C940C9BC06D4C549F812D3C includeInIndex 1 @@ -445,119 +490,24 @@ sourceTree <group> - 382D8E5A95FB40B5B5F02D90 - - children - - D248EC2C422D4325A4E7CBB7 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 3DD7D4EA969C48DC933FF31F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - URBMediaFocusViewController.m - sourceTree - <group> - - 3E52F3BC46C548D6A5F94741 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Pods-environment.h - sourceTree - <group> - - 4043B9F9043D41B48827898F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - CSAnimationView.m - path - CanvasLibrary/CSAnimationView.m - sourceTree - <group> - - 42499C5D1751452094487AA4 - - isa - PBXTargetDependency - target - 9C09863D513B46E98FA5D518 - targetProxy - F8337B0F85004C3BB3FE1C27 - - 529A1CCA750045C39ED86E07 - - fileRef - FD7FCAD128334B4B868BE7B9 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - 556B3CD66CE749AD9CA18060 - - isa - PBXTargetDependency - target - B7DA204D881F4499A71B8F73 - targetProxy - 34B938E75ABC4953AAF1D018 - - 55D3040BB079456E8F37C8A8 + 2E467C1B849F4E69A43EC415 - buildConfigurationList - FAD68EF22EC24DD48879967B - buildPhases + buildConfigurations - 6E348E9C13AF40CDB4BDB208 - F1688B4020B545889C44E5FF - 220D690BE7FD414A942F0644 + 338FD0C84E2946E5B163D9A6 + 0721040C5AC94A8A894ED49C - buildRules - - dependencies - + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release isa - PBXNativeTarget - name - Pods-URBMediaFocusViewController - productName - Pods-URBMediaFocusViewController - productReference - 59848B98CD3044C1AD814AFF - productType - com.apple.product-type.library.static + XCConfigurationList - 56E7176216094600A059DD55 + 2F7BCC4771CF44B1B27B4768 baseConfigurationReference - E0F75A0B0A424F1786653CB5 + 951DFA941C1C42AAAFF261BA buildSettings ALWAYS_SEARCH_USER_PATHS @@ -607,37 +557,23 @@ name Debug - 59848B98CD3044C1AD814AFF + 329ABEB5023A478BBF241E7E - explicitFileType - archive.ar includeInIndex - 0 + 1 isa PBXFileReference + lastKnownFileType + text.xcconfig path - libPods-URBMediaFocusViewController.a + Pods-URBMediaFocusViewController.xcconfig sourceTree - BUILT_PRODUCTS_DIR - - 5AE7D5A2F4E845CDBD117592 - - fileRef - D71FF42BD3074EDD876765BA - isa - PBXBuildFile - - 5FCA89336CAC45A3A23F90B3 - - fileRef - 95606D33CA63430D8552D7DF - isa - PBXBuildFile + <group> - 632509AE40C246138C3A0624 + 338FD0C84E2946E5B163D9A6 baseConfigurationReference - D67E891FEDC743A19364C9F1 + 5EBD5C8651C742BF81212CE5 buildSettings ALWAYS_SEARCH_USER_PATHS @@ -656,6 +592,8 @@ 0 GCC_PRECOMPILE_PREFIX_HEADER YES + GCC_PREFIX_HEADER + Pods-Canvas-prefix.pch GCC_PREPROCESSOR_DEFINITIONS DEBUG=1 @@ -685,200 +623,73 @@ name Debug - 676F461460DB4612A0201CED - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.script.sh - path - Pods-resources.sh - sourceTree - <group> - - 68123F9FFD3C4A01954569DB - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Pods-URBMediaFocusViewController-dummy.m - sourceTree - <group> - - 682D724DBA684062BA86654A - - fileRef - 749D2A29AD184A0EB1F13206 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - 699EBBB3FB5B415EAC76B0AD + 33A835A4C87E47549D6BA2E7 - includeInIndex - 1 + children + + 1CE832BF721E48C0B37EF362 + 08F8E602FBAE48228968DC6E + E01D13003CF44C428E95AF8E + A773D7100E734E77A4AFB1B1 + 5C1D0B2ABCEF48F99B74A9CE + 2C940C9BC06D4C549F812D3C + 05B4E811D1FE4C0EBE5B82B0 + E5902278F9B74968B978A5B5 + 48472D2929D548D1A0AAD2E8 + 89A5C40A59584B1B8B5CE3AB + B668D5DD51C94C56B4969175 + 0B279308C9914279A3D81921 + 9735F377712E4450AE9F60D3 + F19366D970C74B259F6B8149 + E1BD1FF10E2448E795C84C3F + EF8F341E06A44739A54E963B + 01F90D42AEF741AFAB38AC56 + 5EA3346EA483438CA3A455C5 + E3B11476E349490286799659 + 19007D2E369947F298463CCD + BE006C9BF98F4FD5BAFA0807 + D305E530E4F547AFB549F1EB + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - DAKeyboardControl.m + Canvas path - DAKeyboardControl/DAKeyboardControl.m + .. sourceTree <group> - 6A80A72C03014C13B6720083 + 37C579458A0A42EAB5A57625 buildActionMask 2147483647 files - 049711EEFBD8489FB52C3C96 - 7985FA2911A44848A3B5A360 - 3583AEFC75E743D5935AAD98 - A802C81A86504472918AFEB6 - 8FE6B20B31F046629D886369 - 7BD96753ECB94855840DD5B8 - 529A1CCA750045C39ED86E07 - DC25E2FD94E9432F8C840CD8 - 80FC9EE79AC64E08A242E30A - D67EBBD9BB42412EB6E1A179 - 682D724DBA684062BA86654A + D26CB2D5CE6642D690391163 isa - PBXSourcesBuildPhase + PBXHeadersBuildPhase runOnlyForDeploymentPostprocessing 0 - 6E348E9C13AF40CDB4BDB208 + 3859C2D8A9244FB6B93549D4 buildActionMask 2147483647 files - F2AA3B33DD38482B96634125 - 94CF179FC54E484592354EF6 + 6AA43AFD19B946979DDFAA5B + 09CD4B261F2D4B3180ECA05C isa PBXSourcesBuildPhase runOnlyForDeploymentPostprocessing 0 - 6EAC3474408A49F8B9A5B788 + 3BA0349DBE3C4F05A21085AA - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods-URBMediaFocusViewController.xcconfig - sourceTree - <group> - - 71BBB1B1D6B94AEBA24F5005 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Pods-DAKeyboardControl-dummy.m - sourceTree - <group> - - 7256B9E55AA748D8BAE99C60 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - CSAnimation.h - path - CanvasLibrary/CSAnimation.h - sourceTree - <group> - - 727338144B3542D58BACD13A - - fileRef - 921017EFF93D46CD9028F3F2 - isa - PBXBuildFile - - 7322C6D5BC15426B92A37DDC - - isa - PBXTargetDependency - target - 55D3040BB079456E8F37C8A8 - targetProxy - F47C51DB8E734AE0BF5A26BE - - 749D2A29AD184A0EB1F13206 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - UITextView+TCCustomFont.m - path - CanvasLibrary/UITextView+TCCustomFont.m - sourceTree - <group> - - 762055733599478C8689D194 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Pods-acknowledgements.plist - sourceTree - <group> - - 787DEA4582C64A6E9819B561 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - UINavigationBar+TCCustomFont.h - path - CanvasLibrary/UINavigationBar+TCCustomFont.h - sourceTree - <group> - - 7985FA2911A44848A3B5A360 - - fileRef - 4043B9F9043D41B48827898F + fileRef + E3B11476E349490286799659 isa PBXBuildFile settings @@ -887,17 +698,10 @@ -fobjc-arc - 79DA26BA0E2440D28146F9BF - - fileRef - A65CD458D81D47D993A6667F - isa - PBXBuildFile - - 7BD96753ECB94855840DD5B8 + 3C62F56257C34A218425049C fileRef - C9AB5841E8C44435B7B0037B + 2C940C9BC06D4C549F812D3C isa PBXBuildFile settings @@ -906,17 +710,10 @@ -fobjc-arc - 7C6C0923765C4C3B9B206E29 - - fileRef - 9765239B0E264D9481B3CD46 - isa - PBXBuildFile - - 80F6D1AE3937435EBA7A293A + 3EB657A853514D1AB8A02428 baseConfigurationReference - C4FC4575A9E440FFB6EBB7CB + B87CDB26A6C242AE9F188052 buildSettings ALWAYS_SEARCH_USER_PATHS @@ -932,7 +729,7 @@ GCC_PRECOMPILE_PREFIX_HEADER YES GCC_PREFIX_HEADER - Pods-Canvas-prefix.pch + Pods-URBMediaFocusViewController-prefix.pch GCC_VERSION com.apple.compilers.llvm.clang.1_0 INSTALL_PATH @@ -967,79 +764,24 @@ name Release - 80FC9EE79AC64E08A242E30A - - fileRef - 29F37B7FE1A343CCA8F66F98 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - 8122831557CC49CBB06AFC39 - - fileRef - 121E2F9786A042838983ED62 - isa - PBXBuildFile - - 81DC31636C6E4ABE82F780ED + 45C32FF5951B418188AF6CDD - children + buildActionMask + 2147483647 + files - 021E7220043A42C182C6F85E - C4FC4575A9E440FFB6EBB7CB - 2D80F920C24C463CAA40D958 - 83C8AEF4FAC64E2E8769569A + E85F3C181717491EBB479744 + BEF0E0150CB34036AB3E5657 isa - PBXGroup - name - Support Files - sourceTree - SOURCE_ROOT - - 83C8AEF4FAC64E2E8769569A - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Pods-Canvas-prefix.pch - sourceTree - <group> - - 86409860D9C545EFAE42B7EE - - buildConfigurations - - 08B435734FD24BDD9E6FA5F8 - 80F6D1AE3937435EBA7A293A - - defaultConfigurationIsVisible + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 8A326AC1FFAE4310B2A94518 - - fileRef - E9CD3D65D3D34EE688302A6F - isa - PBXBuildFile - 8A75FD9647CF47E7AE534D6D + 461D0F3A34EB4430ABD35FFB baseConfigurationReference - D67E891FEDC743A19364C9F1 + 951DFA941C1C42AAAFF261BA buildSettings ALWAYS_SEARCH_USER_PATHS @@ -1054,6 +796,8 @@ gnu99 GCC_PRECOMPILE_PREFIX_HEADER YES + GCC_PREFIX_HEADER + Pods-DAKeyboardControl-prefix.pch GCC_VERSION com.apple.compilers.llvm.clang.1_0 INSTALL_PATH @@ -1088,49 +832,87 @@ name Release - 8E3D79D1605845D69E2F9541 + 48472D2929D548D1A0AAD2E8 - buildActionMask - 2147483647 - files - - 130D9BCAA88D4F7AAE739406 - 8A326AC1FFAE4310B2A94518 - C4D542246AE4465E86D1FBA2 - 79DA26BA0E2440D28146F9BF - 5AE7D5A2F4E845CDBD117592 - E3B2F7DD5D2D434EA5A7300D - D183582BAD3F4855BE666734 - A161E22E2529483296A25070 - 5FCA89336CAC45A3A23F90B3 - 2C1C9462ACA1487CA1841F80 - + includeInIndex + 1 isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + Canvas.h + path + CanvasLibrary/Canvas.h + sourceTree + <group> + + 4AFF42B4C6554465A0A7154C + + fileRef + 05B4E811D1FE4C0EBE5B82B0 + isa + PBXBuildFile - 8FE6B20B31F046629D886369 + 4BE9E54AE99A46C4B4539D28 fileRef - 2D80F920C24C463CAA40D958 + 126D87FBFECD4B569FDBC276 isa PBXBuildFile - 90E4A3C5CC6B413A9F9EA55F + 4E77853BEF78497382471356 includeInIndex 1 isa PBXFileReference lastKnownFileType - text + sourcecode.c.h path - Pods-acknowledgements.markdown + Pods-environment.h + sourceTree + <group> + + 4E981F67DABC44CBB3FB3D16 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + CoreGraphics.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/CoreGraphics.framework + sourceTree + DEVELOPER_DIR + + 53111D8B0F7548DF832A0D09 + + children + + 6C255C76639A42858D60B031 + EC13E25B69AD46E892ECB20B + C523FB2EA91B4C58AFA800FB + 8BD69F0D2747452AA3A39D57 + + isa + PBXGroup + name + Products sourceTree <group> - 9145BAF6957C40E580DABB3A + 55142DCA70A2465F90031352 + + isa + PBXTargetDependency + target + 94EAB72962B1457C8BF8729E + targetProxy + DB8F9531E620465E835871BE + + 558977B262424C6DADADB7CF includeInIndex 1 @@ -1139,189 +921,133 @@ lastKnownFileType sourcecode.c.objc name - CSAnimation.m + DAKeyboardControl.m path - CanvasLibrary/CSAnimation.m + DAKeyboardControl/DAKeyboardControl.m + sourceTree + <group> + + 589DDCD2F88B4EDA9495F2E9 + + children + + A60AEBE7DE55489B94FD5273 + F45910CA20B84220A0AFF74F + 817FA6AA9FF343D0B03D0595 + F79999166AD745AEBAD9F02D + 4E77853BEF78497382471356 + 2047424CD48E43A8B5CC389F + + isa + PBXGroup + name + Pods + sourceTree + <group> + + 5A8ECC9B0ADE445AA3C4F457 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-DAKeyboardControl-prefix.pch sourceTree <group> - 91AE972BB1E94211A5C8069B + 5BF842B1FE314CD29B192A9E fileRef - E35DD76FE79E4CF995EFD1A9 + A700EA361C9B47A8BE8888CF isa PBXBuildFile - 921017EFF93D46CD9028F3F2 + 5C1D0B2ABCEF48F99B74A9CE + includeInIndex + 1 isa PBXFileReference lastKnownFileType - wrapper.framework + sourcecode.c.h name - Foundation.framework + CSBlurView.h path - Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework + CanvasLibrary/CSBlurView.h sourceTree - DEVELOPER_DIR + <group> - 9405599B13AD4FB7BEBD7B86 + 5EA3346EA483438CA3A455C5 - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - NO - 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 - COPY_PHASE_STRIP - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - ONLY_ACTIVE_ARCH - YES - STRIP_INSTALLED_PRODUCT - NO - + includeInIndex + 1 isa - XCBuildConfiguration + PBXFileReference + lastKnownFileType + sourcecode.c.h name - Debug - - 94CF179FC54E484592354EF6 - - fileRef - 3DD7D4EA969C48DC933FF31F - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - + UITextField+TCCustomFont.h + path + CanvasLibrary/UITextField+TCCustomFont.h + sourceTree + <group> - 955F0C597ADE4BADAF498DDA + 5EBD5C8651C742BF81212CE5 - attributes - - LastUpgradeCheck - 0510 - - buildConfigurationList - A7DC1A63FB46475192B6A518 - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 + includeInIndex + 1 isa - PBXProject - knownRegions - - en - - mainGroup - 95846CB49F264CD3B44B5B19 - productRefGroup - 1EC34194BD38437F8A8CA8B9 - projectDirPath - - projectReferences - - projectRoot - - targets - - E51BD45139AB47B6A549D69A - 9C09863D513B46E98FA5D518 - B7DA204D881F4499A71B8F73 - 55D3040BB079456E8F37C8A8 - + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-Canvas-Private.xcconfig + sourceTree + <group> - 95606D33CA63430D8552D7DF + 61641D4F15064E6A88F79EA6 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - UITextField+TCCustomFont.h + sourcecode.c.objc path - CanvasLibrary/UITextField+TCCustomFont.h + Pods-DAKeyboardControl-dummy.m sourceTree <group> - 95846CB49F264CD3B44B5B19 + 66A6CFBA1E244F39A3049098 children - 030DF9D5FFB847A2B30BA553 - AE0FD911E5014CA8BC4347D7 - 382D8E5A95FB40B5B5F02D90 - C27E322DD1E54F20B8E8560B - 1EC34194BD38437F8A8CA8B9 - B4E629652E994121BC4CB37D + 75F1135DD3044BB7AF64312F + FBE005118B724FA79EAF560E isa PBXGroup + name + Pods sourceTree <group> - 9755DCCF9D204F3F8A5CC722 + 6AA43AFD19B946979DDFAA5B fileRef - 921017EFF93D46CD9028F3F2 + 558977B262424C6DADADB7CF isa PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc -DOS_OBJECT_USE_OBJC=0 + - 9765239B0E264D9481B3CD46 + 6C255C76639A42858D60B031 explicitFileType archive.ar @@ -1330,160 +1056,88 @@ isa PBXFileReference path - libPods-DAKeyboardControl.a + libPods.a sourceTree BUILT_PRODUCTS_DIR - 99C6AB232E3142729B2A2F2E + 6DA72DCB26DC4F04B517776C - explicitFileType - archive.ar includeInIndex - 0 + 1 isa PBXFileReference + lastKnownFileType + text + name + Podfile path - libPods.a + ../Podfile sourceTree - BUILT_PRODUCTS_DIR + SOURCE_ROOT + xcLanguageSpecificationIdentifier + xcode.lang.ruby - 9C09863D513B46E98FA5D518 + 6E1F46738EB747C98C3F67C8 - buildConfigurationList - 86409860D9C545EFAE42B7EE - buildPhases - - 6A80A72C03014C13B6720083 - D4F58FE370ED41FD87B40E78 - 8E3D79D1605845D69E2F9541 - - buildRules - - dependencies - isa - PBXNativeTarget + PBXFileReference + lastKnownFileType + wrapper.framework name - Pods-Canvas - productName - Pods-Canvas - productReference - 1AC84F878CBD47859D4DB05B - productType - com.apple.product-type.library.static + AssetsLibrary.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/AssetsLibrary.framework + sourceTree + DEVELOPER_DIR - A0FCEA7E1FC04CF291ACDD1A + 712D5277C8924BC999D576BC fileRef - 699EBBB3FB5B415EAC76B0AD + F79999166AD745AEBAD9F02D isa PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - A109E072D1444CCAA944C12E - - children - - EB9EE8360D7E464899589540 - E0F75A0B0A424F1786653CB5 - 71BBB1B1D6B94AEBA24F5005 - 1ED3BCFED76446D8B801ACD9 - - isa - PBXGroup - name - Support Files - sourceTree - SOURCE_ROOT - - A161E22E2529483296A25070 + 71E9E91B5E084361A3529718 fileRef - 32E5871388F04C03AF35E518 + EF8F341E06A44739A54E963B isa PBXBuildFile - A1E158B89A824C1A9FAA6109 + 75F1135DD3044BB7AF64312F children - 7256B9E55AA748D8BAE99C60 - 9145BAF6957C40E580DABB3A - E9CD3D65D3D34EE688302A6F - 4043B9F9043D41B48827898F - 1CAE224123FD4F1297F244D5 - 37DB9DF7E39F4E7CA8B42448 - A65CD458D81D47D993A6667F - FEB7F69CB65B49AF93A26335 - D71FF42BD3074EDD876765BA - C9AB5841E8C44435B7B0037B - B655DC23E50A460C9FB20535 - FD7FCAD128334B4B868BE7B9 - 787DEA4582C64A6E9819B561 - 21FB4DEDA00547378D42E2B4 - 32E5871388F04C03AF35E518 - 29F37B7FE1A343CCA8F66F98 - 95606D33CA63430D8552D7DF - F6729B3570C949F6BDD6E4BE - F1464A02FCA047F683447ABC - 749D2A29AD184A0EB1F13206 - 81DC31636C6E4ABE82F780ED + 925D6AAB8B6146CB8C2039A1 + 558977B262424C6DADADB7CF + 9CC67A8E551E47A0B349B29D isa PBXGroup name - Canvas + DAKeyboardControl path - .. + DAKeyboardControl sourceTree <group> - A1F6E1543E644B57B24591D7 - - children - - 6EAC3474408A49F8B9A5B788 - BE65267A12CE4479882C1EC5 - 68123F9FFD3C4A01954569DB - B1281B615AB14209BBF51365 - - isa - PBXGroup - name - Support Files - sourceTree - SOURCE_ROOT - - A5E41E564FE540A4B6187F35 - - fileRef - 01EC60F285E343AD878660F1 - isa - PBXBuildFile - - A65CD458D81D47D993A6667F + 785C11EC79964D5881D0E202 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h - name - CSNavigationController.h + sourcecode.c.objc path - CanvasLibrary/CSNavigationController.h + URBMediaFocusViewController.m sourceTree <group> - A756324DF72148108CC69B9C + 7891983031164B84A6A0A42E baseConfigurationReference - BE65267A12CE4479882C1EC5 + B87CDB26A6C242AE9F188052 buildSettings ALWAYS_SEARCH_USER_PATHS @@ -1491,31 +1145,32 @@ ARCHS $(ARCHS_STANDARD_INCLUDING_64_BIT) COPY_PHASE_STRIP - YES + NO DSTROOT /tmp/xcodeproj.dst GCC_C_LANGUAGE_STANDARD gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 GCC_PRECOMPILE_PREFIX_HEADER YES GCC_PREFIX_HEADER Pods-URBMediaFocusViewController-prefix.pch + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO GCC_VERSION com.apple.compilers.llvm.clang.1_0 INSTALL_PATH $(BUILT_PRODUCTS_DIR) IPHONEOS_DEPLOYMENT_TARGET 7.0 - OTHER_CFLAGS - - -DNS_BLOCK_ASSERTIONS=1 - $(inherited) - - OTHER_CPLUSPLUSFLAGS - - -DNS_BLOCK_ASSERTIONS=1 - $(inherited) - OTHER_LDFLAGS PRODUCT_NAME @@ -1526,111 +1181,92 @@ iphoneos SKIP_INSTALL YES - VALIDATE_PRODUCT - YES isa XCBuildConfiguration name - Release + Debug - A783E20DF15E41FC8BAE9A9E + 7FD977ADF4C84F4AA59D60F5 - fileRef - 71BBB1B1D6B94AEBA24F5005 + containerPortal + D346CCDDAC414AFE831C34C5 isa - PBXBuildFile + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + DFFE135AFC1349FEAE7F497F + remoteInfo + Pods-URBMediaFocusViewController - A7DC1A63FB46475192B6A518 + 817FA6AA9FF343D0B03D0595 - buildConfigurations - - 9405599B13AD4FB7BEBD7B86 - 0E959AEEBC34407096ABDF8E - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release + includeInIndex + 1 isa - XCConfigurationList + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-acknowledgements.plist + sourceTree + <group> - A802C81A86504472918AFEB6 + 858306AA278F4B859930DCD4 - fileRef - FEB7F69CB65B49AF93A26335 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - A863D91D09A24897940B932C - - fileRef - C7F83449A5304523A4CC6378 - isa - PBXBuildFile - - AE0FD911E5014CA8BC4347D7 - - children - - A1E158B89A824C1A9FAA6109 - + children + + 589DDCD2F88B4EDA9495F2E9 + isa PBXGroup name - Development Pods + Targets Support Files sourceTree <group> - AFFE41541930472A8A6F5FE4 + 89A5C40A59584B1B8B5CE3AB - children - - 01EC60F285E343AD878660F1 - 3DD7D4EA969C48DC933FF31F - A1F6E1543E644B57B24591D7 - + includeInIndex + 1 isa - PBXGroup + PBXFileReference + lastKnownFileType + sourcecode.c.h name - URBMediaFocusViewController + UIButton+TCCustomFont.h path - URBMediaFocusViewController + CanvasLibrary/UIButton+TCCustomFont.h sourceTree <group> - B1281B615AB14209BBF51365 + 8BD69F0D2747452AA3A39D57 + explicitFileType + archive.ar includeInIndex - 1 + 0 isa PBXFileReference - lastKnownFileType - sourcecode.c.h path - Pods-URBMediaFocusViewController-prefix.pch + libPods-URBMediaFocusViewController.a sourceTree - <group> + BUILT_PRODUCTS_DIR - B4E629652E994121BC4CB37D + 8BFE25D6EBEF4044837B6E6A - children - - BD8A14A8C9744FDB93FE26A8 - + fileRef + BE006C9BF98F4FD5BAFA0807 isa - PBXGroup - name - Targets Support Files - sourceTree - <group> + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + - B655DC23E50A460C9FB20535 + 925D6AAB8B6146CB8C2039A1 includeInIndex 1 @@ -1639,28 +1275,21 @@ lastKnownFileType sourcecode.c.h name - UILabel+TCCustomFont.h + DAKeyboardControl.h path - CanvasLibrary/UILabel+TCCustomFont.h + DAKeyboardControl/DAKeyboardControl.h sourceTree <group> - B733FB344A334A38AC364B45 - - fileRef - 921017EFF93D46CD9028F3F2 - isa - PBXBuildFile - - B7DA204D881F4499A71B8F73 + 94EAB72962B1457C8BF8729E buildConfigurationList - F41AE200D1B549609DB28DCB + 9B0366306CED4EE091FA69C2 buildPhases - 2FAED19D7721426C97818004 - EACCD6166BF2415190A84E3D - EA7D3F24B66445CB931B266D + 3859C2D8A9244FB6B93549D4 + 29BCA201E33D49F5A6BD8B70 + 37C579458A0A42EAB5A57625 buildRules @@ -1673,116 +1302,99 @@ productName Pods-DAKeyboardControl productReference - 9765239B0E264D9481B3CD46 + C523FB2EA91B4C58AFA800FB productType com.apple.product-type.library.static - BD8A14A8C9744FDB93FE26A8 + 951DFA941C1C42AAAFF261BA - children - - D67E891FEDC743A19364C9F1 - 90E4A3C5CC6B413A9F9EA55F - 762055733599478C8689D194 - C7F83449A5304523A4CC6378 - 3E52F3BC46C548D6A5F94741 - 676F461460DB4612A0201CED - + includeInIndex + 1 isa - PBXGroup - name - Pods + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-DAKeyboardControl-Private.xcconfig sourceTree <group> - BDBDC0F6FA5444C88A99360E + 95CD2650F9E244F5BC94EE2F - baseConfigurationReference - BE65267A12CE4479882C1EC5 - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - ARCHS - $(ARCHS_STANDARD_INCLUDING_64_BIT) - COPY_PHASE_STRIP - NO - DSTROOT - /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - Pods-URBMediaFocusViewController-prefix.pch - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 - INSTALL_PATH - $(BUILT_PRODUCTS_DIR) - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - OTHER_LDFLAGS - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - + fileRef + 48472D2929D548D1A0AAD2E8 isa - XCBuildConfiguration - name - Debug + PBXBuildFile - BE65267A12CE4479882C1EC5 + 9735F377712E4450AE9F60D3 includeInIndex 1 isa PBXFileReference lastKnownFileType - text.xcconfig + sourcecode.c.objc + name + UILabel+TCCustomFont.m path - Pods-URBMediaFocusViewController-Private.xcconfig + CanvasLibrary/UILabel+TCCustomFont.m sourceTree <group> - C27E322DD1E54F20B8E8560B + 9780CD0624F24263B401EE7D + + buildActionMask + 2147483647 + files + + 086F39E078B04975A89D349D + EC6AA49310BD4ACAA6A68D00 + 0F7F59B998EA4702A6019D0E + B7E4C9D34E1146AB8D758020 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 9B0366306CED4EE091FA69C2 + + buildConfigurations + + 2F7BCC4771CF44B1B27B4768 + 461D0F3A34EB4430ABD35FFB + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 9CC67A8E551E47A0B349B29D children - 312808181AB14B6ABD511DE5 - AFFE41541930472A8A6F5FE4 + A4D297252DD64EA59E0ADF66 + 951DFA941C1C42AAAFF261BA + 61641D4F15064E6A88F79EA6 + 5A8ECC9B0ADE445AA3C4F457 isa PBXGroup name - Pods + Support Files sourceTree - <group> + SOURCE_ROOT - C4D542246AE4465E86D1FBA2 + A131DBE933F34898AD61FFD6 fileRef - 1CAE224123FD4F1297F244D5 + E941CAE822324AA988E78D07 isa PBXBuildFile - C4FC4575A9E440FFB6EBB7CB + A4D297252DD64EA59E0ADF66 includeInIndex 1 @@ -1791,24 +1403,37 @@ lastKnownFileType text.xcconfig path - Pods-Canvas-Private.xcconfig + Pods-DAKeyboardControl.xcconfig sourceTree <group> - C7F83449A5304523A4CC6378 + A60AEBE7DE55489B94FD5273 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + text.xcconfig path - Pods-dummy.m + Pods.xcconfig sourceTree <group> - C9AB5841E8C44435B7B0037B + A700EA361C9B47A8BE8888CF + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework + sourceTree + DEVELOPER_DIR + + A773D7100E734E77A4AFB1B1 includeInIndex 1 @@ -1817,79 +1442,32 @@ lastKnownFileType sourcecode.c.objc name - UIButton+TCCustomFont.m + CSAnimationView.m path - CanvasLibrary/UIButton+TCCustomFont.m + CanvasLibrary/CSAnimationView.m sourceTree <group> - D183582BAD3F4855BE666734 - - fileRef - 787DEA4582C64A6E9819B561 - isa - PBXBuildFile - - D1DA1D779D104511A080F7C2 + A7777572EA534C158A181A7B - baseConfigurationReference - E0F75A0B0A424F1786653CB5 - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - ARCHS - $(ARCHS_STANDARD_INCLUDING_64_BIT) - COPY_PHASE_STRIP - YES - DSTROOT - /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - Pods-DAKeyboardControl-prefix.pch - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 - INSTALL_PATH - $(BUILT_PRODUCTS_DIR) - IPHONEOS_DEPLOYMENT_TARGET - 7.0 - OTHER_CFLAGS - - -DNS_BLOCK_ASSERTIONS=1 - $(inherited) - - OTHER_CPLUSPLUSFLAGS - - -DNS_BLOCK_ASSERTIONS=1 - $(inherited) - - OTHER_LDFLAGS - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - VALIDATE_PRODUCT - YES - - isa - XCBuildConfiguration - name + buildConfigurations + + D5BF8D35A198418E97521199 + 11F42C2B0727483097D9D251 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName Release + isa + XCConfigurationList - D1E0DBDE3026454EB758528A + A9928CF56ECB440695DC828F buildConfigurations - 632509AE40C246138C3A0624 - 8A75FD9647CF47E7AE534D6D + 7891983031164B84A6A0A42E + 3EB657A853514D1AB8A02428 defaultConfigurationIsVisible 0 @@ -1898,85 +1476,548 @@ isa XCConfigurationList - D248EC2C422D4325A4E7CBB7 + A9A5DF0469414B93ACE5C80C + + fileRef + 6E1F46738EB747C98C3F67C8 + isa + PBXBuildFile + + B02B9F30B59A45C1AA09235E children - 159CD62134EF4A94BB917833 - 921017EFF93D46CD9028F3F2 - 121E2F9786A042838983ED62 + 329ABEB5023A478BBF241E7E + B87CDB26A6C242AE9F188052 + B719B01C61F14C3D818AE07D + CC93B549285642BC8DA02217 isa PBXGroup name - iOS + Support Files sourceTree - <group> + SOURCE_ROOT - D4F58FE370ED41FD87B40E78 + B1C58CCB666440658D7008CA - buildActionMask - 2147483647 - files + children - EE2C114095A740B6A99C95D9 + 6DA72DCB26DC4F04B517776C + 1416B437916A474FB2C25194 + 2A246955305C4611B3D264F8 + 66A6CFBA1E244F39A3049098 + 53111D8B0F7548DF832A0D09 + 858306AA278F4B859930DCD4 + + isa + PBXGroup + sourceTree + <group> + + B30C139A2F574405A7F39E3F + + fileRef + 5EA3346EA483438CA3A455C5 + isa + PBXBuildFile + + B45F1AC69F644E54B21DDFB7 + + fileRef + 0B279308C9914279A3D81921 + isa + PBXBuildFile + + B4BDA2D7D445494BB3FE3095 + + buildActionMask + 2147483647 + files + + 252F65698DE9413290D76D87 + D2019DF25BCA44D18179FD81 + 3C62F56257C34A218425049C + CC7DCAEE9D3A4F57BBBA90F9 + FE3060CE1A2D474E9249D945 + E27F09D485874C0CAB91A274 + DE978D1651364615B4DCA276 + F8B2FA2F452246A99858BEE3 + D7BBB0817C364AACA259820A + 3BA0349DBE3C4F05A21085AA + 8BFE25D6EBEF4044837B6E6A + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + B668D5DD51C94C56B4969175 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIButton+TCCustomFont.m + path + CanvasLibrary/UIButton+TCCustomFont.m + sourceTree + <group> + + B719B01C61F14C3D818AE07D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-URBMediaFocusViewController-dummy.m + sourceTree + <group> + + B7E4C9D34E1146AB8D758020 + + fileRef + 8BD69F0D2747452AA3A39D57 + isa + PBXBuildFile + + B87CDB26A6C242AE9F188052 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-URBMediaFocusViewController-Private.xcconfig + sourceTree + <group> + + B972404E33484E7B98DF13F8 + + buildActionMask + 2147483647 + files + + 4BE9E54AE99A46C4B4539D28 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + BAB3DCBCFA564145A7994BF7 + + fileRef + 21A87711AC2A4F6893A50EE4 + isa + PBXBuildFile + + BE006C9BF98F4FD5BAFA0807 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UITextView+TCCustomFont.m + path + CanvasLibrary/UITextView+TCCustomFont.m + sourceTree + <group> + + BEF0E0150CB34036AB3E5657 + + fileRef + 785C11EC79964D5881D0E202 + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + C111F037A35B4580B31CEBA9 + + fileRef + 5C1D0B2ABCEF48F99B74A9CE + isa + PBXBuildFile + + C35A4B9461ED43C3BA87529A + + fileRef + A700EA361C9B47A8BE8888CF + isa + PBXBuildFile + + C523FB2EA91B4C58AFA800FB + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods-DAKeyboardControl.a + sourceTree + BUILT_PRODUCTS_DIR + + C962B4DB70CA467ABF2EB8C2 + + fileRef + 1CE832BF721E48C0B37EF362 + isa + PBXBuildFile + + C96F7223A9EC43D286078356 + + buildActionMask + 2147483647 + files + + 712D5277C8924BC999D576BC + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + CC7DCAEE9D3A4F57BBBA90F9 + + fileRef + E5902278F9B74968B978A5B5 + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + CC93B549285642BC8DA02217 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-URBMediaFocusViewController-prefix.pch + sourceTree + <group> + + CE476CB2F5354C918F8F2724 + + fileRef + 19007D2E369947F298463CCD + isa + PBXBuildFile + + CEC9BEF948014AE0A6C81B46 + + buildActionMask + 2147483647 + files + + A9A5DF0469414B93ACE5C80C + 04B3B535341B4AB2A5E6A0AD + 5BF842B1FE314CD29B192A9E + A131DBE933F34898AD61FFD6 + BAB3DCBCFA564145A7994BF7 isa PBXFrameworksBuildPhase runOnlyForDeploymentPostprocessing 0 - D6060F49BB1B466AB6783F0C + D1AE02421E2E4C3E9F16D739 + + children + + 6E1F46738EB747C98C3F67C8 + 4E981F67DABC44CBB3FB3D16 + A700EA361C9B47A8BE8888CF + E941CAE822324AA988E78D07 + 21A87711AC2A4F6893A50EE4 + + isa + PBXGroup + name + iOS + sourceTree + <group> + + D2019DF25BCA44D18179FD81 + + fileRef + A773D7100E734E77A4AFB1B1 + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + D26CB2D5CE6642D690391163 + + fileRef + 925D6AAB8B6146CB8C2039A1 + isa + PBXBuildFile + + D305E530E4F547AFB549F1EB + + children + + F28D917F371E49DC9F33208B + 5EBD5C8651C742BF81212CE5 + 28706067E3024853846FE4D2 + E89CFDA9DEB2404181D041C1 + + isa + PBXGroup + name + Support Files + sourceTree + SOURCE_ROOT + + D346CCDDAC414AFE831C34C5 + + attributes + + LastUpgradeCheck + 0510 + + buildConfigurationList + A7777572EA534C158A181A7B + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + B1C58CCB666440658D7008CA + productRefGroup + 53111D8B0F7548DF832A0D09 + projectDirPath + + projectReferences + + projectRoot + + targets + + F75A9595992D4FE9B806BE35 + F74C8ACBB9C44A9CA015FACE + 94EAB72962B1457C8BF8729E + DFFE135AFC1349FEAE7F497F + + + D37760EEBCCB4779A3AD4A88 + + buildConfigurations + + 111343D38BF747F9BF0F7062 + 13B0EC310011476AA8DEB130 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + D5BF8D35A198418E97521199 + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + NO + 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 + COPY_PHASE_STRIP + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 7.0 + ONLY_ACTIVE_ARCH + YES + STRIP_INSTALLED_PRODUCT + NO + + isa + XCBuildConfiguration + name + Debug + + D7BBB0817C364AACA259820A fileRef - 159CD62134EF4A94BB917833 + 01F90D42AEF741AFAB38AC56 isa PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + DB8F9531E620465E835871BE + + containerPortal + D346CCDDAC414AFE831C34C5 + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 94EAB72962B1457C8BF8729E + remoteInfo + Pods-DAKeyboardControl + + DE978D1651364615B4DCA276 + + fileRef + 9735F377712E4450AE9F60D3 + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + DFFE135AFC1349FEAE7F497F + + buildConfigurationList + A9928CF56ECB440695DC828F + buildPhases + + 45C32FF5951B418188AF6CDD + CEC9BEF948014AE0A6C81B46 + B972404E33484E7B98DF13F8 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Pods-URBMediaFocusViewController + productName + Pods-URBMediaFocusViewController + productReference + 8BD69F0D2747452AA3A39D57 + productType + com.apple.product-type.library.static - D67E891FEDC743A19364C9F1 + E01D13003CF44C428E95AF8E includeInIndex 1 isa PBXFileReference lastKnownFileType - text.xcconfig + sourcecode.c.h + name + CSAnimationView.h path - Pods.xcconfig + CanvasLibrary/CSAnimationView.h sourceTree <group> - D67EBBD9BB42412EB6E1A179 - - fileRef - F6729B3570C949F6BDD6E4BE - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc - - - D71FF42BD3074EDD876765BA + E1BD1FF10E2448E795C84C3F includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - UIButton+TCCustomFont.h + UINavigationBar+TCCustomFont.m path - CanvasLibrary/UIButton+TCCustomFont.h + CanvasLibrary/UINavigationBar+TCCustomFont.m sourceTree <group> - DC25E2FD94E9432F8C840CD8 + E1D0A9C3A9D64A99843DBF1A + + fileRef + E01D13003CF44C428E95AF8E + isa + PBXBuildFile + + E27F09D485874C0CAB91A274 fileRef - 21FB4DEDA00547378D42E2B4 + B668D5DD51C94C56B4969175 isa PBXBuildFile settings @@ -1985,83 +2026,74 @@ -fobjc-arc - E0F75A0B0A424F1786653CB5 + E3B11476E349490286799659 includeInIndex 1 isa PBXFileReference lastKnownFileType - text.xcconfig + sourcecode.c.objc + name + UITextField+TCCustomFont.m path - Pods-DAKeyboardControl-Private.xcconfig + CanvasLibrary/UITextField+TCCustomFont.m sourceTree <group> - E35DD76FE79E4CF995EFD1A9 + E5902278F9B74968B978A5B5 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + sourcecode.c.objc name - DAKeyboardControl.h + CSNavigationController.m path - DAKeyboardControl/DAKeyboardControl.h + CanvasLibrary/CSNavigationController.m sourceTree <group> - E3B2F7DD5D2D434EA5A7300D + E841C4C102644ECF84D17E7F fileRef - B655DC23E50A460C9FB20535 + F19366D970C74B259F6B8149 isa PBXBuildFile - E51BD45139AB47B6A549D69A - - buildConfigurationList - D1E0DBDE3026454EB758528A - buildPhases - - E9BC79E1903A48E09E6C6C7C - 126B82D9CA6D48658425E3C9 - - buildRules - - dependencies - - 42499C5D1751452094487AA4 - 556B3CD66CE749AD9CA18060 - 7322C6D5BC15426B92A37DDC - - isa - PBXNativeTarget - name - Pods - productName - Pods - productReference - 99C6AB232E3142729B2A2F2E - productType - com.apple.product-type.library.static - - E9BC79E1903A48E09E6C6C7C + E85F35341E07448D8EBA657D buildActionMask 2147483647 files - A863D91D09A24897940B932C + C962B4DB70CA467ABF2EB8C2 + E1D0A9C3A9D64A99843DBF1A + C111F037A35B4580B31CEBA9 + 4AFF42B4C6554465A0A7154C + 95CD2650F9E244F5BC94EE2F + E8A86140A7194DD9B7DDD8D5 + B45F1AC69F644E54B21DDFB7 + E841C4C102644ECF84D17E7F + 71E9E91B5E084361A3529718 + B30C139A2F574405A7F39E3F + CE476CB2F5354C918F8F2724 isa - PBXSourcesBuildPhase + PBXHeadersBuildPhase runOnlyForDeploymentPostprocessing 0 - E9CD3D65D3D34EE688302A6F + E85F3C181717491EBB479744 + + fileRef + B719B01C61F14C3D818AE07D + isa + PBXBuildFile + + E89CFDA9DEB2404181D041C1 includeInIndex 1 @@ -2069,60 +2101,52 @@ PBXFileReference lastKnownFileType sourcecode.c.h - name - CSAnimationView.h path - CanvasLibrary/CSAnimationView.h + Pods-Canvas-prefix.pch sourceTree <group> - EA7D3F24B66445CB931B266D + E8A86140A7194DD9B7DDD8D5 - buildActionMask - 2147483647 - files - - 91AE972BB1E94211A5C8069B - + fileRef + 89A5C40A59584B1B8B5CE3AB isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXBuildFile - EACCD6166BF2415190A84E3D + E941CAE822324AA988E78D07 - buildActionMask - 2147483647 - files - - B733FB344A334A38AC364B45 - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 + PBXFileReference + lastKnownFileType + wrapper.framework + name + QuartzCore.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/QuartzCore.framework + sourceTree + DEVELOPER_DIR - EB9EE8360D7E464899589540 + EC13E25B69AD46E892ECB20B + explicitFileType + archive.ar includeInIndex - 1 + 0 isa PBXFileReference - lastKnownFileType - text.xcconfig path - Pods-DAKeyboardControl.xcconfig + libPods-Canvas.a sourceTree - <group> + BUILT_PRODUCTS_DIR - EE2C114095A740B6A99C95D9 + EC6AA49310BD4ACAA6A68D00 fileRef - 921017EFF93D46CD9028F3F2 + EC13E25B69AD46E892ECB20B isa PBXBuildFile - F1464A02FCA047F683447ABC + EF8F341E06A44739A54E963B includeInIndex 1 @@ -2131,104 +2155,116 @@ lastKnownFileType sourcecode.c.h name - UITextView+TCCustomFont.h + UITextField+PlaceholderColor.h path - CanvasLibrary/UITextView+TCCustomFont.h + CanvasLibrary/UITextField+PlaceholderColor.h sourceTree <group> - F1688B4020B545889C44E5FF - - buildActionMask - 2147483647 - files - - D6060F49BB1B466AB6783F0C - 9755DCCF9D204F3F8A5CC722 - 8122831557CC49CBB06AFC39 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - F2AA3B33DD38482B96634125 + F19366D970C74B259F6B8149 - fileRef - 68123F9FFD3C4A01954569DB + includeInIndex + 1 isa - PBXBuildFile + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UINavigationBar+TCCustomFont.h + path + CanvasLibrary/UINavigationBar+TCCustomFont.h + sourceTree + <group> - F41AE200D1B549609DB28DCB + F1ECC045EC184FE6800F6839 - buildConfigurations - - 56E7176216094600A059DD55 - D1DA1D779D104511A080F7C2 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release isa - XCConfigurationList + PBXTargetDependency + target + DFFE135AFC1349FEAE7F497F + targetProxy + 7FD977ADF4C84F4AA59D60F5 - F47C51DB8E734AE0BF5A26BE + F28D917F371E49DC9F33208B - containerPortal - 955F0C597ADE4BADAF498DDA - isa - PBXContainerItemProxy - proxyType + includeInIndex 1 - remoteGlobalIDString - 55D3040BB079456E8F37C8A8 - remoteInfo - Pods-URBMediaFocusViewController + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-Canvas.xcconfig + sourceTree + <group> - F6729B3570C949F6BDD6E4BE + F45910CA20B84220A0AFF74F includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - name - UITextField+TCCustomFont.m + text path - CanvasLibrary/UITextField+TCCustomFont.m + Pods-acknowledgements.markdown sourceTree <group> - F8337B0F85004C3BB3FE1C27 + F74C8ACBB9C44A9CA015FACE - containerPortal - 955F0C597ADE4BADAF498DDA + buildConfigurationList + 2E467C1B849F4E69A43EC415 + buildPhases + + B4BDA2D7D445494BB3FE3095 + 1E80E2C1AB034EAB9F250D4A + E85F35341E07448D8EBA657D + + buildRules + + dependencies + isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 9C09863D513B46E98FA5D518 - remoteInfo + PBXNativeTarget + name + Pods-Canvas + productName Pods-Canvas + productReference + EC13E25B69AD46E892ECB20B + productType + com.apple.product-type.library.static - FAD68EF22EC24DD48879967B + F75A9595992D4FE9B806BE35 - buildConfigurations + buildConfigurationList + D37760EEBCCB4779A3AD4A88 + buildPhases - BDBDC0F6FA5444C88A99360E - A756324DF72148108CC69B9C + C96F7223A9EC43D286078356 + 9780CD0624F24263B401EE7D + + buildRules + + dependencies + + 1175074F53694CEB8E9F57F5 + 55142DCA70A2465F90031352 + F1ECC045EC184FE6800F6839 - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release isa - XCConfigurationList + PBXNativeTarget + name + Pods + productName + Pods + productReference + 6C255C76639A42858D60B031 + productType + com.apple.product-type.library.static - FD7FCAD128334B4B868BE7B9 + F79999166AD745AEBAD9F02D includeInIndex 1 @@ -2236,30 +2272,62 @@ PBXFileReference lastKnownFileType sourcecode.c.objc - name - UILabel+TCCustomFont.m path - CanvasLibrary/UILabel+TCCustomFont.m + Pods-dummy.m sourceTree <group> - FEB7F69CB65B49AF93A26335 + F8B2FA2F452246A99858BEE3 - includeInIndex + fileRef + E1BD1FF10E2448E795C84C3F + isa + PBXBuildFile + settings + + COMPILER_FLAGS + -fobjc-arc + + + FB5E046E0CA944E988CEE842 + + containerPortal + D346CCDDAC414AFE831C34C5 + isa + PBXContainerItemProxy + proxyType 1 + remoteGlobalIDString + F74C8ACBB9C44A9CA015FACE + remoteInfo + Pods-Canvas + + FBE005118B724FA79EAF560E + + children + + 126D87FBFECD4B569FDBC276 + 785C11EC79964D5881D0E202 + B02B9F30B59A45C1AA09235E + isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc + PBXGroup name - CSNavigationController.m + URBMediaFocusViewController path - CanvasLibrary/CSNavigationController.m + URBMediaFocusViewController sourceTree <group> + FE3060CE1A2D474E9249D945 + + fileRef + 28706067E3024853846FE4D2 + isa + PBXBuildFile + rootObject - 955F0C597ADE4BADAF498DDA + D346CCDDAC414AFE831C34C5 diff --git a/Pods/URBMediaFocusViewController/README.md b/Pods/URBMediaFocusViewController/README.md index 7e328c3..d5c33ca 100644 --- a/Pods/URBMediaFocusViewController/README.md +++ b/Pods/URBMediaFocusViewController/README.md @@ -1,5 +1,6 @@ URBMediaFocusViewController ============ +[![Build Status](https://travis-ci.org/u10int/URBMediaFocusViewController.svg)](https://travis-ci.org/u10int/URBMediaFocusViewController) ## Overview @@ -25,7 +26,7 @@ To use `URBMediaFocusViewController` in your own project, just import `URBMediaF The project uses ARC and targets iOS 7.0+. -**NOTE:** This project has been updated to work with and tested against iOS 6. However, the UIDynamics features are only support in iOS 7+. +**NOTE:** This project has been updated to work with and tested against iOS 6 (when compiling using Xcode 5+). However, the UIDynamics features are only support in iOS 7+. ## Usage Examples @@ -50,6 +51,11 @@ The following is a basic example of showing an image that is linked into your pr In most cases, you would present `URBMediaFocusViewController` from your app's key window, which is the default implementation. However, in some cases you may want to present your `URBMediaFocusViewController` view from a specific view controller. You can provide a parent view controller in those cases, and the `URBMediaFocusViewController` instance will be added on top of that controller's view: [self.mediaFocusController showImageFromURL:url fromView:self.thubmnailView inViewController:self]; + +The component will automatically detect if a loaded remote image is a GIF and properly animate it once it appears if so. You can also use the following built-in category methods to provide your own animated GIF image when displaying images that are local to your project: + + + (UIImage *)urb_animatedImageWithAnimatedGIFData:(NSData *)data; + + (UIImage *)urb_animatedImageWithAnimatedGIFURL:(NSURL *)url; ## Customization @@ -57,20 +63,27 @@ Most of the customization options included within this component are related to By default, parallax and blur effects are enabled. To disable one or both effects, just set the following properties on your instance: - self.parallaxEnabled = NO; - self.shouldBlurBackground = NO; - -Note that currently if you disable the parallax effect, the background blur will also be disabled. + self.parallaxEnabled = NO; // default YES + self.shouldBlurBackground = NO; // default YES By default, tapping on the image will not dismiss the focus view (as controlled by `shouldDismissOnTap`), but tapping outside of the image bounds will. You can change this by setting `shouldDismissOnImageTap` to `YES` on your `URBMediaFocusViewController` instance, which will allow tapping directly on the image to dismiss: - self.shouldDismissOnImageTap = YES; + self.shouldDismissOnImageTap = YES; // default NO + +If you wish to only dismiss using UIDynamics, you can also dismiss the default tap gesture used to dismiss (not recommended for iOS 6 since UIDynamics isn't available): + + self.shouldDismissOnTap = NO; // default YES + +You can also provide copy and save actions for the presented photo from an action sheet when the image receives a long press gesture. By default this feature is disabled, so just control this using the `shouldShowPhotoActions` property: + + self.shouldShowPhotoActions = YES; // default NO ## TODO - ~~Add CocoaPods spec~~ (added 11/15/2013) - Support for handling device orientation changes - ~~Support for focusing in image from a web view (issue #6)~~ (added 1/5/2014) +- ~~Support for animated GIFs~~ (added 4/14/2014) - Add support for loading videos similar to the method for remote photos - Consider adding support for additional present/dismiss transition animations diff --git a/Pods/URBMediaFocusViewController/URBMediaFocusViewController.h b/Pods/URBMediaFocusViewController/URBMediaFocusViewController.h index 6917bcb..1c2d3c9 100644 --- a/Pods/URBMediaFocusViewController/URBMediaFocusViewController.h +++ b/Pods/URBMediaFocusViewController/URBMediaFocusViewController.h @@ -50,14 +50,23 @@ @property (nonatomic, assign) BOOL shouldBlurBackground; @property (nonatomic, assign) BOOL parallaxEnabled; -// determines whether or not view should be dismissed when the container view is tapped anywhere, including outside image bounds +// determines whether or not view should be dismissed when the container view is tapped anywhere outside image bounds @property (nonatomic, assign) BOOL shouldDismissOnTap; // determines whether or not view should be dismissed when the container view is tapped within bounds of image view @property (nonatomic, assign) BOOL shouldDismissOnImageTap; +// determines if photo action sheet should appear with a long press on the photo (default NO) +@property (nonatomic, assign) BOOL shouldShowPhotoActions; + +//determines if view should rotate when the device orientation changes (default YES) +@property (nonatomic, assign) BOOL shouldRotateToDeviceOrientation; + @property (nonatomic, weak) id delegate; +// HTTP header values included in URL requests +@property (nonatomic, strong) NSDictionary *requestHTTPHeaders; + /** * Convenience method for not using a parentViewController. * @see showImage:fromView:inViewController @@ -113,3 +122,8 @@ - (void)cancelURLConnectionIfAny; @end + +@interface UIImage (URBAnimatedGIF) ++ (UIImage *)urb_animatedImageWithAnimatedGIFData:(NSData *)data; ++ (UIImage *)urb_animatedImageWithAnimatedGIFURL:(NSURL *)url; +@end diff --git a/Pods/URBMediaFocusViewController/URBMediaFocusViewController.m b/Pods/URBMediaFocusViewController/URBMediaFocusViewController.m index db20915..5026116 100644 --- a/Pods/URBMediaFocusViewController/URBMediaFocusViewController.m +++ b/Pods/URBMediaFocusViewController/URBMediaFocusViewController.m @@ -7,9 +7,12 @@ // #import +#import +#import + #import "URBMediaFocusViewController.h" -static const CGFloat __overlayAlpha = 0.7f; // opacity of the black overlay displayed below the focused image +static const CGFloat __overlayAlpha = 0.6f; // opacity of the black overlay displayed below the focused image static const CGFloat __animationDuration = 0.18f; // the base duration for present/dismiss animations (except physics-related ones) static const CGFloat __maximumDismissDelay = 0.5f; // maximum time of delay (in seconds) between when image view is push out and dismissal animations begin static const CGFloat __resistance = 0.0f; // linear resistance applied to the image’s dynamic item behavior @@ -35,7 +38,7 @@ @interface UIImage (URBImageEffects) - (UIImage *)urb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage; @end -@interface URBMediaFocusViewController () +@interface URBMediaFocusViewController () @property (nonatomic, strong) UIView *fromView; @property (nonatomic, assign) CGRect fromRect; @@ -55,6 +58,7 @@ @interface URBMediaFocusViewController () @property (nonatomic, strong) UITapGestureRecognizer *doubleTapRecognizer; @property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer; @property (nonatomic, strong) UITapGestureRecognizer *photoTapRecognizer; +@property (nonatomic, strong) UILongPressGestureRecognizer *photoLongPressRecognizer; @property (nonatomic, strong) UIActivityIndicatorView *loadingView; @property (nonatomic, strong) NSURLConnection *urlConnection; @@ -86,6 +90,8 @@ - (id)init { self.parallaxEnabled = YES; self.shouldDismissOnTap = YES; self.shouldDismissOnImageTap = NO; + self.shouldShowPhotoActions = NO; + self.shouldRotateToDeviceOrientation = YES; } return self; } @@ -100,7 +106,7 @@ - (void)setup { self.view.frame = self.keyWindow.bounds; self.backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.keyWindow.frame), CGRectGetHeight(self.keyWindow.frame))]; - self.backgroundView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f]; + self.backgroundView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:__overlayAlpha]; self.backgroundView.alpha = 0.0f; self.backgroundView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; [self.view addSubview:self.backgroundView]; @@ -117,6 +123,11 @@ - (void)setup { self.imageView.contentMode = UIViewContentModeScaleAspectFit; self.imageView.alpha = 0.0f; self.imageView.userInteractionEnabled = YES; + // Enable edge antialiasing on 7.0 or later. + // This symbol appears pre-7.0 but is not considered public API until 7.0 + if (([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)) { + self.imageView.layer.allowsEdgeAntialiasing = YES; + } [self.scrollView addSubview:self.imageView]; /* setup gesture recognizers */ @@ -135,6 +146,13 @@ - (void)setup { [self.tapRecognizer requireGestureRecognizerToFail:self.doubleTapRecognizer]; [self.view addGestureRecognizer:self.tapRecognizer]; + // long press gesture recognizer to bring up photo actions (when `shouldShowPhotoActions` is set to YES) + if (self.shouldShowPhotoActions) { + self.photoLongPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)]; + self.photoLongPressRecognizer.delegate = self; + [self.imageView addGestureRecognizer:self.photoLongPressRecognizer]; + } + // only add pan gesture and physics stuff if we can (e.g., iOS 7+) if (NSClassFromString(@"UIDynamicAnimator")) { // pan gesture to handle the physics @@ -189,16 +207,18 @@ - (void)showImage:(UIImage *)image fromView:(UIView *)fromView { - (void)showImage:(UIImage *)image fromView:(UIView *)fromView inViewController:(UIViewController *)parentViewController { self.fromView = fromView; //self.targetViewController = parentViewController; + UIView *superview = (parentViewController) ? parentViewController.view : fromView.superview; + CGRect fromRect = [superview convertRect:fromView.frame toView:nil]; - CGRect fromRect = [self.view convertRect:fromView.frame fromView:parentViewController.view]; - NSLog(@"self.view.frame=%@", NSStringFromCGRect(self.view.frame)); - NSLog(@"fromRect=%@", NSStringFromCGRect(fromRect)); [self showImage:image fromRect:fromRect]; } - (void)showImage:(UIImage *)image fromRect:(CGRect)fromRect { + NSAssert(image, @"Image is required"); + [self view]; // make sure view has loaded first _currentOrientation = [UIApplication sharedApplication].statusBarOrientation; + //fromRect = CGRectApplyAffineTransform(fromRect, [self transformForOrientation:_currentOrientation]); self.fromRect = fromRect; self.imageView.transform = CGAffineTransformIdentity; @@ -206,8 +226,8 @@ - (void)showImage:(UIImage *)image fromRect:(CGRect)fromRect { self.imageView.alpha = 0.2; // create snapshot of background if parallax is enabled - if (self.parallaxEnabled) { - [self createViewsForParallax]; + if (self.parallaxEnabled || self.shouldBlurBackground) { + [self createViewsForBackground]; // hide status bar, but store whether or not we need to unhide it later when dismissing this view // NOTE: in iOS 7+, this only works if you set `UIViewControllerBasedStatusBarAppearance` to YES in your Info.plist @@ -229,12 +249,11 @@ - (void)showImage:(UIImage *)image fromRect:(CGRect)fromRect { CGPoint midpoint = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)); CGSize scaledImageSize = CGSizeMake(image.size.width * scale, image.size.height * scale); CGRect targetRect = CGRectMake(midpoint.x - scaledImageSize.width / 2.0, midpoint.y - scaledImageSize.height / 2.0, scaledImageSize.width, scaledImageSize.height); - self.imageView.frame = targetRect; // set initial frame of image view to match that of the presenting image - //self.imageView.frame = CGRectMake(midpoint.x - image.size.width / 2.0, midpoint.y - image.size.height / 2.0, image.size.width, image.size.height); self.imageView.frame = [self.view convertRect:fromRect fromView:nil]; _originalFrame = targetRect; + // rotate imageView based on current device orientation [self reposition]; @@ -292,8 +311,10 @@ - (void)showImage:(UIImage *)image fromRect:(CGRect)fromRect { if (self.snapshotView) { self.blurredSnapshotView.alpha = 1.0f; - self.blurredSnapshotView.transform = CGAffineTransformScale(CGAffineTransformIdentity, __backgroundScale, __backgroundScale); - self.snapshotView.transform = CGAffineTransformScale(CGAffineTransformIdentity, __backgroundScale, __backgroundScale); + if (self.parallaxEnabled) { + self.blurredSnapshotView.transform = CGAffineTransformScale(CGAffineTransformIdentity, __backgroundScale, __backgroundScale); + self.snapshotView.transform = CGAffineTransformScale(CGAffineTransformIdentity, __backgroundScale, __backgroundScale); + } } } completion:^(BOOL finished) { @@ -316,7 +337,9 @@ - (void)showImageFromURL:(NSURL *)url fromView:(UIView *)fromView inViewControll self.fromView = fromView; self.targetViewController = parentViewController; - CGRect fromRect = [self.view convertRect:fromView.frame fromView:nil]; + UIView *superview = (parentViewController) ? parentViewController.view : fromView.superview; + CGRect fromRect = [superview convertRect:fromView.frame toView:nil]; + [self showImageFromURL:url fromRect:fromRect]; } @@ -326,7 +349,14 @@ - (void)showImageFromURL:(NSURL *)url fromRect:(CGRect)fromRect { // cancel any outstanding requests if we have one [self cancelURLConnectionIfAny]; - NSURLRequest *request = [NSURLRequest requestWithURL:url]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + if (self.requestHTTPHeaders.count > 0) { + for (NSString *key in self.requestHTTPHeaders) { + NSString *value = [self.requestHTTPHeaders valueForKey:key]; + [request setValue:value forHTTPHeaderField:key]; + } + } + NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; self.urlConnection = connection; @@ -403,10 +433,17 @@ - (UIWindow *)keyWindow { return [UIApplication sharedApplication].keyWindow; } -- (void)createViewsForParallax { +- (void)createViewsForBackground { // container view for window + CGRect containerFrame = CGRectMake(0, 0, CGRectGetWidth(self.keyWindow.frame), CGRectGetHeight(self.keyWindow.frame)); + // inset container view so we can blur the edges, but we also need to scale up so when __backgroundScale is applied, everything lines up - CGRect containerFrame = CGRectMake(0, 0, CGRectGetWidth(self.keyWindow.frame) * (1.0f / __backgroundScale), CGRectGetHeight(self.keyWindow.frame) * (1.0f / __backgroundScale)); + // only perform inset if `parallaxEnabled` is YES + if (self.parallaxEnabled) { + containerFrame.size.width *= 1.0f / __backgroundScale; + containerFrame.size.height *= 1.0f / __backgroundScale; + } + UIView *containerView = [[UIView alloc] initWithFrame:CGRectIntegral(containerFrame)]; containerView.backgroundColor = [UIColor blackColor]; @@ -520,6 +557,7 @@ - (void)hideSnapshotView { } - (void)cleanup { + _hasLaidOut = NO; [self.view removeFromSuperview]; if (self.targetViewController) { @@ -553,6 +591,24 @@ - (void)cleanup { } } +- (void)saveImageToLibrary:(UIImage *)image { + ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; + [library writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL *assetURL, NSError *error) { + if (error) { + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:error.localizedDescription + message:error.localizedRecoverySuggestion + delegate:nil + cancelButtonTitle:NSLocalizedString(@"OK", nil) + otherButtonTitles:nil]; + [alertView show]; + } + }]; +} + +- (void)copyImage:(UIImage *)image { + [UIPasteboard generalPasteboard].image = image; +} + #pragma mark - Gesture Methods - (void)handlePanGesture:(UIPanGestureRecognizer *)gestureRecognizer { @@ -658,12 +714,25 @@ - (void)handleDismissFromTap:(UITapGestureRecognizer *)gestureRecognizer { if (self.shouldDismissOnTap) { if (self.shouldDismissOnImageTap || !CGRectContainsPoint(self.imageView.frame, location)) { [self dismissToTargetView]; + return; } } if (self.shouldDismissOnImageTap && CGRectContainsPoint(self.imageView.frame, location)) { // we aren't allowing taps outside of image bounds to dismiss, but tap was detected on image view, we can dismiss [self dismissToTargetView]; + return; + } +} + +- (void)handleLongPressGesture:(UILongPressGestureRecognizer *)gestureRecognizer { + if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { + UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil + delegate:self + cancelButtonTitle:NSLocalizedString(@"Cancel", nil) + destructiveButtonTitle:nil + otherButtonTitles:NSLocalizedString(@"Save Photo", nil), NSLocalizedString(@"Copy Photo", nil), nil]; + [actionSheet showInView:self.view]; } } @@ -690,6 +759,17 @@ - (void)scrollViewDidZoom:(UIScrollView *)scrollView { [self centerScrollViewContents]; } +#pragma mark - UIActionSheetDelegate + +- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { + if (buttonIndex == 0) { + [self saveImageToLibrary:self.imageView.image]; + } + else if (buttonIndex == 1) { + [self copyImage:self.imageView.image]; + } +} + #pragma mark - UIGestureRecognizerDelegate Methods - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { @@ -697,7 +777,7 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecogni BOOL shouldRecognize = transformScale > _minScale; // make sure tap and double tap gestures aren't recognized simultaneously - shouldRecognize = !([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]); + shouldRecognize = shouldRecognize && !([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]); return shouldRecognize; } @@ -713,7 +793,28 @@ - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [self.loadingView removeFromSuperview]; if (self.urlData) { - UIImage *image = [UIImage imageWithData:self.urlData]; + NSString *urlPath = connection.currentRequest.URL.absoluteString; + UIImage *image; + + // determine if the loaded url is an animated GIF, and setup accordingly if so + if ([[urlPath substringFromIndex:[urlPath length] - 3] isEqualToString:@"gif"]) { + self.imageView.image = [UIImage imageWithData:self.urlData]; + image = [UIImage urb_animatedImageWithAnimatedGIFData:self.urlData]; + } + else { + image = [UIImage imageWithData:self.urlData]; + } + + // sometimes the server can return bad or corrupt image data which will result in a crash if we don't throw an error here + if (!image) { + NSString *errorDescription = [NSString stringWithFormat:@"Bad or corrupt image data for %@", urlPath]; + NSError *error = [NSError errorWithDomain:@"com.urban10.URBMediaFocusViewController" code:100 userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; + if ([self.delegate respondsToSelector:@selector(mediaFocusViewController:didFailLoadingImageWithError:)]) { + [self.delegate mediaFocusViewController:self didFailLoadingImageWithError:error]; + } + return; + } + [self showImage:image fromRect:self.fromRect]; if ([self.delegate respondsToSelector:@selector(mediaFocusViewController:didFinishLoadingImage:)]) { @@ -734,7 +835,9 @@ - (void)deviceOrientationChanged:(NSNotification *)notification { UIInterfaceOrientation deviceOrientation = (UIInterfaceOrientation)[UIDevice currentDevice].orientation; if (_currentOrientation != deviceOrientation) { _currentOrientation = deviceOrientation; - [self reposition]; + if (self.shouldRotateToDeviceOrientation) { + [self reposition]; + } } } @@ -1031,3 +1134,135 @@ - (UIImage *)urb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)ti } @end + + +@import ImageIO; + +#if __has_feature(objc_arc) +#define toCF (__bridge CFTypeRef) +#define fromCF (__bridge id) +#else +#define toCF (CFTypeRef) +#define fromCF (id) +#endif + +/** + * Animated GIF category and utility methods from https://github.com/mayoff/uiimage-from-animated-gif + */ +@implementation UIImage (URBAnimatedGIF) + +static int delayCentisecondsForImageAtIndex(CGImageSourceRef const source, size_t const i) { + int delayCentiseconds = 1; + CFDictionaryRef const properties = CGImageSourceCopyPropertiesAtIndex(source, i, NULL); + if (properties) { + CFDictionaryRef const gifProperties = CFDictionaryGetValue(properties, kCGImagePropertyGIFDictionary); + if (gifProperties) { + NSNumber *number = fromCF CFDictionaryGetValue(gifProperties, kCGImagePropertyGIFUnclampedDelayTime); + if (number == NULL || [number doubleValue] == 0) { + number = fromCF CFDictionaryGetValue(gifProperties, kCGImagePropertyGIFDelayTime); + } + if ([number doubleValue] > 0) { + // Even though the GIF stores the delay as an integer number of centiseconds, ImageIO “helpfully” converts that to seconds for us. + delayCentiseconds = (int)lrint([number doubleValue] * 100); + } + } + CFRelease(properties); + } + return delayCentiseconds; +} + +static void createImagesAndDelays(CGImageSourceRef source, size_t count, CGImageRef imagesOut[count], int delayCentisecondsOut[count]) { + for (size_t i = 0; i < count; ++i) { + imagesOut[i] = CGImageSourceCreateImageAtIndex(source, i, NULL); + delayCentisecondsOut[i] = delayCentisecondsForImageAtIndex(source, i); + } +} + +static int sum(size_t const count, int const *const values) { + int theSum = 0; + for (size_t i = 0; i < count; ++i) { + theSum += values[i]; + } + + return theSum; +} + +static int pairGCD(int a, int b) { + if (a < b) { + return pairGCD(b, a); + } + + while (true) { + int const r = a % b; + if (r == 0) { + return b; + } + + a = b; + b = r; + } +} + +static int vectorGCD(size_t const count, int const *const values) { + int gcd = values[0]; + for (size_t i = 1; i < count; ++i) { + // Note that after I process the first few elements of the vector, `gcd` will probably be smaller than any remaining element. By passing the smaller value as the second argument to `pairGCD`, I avoid making it swap the arguments. + gcd = pairGCD(values[i], gcd); + } + + return gcd; +} + +static NSArray *frameArray(size_t const count, CGImageRef const images[count], int const delayCentiseconds[count], int const totalDurationCentiseconds) { + int const gcd = vectorGCD(count, delayCentiseconds); + size_t const frameCount = totalDurationCentiseconds / gcd; + UIImage *frames[frameCount]; + for (size_t i = 0, f = 0; i < count; ++i) { + UIImage *const frame = [UIImage imageWithCGImage:images[i]]; + for (size_t j = delayCentiseconds[i] / gcd; j > 0; --j) { + frames[f++] = frame; + } + } + + return [NSArray arrayWithObjects:frames count:frameCount]; +} + +static void releaseImages(size_t const count, CGImageRef const images[count]) { + for (size_t i = 0; i < count; ++i) { + CGImageRelease(images[i]); + } +} + +static UIImage *animatedImageWithAnimatedGIFImageSource(CGImageSourceRef const source) { + size_t const count = CGImageSourceGetCount(source); + CGImageRef images[count]; + int delayCentiseconds[count]; // in centiseconds + createImagesAndDelays(source, count, images, delayCentiseconds); + int const totalDurationCentiseconds = sum(count, delayCentiseconds); + NSArray *const frames = frameArray(count, images, delayCentiseconds, totalDurationCentiseconds); + UIImage *const animation = [UIImage animatedImageWithImages:frames duration:(NSTimeInterval)totalDurationCentiseconds / 100.0]; + releaseImages(count, images); + + return animation; +} + +static UIImage *animatedImageWithAnimatedGIFReleasingImageSource(CGImageSourceRef source) { + if (source) { + UIImage *const image = animatedImageWithAnimatedGIFImageSource(source); + CFRelease(source); + return image; + } + else { + return nil; + } +} + ++ (UIImage *)urb_animatedImageWithAnimatedGIFData:(NSData *)data { + return animatedImageWithAnimatedGIFReleasingImageSource(CGImageSourceCreateWithData(toCF data, NULL)); +} + ++ (UIImage *)urb_animatedImageWithAnimatedGIFURL:(NSURL *)url { + return animatedImageWithAnimatedGIFReleasingImageSource(CGImageSourceCreateWithURL(toCF url, NULL)); +} + +@end diff --git a/README.md b/README.md index 3a0863a..ba95d5b 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,10 @@ Using Code It's very similar to using Interface Builder, instead you just setup the custom view in code. +```objective-c +#import "Canvas.h" +``` + ```objective-c CSAnimationView *animationView = [[CSAnimationView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; @@ -84,6 +88,18 @@ animationView.type = CSAnimationTypeMorph; [animationView startCanvasAnimation]; ``` +Updates +======= + +v0.1.2 - 9 new animations, thanks for +[Jake-Piatkowski][] adding those +awesome effects! + +v0.1.1 - Minor fixes + +v0.1 - Initial release + + Requirements ============ @@ -93,21 +109,21 @@ iOS 7, Xcode 5 Who's behind? ============= -- [Jamz Tang][] ([@jamztang][]) +- [James Tang][] ([@jamztang][]) - [Meng To][] ([@mengto][]) LICENSE ======= - Canvas is available under the MIT license. See the LICENSE file for more info. [homepage]:http://canvaspod.io [CocoaPods]:http://cocoapods.org -[Jamz Tang]:http://github.com/jamztang +[James Tang]:http://github.com/jamztang [Meng To]:http://mengto.com [@jamztang]:http://twitter.com/@jamztang [@mengto]:http://twitter.com/@mengto [tutorial]:https://medium.com/p/20c82a904164 [#9]:https://github.com/CanvasPod/Canvas/issues/9 +[Jake-Piatkowski]:https://github.com/Jake-Piatkowski