diff --git a/Example/HamburgerButton.xcworkspace/contents.xcworkspacedata b/Example/HamburgerButton.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..9df1763
--- /dev/null
+++ b/Example/HamburgerButton.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Example/Podfile b/Example/Podfile
index 49b887f..80c454b 100644
--- a/Example/Podfile
+++ b/Example/Podfile
@@ -8,5 +8,4 @@ end
target 'HamburgerButton_Tests', :exclusive => true do
pod "HamburgerButton", :path => "../"
- pod 'FBSnapshotTestCase'
end
diff --git a/Example/Podfile.lock b/Example/Podfile.lock
new file mode 100644
index 0000000..0cd44e9
--- /dev/null
+++ b/Example/Podfile.lock
@@ -0,0 +1,21 @@
+PODS:
+ - FBSnapshotTestCase (2.0.3):
+ - FBSnapshotTestCase/SwiftSupport (= 2.0.3)
+ - FBSnapshotTestCase/Core (2.0.3)
+ - FBSnapshotTestCase/SwiftSupport (2.0.3):
+ - FBSnapshotTestCase/Core
+ - HamburgerButton (0.1.0)
+
+DEPENDENCIES:
+ - FBSnapshotTestCase
+ - HamburgerButton (from `../`)
+
+EXTERNAL SOURCES:
+ HamburgerButton:
+ :path: ../
+
+SPEC CHECKSUMS:
+ FBSnapshotTestCase: d0eeca6bf87958e088b254396ae66873f971cfb1
+ HamburgerButton: 7c98f3258cc3b794872532fe825da3ef797adbb3
+
+COCOAPODS: 0.38.2
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
new file mode 100644
index 0000000..9091d62
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
@@ -0,0 +1,37 @@
+//
+// Created by Gabriel Handford on 3/1/09.
+// Copyright 2009-2013. All rights reserved.
+// Created by John Boiles on 10/20/11.
+// Copyright (c) 2011. All rights reserved
+// Modified by Felix Schulze on 2/11/13.
+// Copyright 2013. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#import
+
+@interface UIImage (Compare)
+
+- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance;
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m
new file mode 100644
index 0000000..4a1fd35
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m
@@ -0,0 +1,134 @@
+//
+// Created by Gabriel Handford on 3/1/09.
+// Copyright 2009-2013. All rights reserved.
+// Created by John Boiles on 10/20/11.
+// Copyright (c) 2011. All rights reserved
+// Modified by Felix Schulze on 2/11/13.
+// Copyright 2013. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#import
+
+// This makes debugging much more fun
+typedef union {
+ uint32_t raw;
+ unsigned char bytes[4];
+ struct {
+ char red;
+ char green;
+ char blue;
+ char alpha;
+ } __attribute__ ((packed)) pixels;
+} FBComparePixel;
+
+@implementation UIImage (Compare)
+
+- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance
+{
+ NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size.");
+
+ CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage));
+ CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage));
+
+ // The images have the equal size, so we could use the smallest amount of bytes because of byte padding
+ size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage));
+ size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow;
+ void *referenceImagePixels = calloc(1, referenceImageSizeBytes);
+ void *imagePixels = calloc(1, referenceImageSizeBytes);
+
+ if (!referenceImagePixels || !imagePixels) {
+ free(referenceImagePixels);
+ free(imagePixels);
+ return NO;
+ }
+
+ CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels,
+ referenceImageSize.width,
+ referenceImageSize.height,
+ CGImageGetBitsPerComponent(self.CGImage),
+ minBytesPerRow,
+ CGImageGetColorSpace(self.CGImage),
+ (CGBitmapInfo)kCGImageAlphaPremultipliedLast
+ );
+ CGContextRef imageContext = CGBitmapContextCreate(imagePixels,
+ imageSize.width,
+ imageSize.height,
+ CGImageGetBitsPerComponent(image.CGImage),
+ minBytesPerRow,
+ CGImageGetColorSpace(image.CGImage),
+ (CGBitmapInfo)kCGImageAlphaPremultipliedLast
+ );
+
+ if (!referenceImageContext || !imageContext) {
+ CGContextRelease(referenceImageContext);
+ CGContextRelease(imageContext);
+ free(referenceImagePixels);
+ free(imagePixels);
+ return NO;
+ }
+
+ CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage);
+ CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage);
+
+ CGContextRelease(referenceImageContext);
+ CGContextRelease(imageContext);
+
+ BOOL imageEqual = YES;
+
+ // Do a fast compare if we can
+ if (tolerance == 0) {
+ imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0);
+ } else {
+ // Go through each pixel in turn and see if it is different
+ const NSInteger pixelCount = self.size.width * self.size.height;
+
+ FBComparePixel *p1 = referenceImagePixels;
+ FBComparePixel *p2 = imagePixels;
+
+ NSInteger numDiffPixels = 0;
+ for (int n = 0; n < pixelCount; ++n) {
+ // If this pixel is different, increment the pixel diff count and see
+ // if we have hit our limit.
+ if (p1->raw != p2->raw) {
+ numDiffPixels ++;
+
+ CGFloat percent = (CGFloat)numDiffPixels / pixelCount;
+ if (percent > tolerance) {
+ imageEqual = NO;
+ break;
+ }
+ }
+
+ p1++;
+ p2++;
+ }
+ }
+
+ free(referenceImagePixels);
+ free(imagePixels);
+
+ return imageEqual;
+}
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
new file mode 100644
index 0000000..a0863f3
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
@@ -0,0 +1,37 @@
+//
+// Created by Gabriel Handford on 3/1/09.
+// Copyright 2009-2013. All rights reserved.
+// Created by John Boiles on 10/20/11.
+// Copyright (c) 2011. All rights reserved
+// Modified by Felix Schulze on 2/11/13.
+// Copyright 2013. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#import
+
+@interface UIImage (Diff)
+
+- (UIImage *)fb_diffWithImage:(UIImage *)image;
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m
new file mode 100644
index 0000000..ebb72fe
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m
@@ -0,0 +1,56 @@
+//
+// Created by Gabriel Handford on 3/1/09.
+// Copyright 2009-2013. All rights reserved.
+// Created by John Boiles on 10/20/11.
+// Copyright (c) 2011. All rights reserved
+// Modified by Felix Schulze on 2/11/13.
+// Copyright 2013. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#import
+
+@implementation UIImage (Diff)
+
+- (UIImage *)fb_diffWithImage:(UIImage *)image
+{
+ if (!image) {
+ return nil;
+ }
+ CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height));
+ UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
+ CGContextRef context = UIGraphicsGetCurrentContext();
+ [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
+ CGContextSetAlpha(context, 0.5);
+ CGContextBeginTransparencyLayer(context, NULL);
+ [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
+ CGContextSetBlendMode(context, kCGBlendModeDifference);
+ CGContextSetFillColorWithColor(context,[UIColor whiteColor].CGColor);
+ CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height));
+ CGContextEndTransparencyLayer(context);
+ UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ return returnImage;
+}
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
new file mode 100644
index 0000000..b0d5b26
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+
+@interface UIImage (Snapshot)
+
+/// Uses renderInContext: to get a snapshot of the layer.
++ (UIImage *)fb_imageForLayer:(CALayer *)layer;
+
+/// Uses renderInContext: to get a snapshot of the view layer.
++ (UIImage *)fb_imageForViewLayer:(UIView *)view;
+
+/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed.
++ (UIImage *)fb_imageForView:(UIView *)view;
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m
new file mode 100644
index 0000000..c792077
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+
+@implementation UIImage (Snapshot)
+
++ (UIImage *)fb_imageForLayer:(CALayer *)layer
+{
+ CGRect bounds = layer.bounds;
+ NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer);
+ NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer);
+
+ UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
+ CGContextRef context = UIGraphicsGetCurrentContext();
+ NSAssert1(context, @"Could not generate context for layer %@", layer);
+ CGContextSaveGState(context);
+ [layer layoutIfNeeded];
+ [layer renderInContext:context];
+ CGContextRestoreGState(context);
+
+ UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ return snapshot;
+}
+
++ (UIImage *)fb_imageForViewLayer:(UIView *)view
+{
+ [view layoutIfNeeded];
+ return [self fb_imageForLayer:view.layer];
+}
+
++ (UIImage *)fb_imageForView:(UIView *)view
+{
+ CGRect bounds = view.bounds;
+ NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view);
+ NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view);
+
+ UIWindow *window = view.window;
+ if (window == nil) {
+ window = [[UIWindow alloc] initWithFrame:bounds];
+ [window addSubview:view];
+ [window makeKeyAndVisible];
+ }
+
+ UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
+ [view layoutIfNeeded];
+ [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
+
+ UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ return snapshot;
+}
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
new file mode 100644
index 0000000..5a59bf0
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+
+#import
+
+#import
+
+#import
+
+/**
+ Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though.
+ @param view The view to snapshot
+ @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
+ @param suffixes An NSOrderedSet of strings for the different suffixes
+ @param tolerance The percentage of pixels that can differ and still count as an 'identical' view
+ */
+#define FBSnapshotVerifyViewWithOptions(view__, identifier__, suffixes__, tolerance__) \
+{ \
+NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; \
+NSError *error__ = nil; \
+BOOL comparisonSuccess__; \
+XCTAssertTrue((suffixes__.count > 0), @"Suffixes set cannot be empty %@", suffixes__); \
+XCTAssertNotNil(envReferenceImageDirectory, @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.");\
+for (NSString *suffix__ in suffixes__) { \
+NSString *referenceImagesDirectory__ = [NSString stringWithFormat:@"%@%@", envReferenceImageDirectory, suffix__]; \
+comparisonSuccess__ = [self compareSnapshotOfView:(view__) referenceImagesDirectory:referenceImagesDirectory__ identifier:(identifier__) tolerance:(tolerance__) error:&error__]; \
+if (comparisonSuccess__ || self.recordMode) break; \
+} \
+XCTAssertTrue(comparisonSuccess__, @"Snapshot comparison failed: %@", error__); \
+XCTAssertFalse(self.recordMode, @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"); \
+}
+
+#define FBSnapshotVerifyView(view__, identifier__) \
+{ \
+FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0); \
+}
+
+/**
+ Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though.
+ @param layer The layer to snapshot
+ @param identifier An optional identifier, used is there are multiple snapshot tests in a given -test method.
+ @param suffixes An NSOrderedSet of strings for the different suffixes
+ @param tolerance The percentage of pixels that can differ and still count as an 'identical' layer
+ */
+#define FBSnapshotVerifyLayerWithOptions(layer__, identifier__, suffixes__, tolerance__) \
+{ \
+NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; \
+NSError *error__ = nil; \
+BOOL comparisonSuccess__; \
+XCTAssertTrue((suffixes__.count > 0), @"Suffixes set cannot be empty %@", suffixes__); \
+XCTAssertNotNil(envReferenceImageDirectory, @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.");\
+for (NSString *suffix__ in suffixes__) { \
+NSString *referenceImagesDirectory__ = [NSString stringWithFormat:@"%@%@", envReferenceImageDirectory, suffix__]; \
+comparisonSuccess__ = [self compareSnapshotOfLayer:(layer__) referenceImagesDirectory:referenceImagesDirectory__ identifier:(identifier__) tolerance:(tolerance__) error:&error__]; \
+if (comparisonSuccess__ || self.recordMode) break; \
+} \
+XCTAssertTrue(comparisonSuccess__, @"Snapshot comparison failed: %@", error__); \
+XCTAssertFalse(self.recordMode, @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"); \
+}
+
+#define FBSnapshotVerifyLayer(layer__, identifier__) \
+{ \
+FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0); \
+}
+
+/**
+ The base class of view snapshotting tests. If you have small UI component, it's often easier to configure it in a test
+ and compare an image of the view to a reference image that write lots of complex layout-code tests.
+
+ In order to flip the tests in your subclass to record the reference images set @c recordMode to @c YES.
+
+ For example:
+ @code
+ - (void)setUp
+ {
+ [super setUp];
+ self.recordMode = YES;
+ }
+ @endcode
+ */
+@interface FBSnapshotTestCase : XCTestCase
+
+/**
+ When YES, the test macros will save reference images, rather than performing an actual test.
+ */
+@property (readwrite, nonatomic, assign) BOOL recordMode;
+
+/**
+ When YES, renders a snapshot of the complete view hierarchy as visible onscreen.
+ There are several things that do not work if renderInContext: is used.
+ - UIVisualEffect #70
+ - UIAppearance #91
+ - Size Classes #92
+
+ @attention If the view does't belong to a UIWindow, it will create one and add the view as a subview.
+ */
+@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect;
+
+- (void)setUp NS_REQUIRES_SUPER;
+- (void)tearDown NS_REQUIRES_SUPER;
+
+/**
+ Performs the comparison or records a snapshot of the layer if recordMode is YES.
+ @param layer The Layer to snapshot
+ @param referenceImagesDirectory The directory in which reference images are stored.
+ @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
+ @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care
+ @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
+ @returns YES if the comparison (or saving of the reference image) succeeded.
+ */
+- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
+ referenceImagesDirectory:(NSString *)referenceImagesDirectory
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr;
+
+/**
+ Performs the comparison or records a snapshot of the view if recordMode is YES.
+ @param view The view to snapshot
+ @param referenceImagesDirectory The directory in which reference images are stored.
+ @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
+ @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care
+ @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
+ @returns YES if the comparison (or saving of the reference image) succeeded.
+ */
+- (BOOL)compareSnapshotOfView:(UIView *)view
+ referenceImagesDirectory:(NSString *)referenceImagesDirectory
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr;
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m
new file mode 100644
index 0000000..cc6a3e7
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+#import
+
+@implementation FBSnapshotTestCase
+{
+ FBSnapshotTestController *_snapshotController;
+}
+
+#pragma mark - Overrides
+
+- (void)setUp
+{
+ [super setUp];
+ _snapshotController = [[FBSnapshotTestController alloc] initWithTestName:NSStringFromClass([self class])];
+}
+
+- (void)tearDown
+{
+ _snapshotController = nil;
+ [super tearDown];
+}
+
+- (BOOL)recordMode
+{
+ return _snapshotController.recordMode;
+}
+
+- (void)setRecordMode:(BOOL)recordMode
+{
+ NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
+ _snapshotController.recordMode = recordMode;
+}
+
+- (BOOL)usesDrawViewHierarchyInRect
+{
+ return _snapshotController.usesDrawViewHierarchyInRect;
+}
+
+- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect
+{
+ NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
+ _snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect;
+}
+
+#pragma mark - Public API
+
+- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
+ referenceImagesDirectory:(NSString *)referenceImagesDirectory
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ return [self _compareSnapshotOfViewOrLayer:layer
+ referenceImagesDirectory:referenceImagesDirectory
+ identifier:identifier
+ tolerance:tolerance
+ error:errorPtr];
+}
+
+- (BOOL)compareSnapshotOfView:(UIView *)view
+ referenceImagesDirectory:(NSString *)referenceImagesDirectory
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ return [self _compareSnapshotOfViewOrLayer:view
+ referenceImagesDirectory:referenceImagesDirectory
+ identifier:identifier
+ tolerance:tolerance
+ error:errorPtr];
+}
+
+#pragma mark - Private API
+
+- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer
+ referenceImagesDirectory:(NSString *)referenceImagesDirectory
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ _snapshotController.referenceImagesDirectory = referenceImagesDirectory;
+ return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer
+ selector:self.invocation.selector
+ identifier:identifier
+ tolerance:tolerance
+ error:errorPtr];
+}
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
new file mode 100644
index 0000000..99f6480
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ Returns a Boolean value that indicates whether the snapshot test is running in 64Bit.
+ This method is a convenience for creating the suffixes set based on the architecture
+ that the test is running.
+
+ @returns @c YES if the test is running in 64bit, otherwise @c NO.
+ */
+BOOL FBSnapshotTestCaseIs64Bit(void);
+
+/**
+ Returns a default set of strings that is used to append a suffix based on the architectures.
+ @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions()
+
+ @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory.
+ */
+NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m
new file mode 100644
index 0000000..95746c8
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+
+BOOL FBSnapshotTestCaseIs64Bit(void)
+{
+#if __LP64__
+ return YES;
+#else
+ return NO;
+#endif
+}
+
+NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void)
+{
+ NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init];
+ [suffixesSet addObject:@"_32"];
+ [suffixesSet addObject:@"_64"];
+ if (FBSnapshotTestCaseIs64Bit()) {
+ return [suffixesSet reversedOrderedSet];
+ }
+ return [suffixesSet copy];
+}
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
new file mode 100644
index 0000000..7ee01ee
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+#import
+
+typedef NS_ENUM(NSInteger, FBSnapshotTestControllerErrorCode) {
+ FBSnapshotTestControllerErrorCodeUnknown,
+ FBSnapshotTestControllerErrorCodeNeedsRecord,
+ FBSnapshotTestControllerErrorCodePNGCreationFailed,
+ FBSnapshotTestControllerErrorCodeImagesDifferentSizes,
+ FBSnapshotTestControllerErrorCodeImagesDifferent,
+};
+/**
+ Errors returned by the methods of FBSnapshotTestController use this domain.
+ */
+extern NSString *const FBSnapshotTestControllerErrorDomain;
+
+/**
+ Errors returned by the methods of FBSnapshotTestController sometimes contain this key in the `userInfo` dictionary.
+ */
+extern NSString *const FBReferenceImageFilePathKey;
+
+/**
+ Provides the heavy-lifting for FBSnapshotTestCase. It loads and saves images, along with performing the actual pixel-
+ by-pixel comparison of images.
+ Instances are initialized with the test class, and directories to read and write to.
+ */
+@interface FBSnapshotTestController : NSObject
+
+/**
+ Record snapshots.
+ */
+@property (readwrite, nonatomic, assign) BOOL recordMode;
+
+/**
+ Uses drawViewHierarchyInRect:afterScreenUpdates: to draw the image instead of renderInContext:
+ */
+@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect;
+
+/**
+ The directory in which referfence images are stored.
+ */
+@property (readwrite, nonatomic, copy) NSString *referenceImagesDirectory;
+
+/**
+ @param testClass The subclass of FBSnapshotTestCase that is using this controller.
+ @returns An instance of FBSnapshotTestController.
+ */
+- (instancetype)initWithTestClass:(Class)testClass;
+
+/**
+ Designated initializer.
+ @param testName The name of the tests.
+ @returns An instance of FBSnapshotTestController.
+ */
+- (instancetype)initWithTestName:(NSString *)testName;
+
+/**
+ Performs the comparison of the layer.
+ @param layer The Layer to snapshot.
+ @param selector The test method being run.
+ @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
+ @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
+ @returns YES if the comparison (or saving of the reference image) succeeded.
+ */
+- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr;
+
+/**
+ Performs the comparison of the view.
+ @param view The view to snapshot.
+ @param selector The test method being run.
+ @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
+ @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
+ @returns YES if the comparison (or saving of the reference image) succeeded.
+ */
+- (BOOL)compareSnapshotOfView:(UIView *)view
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr;
+
+/**
+ Performs the comparison of a view or layer.
+ @param view The view or layer to snapshot.
+ @param selector The test method being run.
+ @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
+ @param tolerance The percentage of pixels that can differ and still be considered 'identical'
+ @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
+ @returns YES if the comparison (or saving of the reference image) succeeded.
+ */
+- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr;
+
+/**
+ Loads a reference image.
+ @param selector The test method being run.
+ @param identifier The optional identifier, used when multiple images are tested in a single -test method.
+ @param errorPtr An error, if this methods returns nil, the error will be something useful.
+ @returns An image.
+ */
+- (UIImage *)referenceImageForSelector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr;
+
+/**
+ Performs a pixel-by-pixel comparison of the two images with an allowable margin of error.
+ @param referenceImage The reference (correct) image.
+ @param image The image to test against the reference.
+ @param tolerance The percentage of pixels that can differ and still be considered 'identical'
+ @param errorPtr An error that indicates why the comparison failed if it does.
+ @returns YES if the comparison succeeded and the images are the same(ish).
+ */
+- (BOOL)compareReferenceImage:(UIImage *)referenceImage
+ toImage:(UIImage *)image
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr;
+
+/**
+ Saves the reference image and the test image to `failedOutputDirectory`.
+ @param referenceImage The reference (correct) image.
+ @param testImage The image to test against the reference.
+ @param selector The test method being run.
+ @param identifier The optional identifier, used when multiple images are tested in a single -test method.
+ @param errorPtr An error that indicates why the comparison failed if it does.
+ @returns YES if the save succeeded.
+ */
+- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage
+ testImage:(UIImage *)testImage
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr;
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m
new file mode 100644
index 0000000..ef2c7c3
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m
@@ -0,0 +1,348 @@
+/*
+ * Copyright (c) 2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+#import
+#import
+#import
+#import
+
+#import
+
+NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain";
+NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey";
+
+typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) {
+ FBTestSnapshotFileNameTypeReference,
+ FBTestSnapshotFileNameTypeFailedReference,
+ FBTestSnapshotFileNameTypeFailedTest,
+ FBTestSnapshotFileNameTypeFailedTestDiff,
+};
+
+@implementation FBSnapshotTestController
+{
+ NSString *_testName;
+ NSFileManager *_fileManager;
+}
+
+#pragma mark - Initializers
+
+- (instancetype)initWithTestClass:(Class)testClass;
+{
+ return [self initWithTestName:NSStringFromClass(testClass)];
+}
+
+- (instancetype)initWithTestName:(NSString *)testName
+{
+ if (self = [super init]) {
+ _testName = [testName copy];
+ _fileManager = [[NSFileManager alloc] init];
+ }
+ return self;
+}
+
+#pragma mark - Overrides
+
+- (NSString *)description
+{
+ return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory];
+}
+
+#pragma mark - Public API
+
+- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ return [self compareSnapshotOfViewOrLayer:layer
+ selector:selector
+ identifier:identifier
+ tolerance:0
+ error:errorPtr];
+}
+
+- (BOOL)compareSnapshotOfView:(UIView *)view
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ return [self compareSnapshotOfViewOrLayer:view
+ selector:selector
+ identifier:identifier
+ tolerance:0
+ error:errorPtr];
+}
+
+- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ if (self.recordMode) {
+ return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr];
+ } else {
+ return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier tolerance:tolerance error:errorPtr];
+ }
+}
+
+- (UIImage *)referenceImageForSelector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier];
+ UIImage *image = [UIImage imageWithContentsOfFile:filePath];
+ if (nil == image && NULL != errorPtr) {
+ BOOL exists = [_fileManager fileExistsAtPath:filePath];
+ if (!exists) {
+ *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
+ code:FBSnapshotTestControllerErrorCodeNeedsRecord
+ userInfo:@{
+ FBReferenceImageFilePathKey: filePath,
+ NSLocalizedDescriptionKey: @"Unable to load reference image.",
+ NSLocalizedFailureReasonErrorKey: @"Reference image not found. You need to run the test in record mode",
+ }];
+ } else {
+ *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
+ code:FBSnapshotTestControllerErrorCodeUnknown
+ userInfo:nil];
+ }
+ }
+ return image;
+}
+
+- (BOOL)compareReferenceImage:(UIImage *)referenceImage
+ toImage:(UIImage *)image
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ if (CGSizeEqualToSize(referenceImage.size, image.size)) {
+ BOOL imagesEqual = [referenceImage fb_compareWithImage:image tolerance:tolerance];
+ if (NULL != errorPtr) {
+ *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
+ code:FBSnapshotTestControllerErrorCodeImagesDifferent
+ userInfo:@{
+ NSLocalizedDescriptionKey: @"Images different",
+ }];
+ }
+ return imagesEqual;
+ }
+ if (NULL != errorPtr) {
+ *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
+ code:FBSnapshotTestControllerErrorCodeImagesDifferentSizes
+ userInfo:@{
+ NSLocalizedDescriptionKey: @"Images different sizes",
+ NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"referenceImage:%@, image:%@",
+ NSStringFromCGSize(referenceImage.size),
+ NSStringFromCGSize(image.size)],
+ }];
+ }
+ return NO;
+}
+
+- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage
+ testImage:(UIImage *)testImage
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ NSData *referencePNGData = UIImagePNGRepresentation(referenceImage);
+ NSData *testPNGData = UIImagePNGRepresentation(testImage);
+
+ NSString *referencePath = [self _failedFilePathForSelector:selector
+ identifier:identifier
+ fileNameType:FBTestSnapshotFileNameTypeFailedReference];
+
+ NSError *creationError = nil;
+ BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent]
+ withIntermediateDirectories:YES
+ attributes:nil
+ error:&creationError];
+ if (!didCreateDir) {
+ if (NULL != errorPtr) {
+ *errorPtr = creationError;
+ }
+ return NO;
+ }
+
+ if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) {
+ return NO;
+ }
+
+ NSString *testPath = [self _failedFilePathForSelector:selector
+ identifier:identifier
+ fileNameType:FBTestSnapshotFileNameTypeFailedTest];
+
+ if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) {
+ return NO;
+ }
+
+ NSString *diffPath = [self _failedFilePathForSelector:selector
+ identifier:identifier
+ fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff];
+
+ UIImage *diffImage = [referenceImage fb_diffWithImage:testImage];
+ NSData *diffImageData = UIImagePNGRepresentation(diffImage);
+
+ if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) {
+ return NO;
+ }
+
+ NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n"
+ @"ksdiff \"%@\" \"%@\"", referencePath, testPath);
+
+ return YES;
+}
+
+#pragma mark - Private API
+
+- (NSString *)_fileNameForSelector:(SEL)selector
+ identifier:(NSString *)identifier
+ fileNameType:(FBTestSnapshotFileNameType)fileNameType
+{
+ NSString *fileName = nil;
+ switch (fileNameType) {
+ case FBTestSnapshotFileNameTypeFailedReference:
+ fileName = @"reference_";
+ break;
+ case FBTestSnapshotFileNameTypeFailedTest:
+ fileName = @"failed_";
+ break;
+ case FBTestSnapshotFileNameTypeFailedTestDiff:
+ fileName = @"diff_";
+ break;
+ default:
+ fileName = @"";
+ break;
+ }
+ fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)];
+ if (0 < identifier.length) {
+ fileName = [fileName stringByAppendingFormat:@"_%@", identifier];
+ }
+ if ([[UIScreen mainScreen] scale] > 1) {
+ fileName = [fileName stringByAppendingFormat:@"@%.fx", [[UIScreen mainScreen] scale]];
+ }
+ fileName = [fileName stringByAppendingPathExtension:@"png"];
+ return fileName;
+}
+
+- (NSString *)_referenceFilePathForSelector:(SEL)selector
+ identifier:(NSString *)identifier
+{
+ NSString *fileName = [self _fileNameForSelector:selector
+ identifier:identifier
+ fileNameType:FBTestSnapshotFileNameTypeReference];
+ NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:_testName];
+ filePath = [filePath stringByAppendingPathComponent:fileName];
+ return filePath;
+}
+
+- (NSString *)_failedFilePathForSelector:(SEL)selector
+ identifier:(NSString *)identifier
+ fileNameType:(FBTestSnapshotFileNameType)fileNameType
+{
+ NSString *fileName = [self _fileNameForSelector:selector
+ identifier:identifier
+ fileNameType:fileNameType];
+ NSString *folderPath = NSTemporaryDirectory();
+ if (getenv("IMAGE_DIFF_DIR")) {
+ folderPath = @(getenv("IMAGE_DIFF_DIR"));
+ }
+ NSString *filePath = [folderPath stringByAppendingPathComponent:_testName];
+ filePath = [filePath stringByAppendingPathComponent:fileName];
+ return filePath;
+}
+
+- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ tolerance:(CGFloat)tolerance
+ error:(NSError **)errorPtr
+{
+ UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr];
+ if (nil != referenceImage) {
+ UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer];
+ BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr];
+ if (!imagesSame) {
+ [self saveFailedReferenceImage:referenceImage
+ testImage:snapshot
+ selector:selector
+ identifier:identifier
+ error:errorPtr];
+ }
+ return imagesSame;
+ }
+ return NO;
+}
+
+- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer];
+ return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr];
+}
+
+- (BOOL)_saveReferenceImage:(UIImage *)image
+ selector:(SEL)selector
+ identifier:(NSString *)identifier
+ error:(NSError **)errorPtr
+{
+ BOOL didWrite = NO;
+ if (nil != image) {
+ NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier];
+ NSData *pngData = UIImagePNGRepresentation(image);
+ if (nil != pngData) {
+ NSError *creationError = nil;
+ BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent]
+ withIntermediateDirectories:YES
+ attributes:nil
+ error:&creationError];
+ if (!didCreateDir) {
+ if (NULL != errorPtr) {
+ *errorPtr = creationError;
+ }
+ return NO;
+ }
+ didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr];
+ if (didWrite) {
+ NSLog(@"Reference image save at: %@", filePath);
+ }
+ } else {
+ if (nil != errorPtr) {
+ *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
+ code:FBSnapshotTestControllerErrorCodePNGCreationFailed
+ userInfo:@{
+ FBReferenceImageFilePathKey: filePath,
+ }];
+ }
+ }
+ }
+ return didWrite;
+}
+
+- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer
+{
+ if ([viewOrLayer isKindOfClass:[UIView class]]) {
+ if (_usesDrawViewHierarchyInRect) {
+ return [UIImage fb_imageForView:viewOrLayer];
+ } else {
+ return [UIImage fb_imageForViewLayer:viewOrLayer];
+ }
+ } else if ([viewOrLayer isKindOfClass:[CALayer class]]) {
+ return [UIImage fb_imageForLayer:viewOrLayer];
+ } else {
+ [NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer];
+ }
+ return nil;
+}
+
+@end
diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift
new file mode 100644
index 0000000..e1b2a4f
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2015, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*
+*/
+
+public extension FBSnapshotTestCase {
+ public func FBSnapshotVerifyView(view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), file: String = __FILE__, line: UInt = __LINE__) {
+ let envReferenceImageDirectory = NSProcessInfo.processInfo().environment["FB_REFERENCE_IMAGE_DIR"] as? String
+ var error: NSError?
+
+ if let envReferenceImageDirectory = envReferenceImageDirectory {
+ for suffix in suffixes {
+ let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)"
+ let comparisonSuccess = compareSnapshotOfView(view, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: 0, error: &error)
+ if comparisonSuccess || recordMode {
+ break
+ }
+
+ assert(comparisonSuccess, message: "Snapshot comparison failed: \(error)", file: file, line: line)
+ assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line)
+ }
+ } else {
+ assert(false, message: "Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.", file: file, line: line)
+ }
+ }
+
+ public func FBSnapshotVerifyLayer(layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), file: String = __FILE__, line: UInt = __LINE__) {
+ let envReferenceImageDirectory = NSProcessInfo.processInfo().environment["FB_REFERENCE_IMAGE_DIR"] as? String
+ var error: NSError?
+ var comparisonSuccess = false
+
+ if let envReferenceImageDirectory = envReferenceImageDirectory {
+ for suffix in suffixes {
+ let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)"
+ comparisonSuccess = compareSnapshotOfLayer(layer, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: 0, error: &error)
+ if comparisonSuccess || recordMode {
+ break
+ }
+
+ assert(comparisonSuccess, message: "Snapshot comparison failed: \(error)", file: file, line: line)
+ assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line)
+ }
+ } else {
+ XCTFail("Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.")
+ }
+ }
+
+ func assert(assertion: Bool, message: String, file: String, line: UInt) {
+ if !assertion {
+ XCTFail(message, file: file, line: line)
+ }
+ }
+}
diff --git a/Example/Pods/FBSnapshotTestCase/LICENSE b/Example/Pods/FBSnapshotTestCase/LICENSE
new file mode 100644
index 0000000..2dd780c
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/LICENSE
@@ -0,0 +1,29 @@
+BSD License
+
+For the FBSnapshotTestCase software
+
+Copyright (c) 2013, Facebook, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name Facebook nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Example/Pods/FBSnapshotTestCase/README.md b/Example/Pods/FBSnapshotTestCase/README.md
new file mode 100644
index 0000000..c53ac2f
--- /dev/null
+++ b/Example/Pods/FBSnapshotTestCase/README.md
@@ -0,0 +1,98 @@
+FBSnapshotTestCase
+======================
+
+[](https://travis-ci.org/facebook/ios-snapshot-test-case) [](http://cocoadocs.org/docsets/FBSnapshotTestCase/)
+
+What it does
+------------
+
+A "snapshot test case" takes a configured `UIView` or `CALayer` and uses the
+`renderInContext:` method to get an image snapshot of its contents. It
+compares this snapshot to a "reference image" stored in your source code
+repository and fails the test if the two images don't match.
+
+Why?
+----
+
+At Facebook we write a lot of UI code. As you might imagine, each type of
+feed story is rendered using a subclass of `UIView`. There are a lot of edge
+cases that we want to handle correctly:
+
+- What if there is more text than can fit in the space available?
+- What if an image doesn't match the size of an image view?
+- What should the highlighted state look like?
+
+It's straightforward to test logic code, but less obvious how you should test
+views. You can do a lot of rectangle asserts, but these are hard to understand
+or visualize. Looking at an image diff shows you exactly what changed and how
+it will look to users.
+
+We developed `FBSnapshotTestCase` to make snapshot tests easy.
+
+Installation with CocoaPods
+---------------------------
+
+1. Add the following lines to your Podfile:
+
+ ```
+ target "Tests" do
+ pod 'FBSnapshotTestCase'
+ end
+ ```
+
+ If you support iOS 7 use `FBSnapshotTestCase/Core` instead, which doesn't contain Swift support.
+
+ Replace "Tests" with the name of your test project.
+
+2. Define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should
+ point to the directory where you want reference images to be stored. At Facebook,
+ we normally use this:
+
+|Name|Value|
+|:---|:----|
+|`FB_REFERENCE_IMAGE_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages`|
+
+
+
+
+Creating a snapshot test
+------------------------
+
+1. Subclass `FBSnapshotTestCase` instead of `XCTestCase`.
+2. From within your test, use `FBSnapshotVerifyView`.
+3. Run the test once with `self.recordMode = YES;` in the test's `-setUp`
+ method. (This creates the reference images on disk.)
+4. Remove the line enabling record mode and run the test.
+
+Features
+--------
+
+- Automatically names reference images on disk according to test class and
+ selector.
+- Prints a descriptive error message to the console on failure. (Bonus:
+ failure message includes a one-line command to see an image diff if
+ you have [Kaleidoscope](http://www.kaleidoscopeapp.com) installed.)
+- Supply an optional "identifier" if you want to perform multiple snapshots
+ in a single test method.
+- Support for `CALayer` via `FBSnapshotVerifyLayer`.
+- `usesDrawViewHierarchyInRect` to handle cases like `UIVisualEffect`, `UIAppearance` and Size Classes.
+
+Notes
+-----
+
+Your unit test must be an "application test", not a "logic test." (That is, it
+must be run within the Simulator so that it has access to UIKit.) In Xcode 5
+and later new projects only offer application tests, but older projects will
+have separate targets for the two types.
+
+Authors
+-------
+
+`FBSnapshotTestCase` was written at Facebook by
+[Jonathan Dann](https://facebook.com/j.p.dann) with significant contributions by
+[Todd Krabach](https://facebook.com/toddkrabach).
+
+License
+-------
+
+`FBSnapshotTestCase` is BSD-licensed. See `LICENSE`.
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h
new file mode 120000
index 0000000..2925eab
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
new file mode 120000
index 0000000..6127a30
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h
new file mode 120000
index 0000000..4a7dea1
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h
new file mode 120000
index 0000000..2fd266d
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h
new file mode 120000
index 0000000..2ecee67
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h
new file mode 120000
index 0000000..577a4cb
--- /dev/null
+++ b/Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h
@@ -0,0 +1 @@
+../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
\ No newline at end of file
diff --git a/Example/Pods/Local Podspecs/HamburgerButton.podspec.json b/Example/Pods/Local Podspecs/HamburgerButton.podspec.json
new file mode 100644
index 0000000..659cee7
--- /dev/null
+++ b/Example/Pods/Local Podspecs/HamburgerButton.podspec.json
@@ -0,0 +1,25 @@
+{
+ "name": "HamburgerButton",
+ "version": "0.1.0",
+ "summary": "A short description of HamburgerButton.",
+ "description": "An optional longer description of HamburgerButton\n\n* Markdown format.\n* Don't worry about the indent, we strip it!",
+ "homepage": "https://github.com//HamburgerButton",
+ "license": "MIT",
+ "authors": {
+ "Giuseppe Nucifora": "me@giuseppenucifora.com"
+ },
+ "source": {
+ "git": "https://github.com//HamburgerButton.git",
+ "tag": "0.1.0"
+ },
+ "platforms": {
+ "ios": "7.0"
+ },
+ "requires_arc": true,
+ "source_files": "Pod/Classes/**/*",
+ "resource_bundles": {
+ "HamburgerButton": [
+ "Pod/Assets/*.png"
+ ]
+ }
+}
diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock
new file mode 100644
index 0000000..0cd44e9
--- /dev/null
+++ b/Example/Pods/Manifest.lock
@@ -0,0 +1,21 @@
+PODS:
+ - FBSnapshotTestCase (2.0.3):
+ - FBSnapshotTestCase/SwiftSupport (= 2.0.3)
+ - FBSnapshotTestCase/Core (2.0.3)
+ - FBSnapshotTestCase/SwiftSupport (2.0.3):
+ - FBSnapshotTestCase/Core
+ - HamburgerButton (0.1.0)
+
+DEPENDENCIES:
+ - FBSnapshotTestCase
+ - HamburgerButton (from `../`)
+
+EXTERNAL SOURCES:
+ HamburgerButton:
+ :path: ../
+
+SPEC CHECKSUMS:
+ FBSnapshotTestCase: d0eeca6bf87958e088b254396ae66873f971cfb1
+ HamburgerButton: 7c98f3258cc3b794872532fe825da3ef797adbb3
+
+COCOAPODS: 0.38.2
diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..cbf230e
--- /dev/null
+++ b/Example/Pods/Pods.xcodeproj/project.pbxproj
@@ -0,0 +1,1019 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 00C5ED9602D45B2B9AB3A61AD6085BD4 /* Pods-HamburgerButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F12C8BD763B2658352EF9AF2E657CC6 /* Pods-HamburgerButton_Example-dummy.m */; };
+ 0B7F951B9C84228107DCF5FE532990C7 /* HamburgerButton.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B018B99C96DEFBF4E2115361CBFDA031 /* HamburgerButton.bundle */; };
+ 122066F54AB32EC9C70FF010078E2BFC /* FBSnapshotTestCase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F468BFA5D26D1C563E9F8087AE7FDBD5 /* FBSnapshotTestCase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 17FF1BF851F42CCE7CEA1A3573781AF4 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF425CDB60D53E7418590A03B490F634 /* SwiftSupport.swift */; };
+ 3A4DCDBEEBAB580D56C69715680B9F62 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */; };
+ 427DB164362AB28B424EDBD75CE6B114 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */; };
+ 515E48BEDF072BF53F877B9D209C08A2 /* Pods-HamburgerButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCDBB94ED71F92D65F506A60ED28FCC /* Pods-HamburgerButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 58BCF607F3A15B367DEAFDDD24430249 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */; };
+ 5A77C5F8806CD8AB6551AA900C5B903D /* FBSnapshotTestCasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = EFE04F01AB5AFE6DB969F3254FCA23AC /* FBSnapshotTestCasePlatform.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 68A040D61B6F79F400F5A8C9 /* LBHamburgerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 68A040D41B6F79F400F5A8C9 /* LBHamburgerButton.m */; };
+ 68A040D91B6F7A1100F5A8C9 /* LBHamburgerButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A040D81B6F7A1100F5A8C9 /* LBHamburgerButton.h */; };
+ 705635138A2651EC4E1DDA39EB49F7E5 /* UIImage+Compare.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E23C46F71076CF4B5EACD488322C34 /* UIImage+Compare.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 70AF9768A079CE1332666E1F4DED6B90 /* HamburgerButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 05B5ECBFF76124646668783FA77197F6 /* HamburgerButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 7163D6C2D4E42DE2E0030D74736DEA86 /* FBSnapshotTestCasePlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F81BFFCB8C34D40F36B2C468207F69 /* FBSnapshotTestCasePlatform.m */; };
+ 71F86F7C428FF4AA7A059F25EC87B033 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */; };
+ 779EEFAADC9462CC073AC24DF06C579E /* UIImage+Snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A8F43B5A8C25FE501B3085B04E59978 /* UIImage+Snapshot.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 77D493B12A413B4971E66AEBD2DF7384 /* Pods-HamburgerButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 811B47B130BD9A62E09567FE8FCB0796 /* Pods-HamburgerButton_Tests-dummy.m */; };
+ 7BC6D15A2C4F2757D7164D9973F56BBD /* UIImage+Diff.m in Sources */ = {isa = PBXBuildFile; fileRef = BA47052B645BFA4E9EA2C1091C1B8C0B /* UIImage+Diff.m */; };
+ 8058472FCDFCD7BC08B86B402703D764 /* FBSnapshotTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = 08CA195396AAF16773B02157E6038191 /* FBSnapshotTestController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 859A75A6F732CA92DDDAF17F8BD36EC3 /* UIImage+Diff.h in Headers */ = {isa = PBXBuildFile; fileRef = FF7CE48EFAD9A3CEA07D7F2958DC224F /* UIImage+Diff.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 8CB94E6CEB3C70DA9A522B69D44377C6 /* UIImage+Compare.m in Sources */ = {isa = PBXBuildFile; fileRef = C73CA62074D1BF9D22D7E47F3F05F04C /* UIImage+Compare.m */; };
+ 90E1FD3A190769CEA0B63504D88C7DDF /* FBSnapshotTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F666C5D7446DD6572AB1616F1E30AA /* FBSnapshotTestCase.m */; };
+ A18AB0E0A6B41F384C48365498A7B99F /* FBSnapshotTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AD10D07B64816335D075D437A535566 /* FBSnapshotTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A512A0FDCBA1411FFF43641017B586A2 /* Pods-HamburgerButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 972947897347EFEE474238C017C40BD4 /* Pods-HamburgerButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ BBCB339B6876210CB81CDC8C2AEF8708 /* UIImage+Snapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E19E3632FEF9B104B04B6B00253851C /* UIImage+Snapshot.m */; };
+ C0B7165ADF9662081DE5A260FC9C6824 /* HamburgerButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CDFDB417FCEBB965575338A496A1AAD4 /* HamburgerButton-dummy.m */; };
+ CF04850F3DF1E9B1C22F59F9A881CA92 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F1AA8D42F800A1B996AF97D8B9FFE5B /* XCTest.framework */; };
+ D8916754747FBAF3A987C07826AA8FA8 /* FBSnapshotTestCase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 106F0533C6623B74EDB227C8FC027B8E /* FBSnapshotTestCase-dummy.m */; };
+ FF4A2B692DF2C6B70CFCC181FAFD42A8 /* FBSnapshotTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = B427624CBD5B62469F66AC43A5D82C7D /* FBSnapshotTestController.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 5DF05D6F9EB5D29D19D96CD8E09D73F8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = A5E3C8454E430B57F66B650B070436F8;
+ remoteInfo = FBSnapshotTestCase;
+ };
+ 80E80952A2808DFD37A99A68D92A6FCB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = E8A2E331B17AB8F4B78978C1A9170187;
+ remoteInfo = HamburgerButton;
+ };
+ 896664CAA6BBF4886DA07AF20DD2A5A8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = E8A2E331B17AB8F4B78978C1A9170187;
+ remoteInfo = HamburgerButton;
+ };
+ BCED431185E74B90B6ED5A0FD8752218 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B38D24EE87757ECA2870EA6F2B1714AD;
+ remoteInfo = "HamburgerButton-HamburgerButton";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 05B5ECBFF76124646668783FA77197F6 /* HamburgerButton-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HamburgerButton-umbrella.h"; sourceTree = ""; };
+ 08CA195396AAF16773B02157E6038191 /* FBSnapshotTestController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestController.h; path = FBSnapshotTestCase/FBSnapshotTestController.h; sourceTree = ""; };
+ 106F0533C6623B74EDB227C8FC027B8E /* FBSnapshotTestCase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSnapshotTestCase-dummy.m"; sourceTree = ""; };
+ 13F9DB71C70CA0E85A5F0547A3597E3C /* Pods_HamburgerButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HamburgerButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 14824E604F439019DACCD607B0CA660E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 1DE8E61523E195B79AF379E1E7AF0D53 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBSnapshotTestCase.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 257154AF1EC32B1CFF664D8EC2FDB636 /* Pods-HamburgerButton_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-HamburgerButton_Tests.modulemap"; sourceTree = ""; };
+ 2F1AA8D42F800A1B996AF97D8B9FFE5B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+ 413DF9CB4DCDFF1505BAFA009CF49F27 /* HamburgerButton.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = HamburgerButton.modulemap; sourceTree = ""; };
+ 469D88E90A130481766EEE004A0925FD /* Pods-HamburgerButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HamburgerButton_Tests.debug.xcconfig"; sourceTree = ""; };
+ 4BD2D026071D7FD2BE689CCD1D3B9EF6 /* FBSnapshotTestCase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FBSnapshotTestCase.modulemap; sourceTree = ""; };
+ 4C9DB4DA9DBEBDA43C5436275C4311D7 /* FBSnapshotTestCase-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "FBSnapshotTestCase-Private.xcconfig"; sourceTree = ""; };
+ 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
+ 5A8F43B5A8C25FE501B3085B04E59978 /* UIImage+Snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Snapshot.h"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.h"; sourceTree = ""; };
+ 5D95B12EE01FCD41FA1A4E2EE9EBCF9F /* Pods-HamburgerButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HamburgerButton_Example.release.xcconfig"; sourceTree = ""; };
+ 5F12C8BD763B2658352EF9AF2E657CC6 /* Pods-HamburgerButton_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-HamburgerButton_Example-dummy.m"; sourceTree = ""; };
+ 62047B34C8834B6FEF7C1CFDF302EF07 /* Pods-HamburgerButton_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HamburgerButton_Tests-acknowledgements.plist"; sourceTree = ""; };
+ 62ED241CD5B3D0C857D0D4547192F2A7 /* Pods-HamburgerButton_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HamburgerButton_Example-frameworks.sh"; sourceTree = ""; };
+ 65F666C5D7446DD6572AB1616F1E30AA /* FBSnapshotTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCase.m; path = FBSnapshotTestCase/FBSnapshotTestCase.m; sourceTree = ""; };
+ 68A040D41B6F79F400F5A8C9 /* LBHamburgerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LBHamburgerButton.m; sourceTree = ""; };
+ 68A040D81B6F7A1100F5A8C9 /* LBHamburgerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LBHamburgerButton.h; sourceTree = ""; };
+ 6AD10D07B64816335D075D437A535566 /* FBSnapshotTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCase.h; path = FBSnapshotTestCase/FBSnapshotTestCase.h; sourceTree = ""; };
+ 6EDB3F182EE21701574EACF70E15271B /* Pods-HamburgerButton_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-HamburgerButton_Example.modulemap"; sourceTree = ""; };
+ 714626102659630456832C4A58C340DD /* Pods-HamburgerButton_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-HamburgerButton_Example-acknowledgements.markdown"; sourceTree = ""; };
+ 731545587BE276FB10A5586389E9CAF2 /* Pods-HamburgerButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HamburgerButton_Tests.release.xcconfig"; sourceTree = ""; };
+ 76F81BFFCB8C34D40F36B2C468207F69 /* FBSnapshotTestCasePlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCasePlatform.m; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.m; sourceTree = ""; };
+ 77E23C46F71076CF4B5EACD488322C34 /* UIImage+Compare.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Compare.h"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.h"; sourceTree = ""; };
+ 811B47B130BD9A62E09567FE8FCB0796 /* Pods-HamburgerButton_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-HamburgerButton_Tests-dummy.m"; sourceTree = ""; };
+ 8B1CF639B3C3F3624FA206999B56B0F6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 9008155BDFCCA40E8323C0B32BD6C36B /* HamburgerButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HamburgerButton.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 947EDA8B98AB434928FAFC655DB528D6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 972947897347EFEE474238C017C40BD4 /* Pods-HamburgerButton_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-HamburgerButton_Tests-umbrella.h"; sourceTree = ""; };
+ 9E19E3632FEF9B104B04B6B00253851C /* UIImage+Snapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Snapshot.m"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.m"; sourceTree = ""; };
+ 9FCDBB94ED71F92D65F506A60ED28FCC /* Pods-HamburgerButton_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-HamburgerButton_Example-umbrella.h"; sourceTree = ""; };
+ A48AFAE54A63F3C0079D07FF3DA2DA1C /* FBSnapshotTestCase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-prefix.pch"; sourceTree = ""; };
+ A86F994476C37044187A36076E71009B /* Pods-HamburgerButton_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HamburgerButton_Tests-frameworks.sh"; sourceTree = ""; };
+ ABBFB30F05A4EB2FE4F22CB71B966513 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ AF425CDB60D53E7418590A03B490F634 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = FBSnapshotTestCase/SwiftSupport.swift; sourceTree = ""; };
+ B018B99C96DEFBF4E2115361CBFDA031 /* HamburgerButton.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HamburgerButton.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ B427624CBD5B62469F66AC43A5D82C7D /* FBSnapshotTestController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestController.m; path = FBSnapshotTestCase/FBSnapshotTestController.m; sourceTree = ""; };
+ B6EE77B3672BAEABAA1B4DB3744A1B06 /* Pods_HamburgerButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HamburgerButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ BA47052B645BFA4E9EA2C1091C1B8C0B /* UIImage+Diff.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Diff.m"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.m"; sourceTree = ""; };
+ BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ BB24C554084930B91B11848797894844 /* HamburgerButton-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HamburgerButton-prefix.pch"; sourceTree = ""; };
+ C0412153695F6CE8364A34919B830ABF /* Pods-HamburgerButton_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HamburgerButton_Tests-resources.sh"; sourceTree = ""; };
+ C73CA62074D1BF9D22D7E47F3F05F04C /* UIImage+Compare.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Compare.m"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.m"; sourceTree = ""; };
+ CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "HamburgerButton-Private.xcconfig"; sourceTree = ""; };
+ CDFDB417FCEBB965575338A496A1AAD4 /* HamburgerButton-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HamburgerButton-dummy.m"; sourceTree = ""; };
+ D5941B99E2DCD9F3DF38C30ED76BA164 /* HamburgerButton.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HamburgerButton.xcconfig; sourceTree = ""; };
+ E248B6CF37B39A927724C986E981F7D8 /* Pods-HamburgerButton_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-HamburgerButton_Tests-acknowledgements.markdown"; sourceTree = ""; };
+ E3F6C51A8C61821D51FB13B8CA1A6567 /* Pods-HamburgerButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HamburgerButton_Example.debug.xcconfig"; sourceTree = ""; };
+ E49543E9FC8F1146CEAFD27D68DB0A01 /* Pods-HamburgerButton_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HamburgerButton_Example-acknowledgements.plist"; sourceTree = ""; };
+ E6AEF9CC1794C216962A1A9DE2B1B8BF /* FBSnapshotTestCase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSnapshotTestCase.xcconfig; sourceTree = ""; };
+ EE231B86E665BE7FAA63E753D06321D4 /* Pods-HamburgerButton_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HamburgerButton_Example-resources.sh"; sourceTree = ""; };
+ EFE04F01AB5AFE6DB969F3254FCA23AC /* FBSnapshotTestCasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCasePlatform.h; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.h; sourceTree = ""; };
+ F468BFA5D26D1C563E9F8087AE7FDBD5 /* FBSnapshotTestCase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-umbrella.h"; sourceTree = ""; };
+ FF7CE48EFAD9A3CEA07D7F2958DC224F /* UIImage+Diff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Diff.h"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.h"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1B54F50D61A801D84473A578EAA23648 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3A4DCDBEEBAB580D56C69715680B9F62 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 2856E64C9B205FF009D405E755612CDF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58BCF607F3A15B367DEAFDDD24430249 /* Foundation.framework in Frameworks */,
+ CF04850F3DF1E9B1C22F59F9A881CA92 /* XCTest.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 564319DA63E0C4968134500131A020FE /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 427DB164362AB28B424EDBD75CE6B114 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5E705B70C45F13D3FE5FB652BB8BDD85 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 71F86F7C428FF4AA7A059F25EC87B033 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A6F04AF4E596D897E56105B7BB0A2CAF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3A8CC87DDEE0ADE5BD022FDF57E1A253 /* Pods-HamburgerButton_Tests */ = {
+ isa = PBXGroup;
+ children = (
+ 14824E604F439019DACCD607B0CA660E /* Info.plist */,
+ 257154AF1EC32B1CFF664D8EC2FDB636 /* Pods-HamburgerButton_Tests.modulemap */,
+ E248B6CF37B39A927724C986E981F7D8 /* Pods-HamburgerButton_Tests-acknowledgements.markdown */,
+ 62047B34C8834B6FEF7C1CFDF302EF07 /* Pods-HamburgerButton_Tests-acknowledgements.plist */,
+ 811B47B130BD9A62E09567FE8FCB0796 /* Pods-HamburgerButton_Tests-dummy.m */,
+ A86F994476C37044187A36076E71009B /* Pods-HamburgerButton_Tests-frameworks.sh */,
+ C0412153695F6CE8364A34919B830ABF /* Pods-HamburgerButton_Tests-resources.sh */,
+ 972947897347EFEE474238C017C40BD4 /* Pods-HamburgerButton_Tests-umbrella.h */,
+ 469D88E90A130481766EEE004A0925FD /* Pods-HamburgerButton_Tests.debug.xcconfig */,
+ 731545587BE276FB10A5586389E9CAF2 /* Pods-HamburgerButton_Tests.release.xcconfig */,
+ );
+ name = "Pods-HamburgerButton_Tests";
+ path = "Target Support Files/Pods-HamburgerButton_Tests";
+ sourceTree = "";
+ };
+ 40BE61F5DE3FFCAEFFC65F28BCCD5CA3 /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ BBD2ED9DD364515FF55A35B0F3C39A1A /* Classes */,
+ );
+ path = Pod;
+ sourceTree = "";
+ };
+ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 672D1320B537524AB3A5A6B59F3A0AB5 /* iOS */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 52AE899D8B5E82245C5406997506EDFD /* FBSnapshotTestCase */ = {
+ isa = PBXGroup;
+ children = (
+ 78B8B06429C9DADE35340BE6C4B7C020 /* Core */,
+ ECB35126A6E5AC04DA6E5CFD5988508A /* Support Files */,
+ C0D3A88223D43E2EE28E545D73C4CC1C /* SwiftSupport */,
+ );
+ path = FBSnapshotTestCase;
+ sourceTree = "";
+ };
+ 65A731238945A624B79D67A6022DFD6A /* Targets Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ E5BF7210C5519DA2AE7674A5C182273C /* Pods-HamburgerButton_Example */,
+ 3A8CC87DDEE0ADE5BD022FDF57E1A253 /* Pods-HamburgerButton_Tests */,
+ );
+ name = "Targets Support Files";
+ sourceTree = "";
+ };
+ 672D1320B537524AB3A5A6B59F3A0AB5 /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 4EE2B5000D752EF3F63A134C2C1960C4 /* Foundation.framework */,
+ 2F1AA8D42F800A1B996AF97D8B9FFE5B /* XCTest.framework */,
+ );
+ name = iOS;
+ sourceTree = "";
+ };
+ 78B8B06429C9DADE35340BE6C4B7C020 /* Core */ = {
+ isa = PBXGroup;
+ children = (
+ 6AD10D07B64816335D075D437A535566 /* FBSnapshotTestCase.h */,
+ 65F666C5D7446DD6572AB1616F1E30AA /* FBSnapshotTestCase.m */,
+ EFE04F01AB5AFE6DB969F3254FCA23AC /* FBSnapshotTestCasePlatform.h */,
+ 76F81BFFCB8C34D40F36B2C468207F69 /* FBSnapshotTestCasePlatform.m */,
+ 08CA195396AAF16773B02157E6038191 /* FBSnapshotTestController.h */,
+ B427624CBD5B62469F66AC43A5D82C7D /* FBSnapshotTestController.m */,
+ 77E23C46F71076CF4B5EACD488322C34 /* UIImage+Compare.h */,
+ C73CA62074D1BF9D22D7E47F3F05F04C /* UIImage+Compare.m */,
+ FF7CE48EFAD9A3CEA07D7F2958DC224F /* UIImage+Diff.h */,
+ BA47052B645BFA4E9EA2C1091C1B8C0B /* UIImage+Diff.m */,
+ 5A8F43B5A8C25FE501B3085B04E59978 /* UIImage+Snapshot.h */,
+ 9E19E3632FEF9B104B04B6B00253851C /* UIImage+Snapshot.m */,
+ );
+ name = Core;
+ sourceTree = "";
+ };
+ 7DB346D0F39D3F0E887471402A8071AB = {
+ isa = PBXGroup;
+ children = (
+ BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */,
+ DC8592AFE0A804EE0A7BE013E9E40E49 /* Development Pods */,
+ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */,
+ FBD2D672921284E66F309CA3462F84D6 /* Pods */,
+ CCA510CFBEA2D207524CDA0D73C3B561 /* Products */,
+ 65A731238945A624B79D67A6022DFD6A /* Targets Support Files */,
+ );
+ sourceTree = "";
+ };
+ A5D66CFA44F253AA421AEF649AC84EBD /* HamburgerButton */ = {
+ isa = PBXGroup;
+ children = (
+ 40BE61F5DE3FFCAEFFC65F28BCCD5CA3 /* Pod */,
+ B379CA72A7AB83E27136BD2BFE073B6C /* Support Files */,
+ );
+ name = HamburgerButton;
+ path = ../..;
+ sourceTree = "";
+ };
+ B379CA72A7AB83E27136BD2BFE073B6C /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 413DF9CB4DCDFF1505BAFA009CF49F27 /* HamburgerButton.modulemap */,
+ D5941B99E2DCD9F3DF38C30ED76BA164 /* HamburgerButton.xcconfig */,
+ CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */,
+ CDFDB417FCEBB965575338A496A1AAD4 /* HamburgerButton-dummy.m */,
+ BB24C554084930B91B11848797894844 /* HamburgerButton-prefix.pch */,
+ 05B5ECBFF76124646668783FA77197F6 /* HamburgerButton-umbrella.h */,
+ 947EDA8B98AB434928FAFC655DB528D6 /* Info.plist */,
+ );
+ name = "Support Files";
+ path = "Example/Pods/Target Support Files/HamburgerButton";
+ sourceTree = "";
+ };
+ BBD2ED9DD364515FF55A35B0F3C39A1A /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ 68A040D81B6F7A1100F5A8C9 /* LBHamburgerButton.h */,
+ 68A040D41B6F79F400F5A8C9 /* LBHamburgerButton.m */,
+ );
+ path = Classes;
+ sourceTree = "";
+ };
+ C0D3A88223D43E2EE28E545D73C4CC1C /* SwiftSupport */ = {
+ isa = PBXGroup;
+ children = (
+ AF425CDB60D53E7418590A03B490F634 /* SwiftSupport.swift */,
+ );
+ name = SwiftSupport;
+ sourceTree = "";
+ };
+ CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1DE8E61523E195B79AF379E1E7AF0D53 /* FBSnapshotTestCase.framework */,
+ B018B99C96DEFBF4E2115361CBFDA031 /* HamburgerButton.bundle */,
+ 9008155BDFCCA40E8323C0B32BD6C36B /* HamburgerButton.framework */,
+ 13F9DB71C70CA0E85A5F0547A3597E3C /* Pods_HamburgerButton_Example.framework */,
+ B6EE77B3672BAEABAA1B4DB3744A1B06 /* Pods_HamburgerButton_Tests.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ DC8592AFE0A804EE0A7BE013E9E40E49 /* Development Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A5D66CFA44F253AA421AEF649AC84EBD /* HamburgerButton */,
+ );
+ name = "Development Pods";
+ sourceTree = "";
+ };
+ E5BF7210C5519DA2AE7674A5C182273C /* Pods-HamburgerButton_Example */ = {
+ isa = PBXGroup;
+ children = (
+ 8B1CF639B3C3F3624FA206999B56B0F6 /* Info.plist */,
+ 6EDB3F182EE21701574EACF70E15271B /* Pods-HamburgerButton_Example.modulemap */,
+ 714626102659630456832C4A58C340DD /* Pods-HamburgerButton_Example-acknowledgements.markdown */,
+ E49543E9FC8F1146CEAFD27D68DB0A01 /* Pods-HamburgerButton_Example-acknowledgements.plist */,
+ 5F12C8BD763B2658352EF9AF2E657CC6 /* Pods-HamburgerButton_Example-dummy.m */,
+ 62ED241CD5B3D0C857D0D4547192F2A7 /* Pods-HamburgerButton_Example-frameworks.sh */,
+ EE231B86E665BE7FAA63E753D06321D4 /* Pods-HamburgerButton_Example-resources.sh */,
+ 9FCDBB94ED71F92D65F506A60ED28FCC /* Pods-HamburgerButton_Example-umbrella.h */,
+ E3F6C51A8C61821D51FB13B8CA1A6567 /* Pods-HamburgerButton_Example.debug.xcconfig */,
+ 5D95B12EE01FCD41FA1A4E2EE9EBCF9F /* Pods-HamburgerButton_Example.release.xcconfig */,
+ );
+ name = "Pods-HamburgerButton_Example";
+ path = "Target Support Files/Pods-HamburgerButton_Example";
+ sourceTree = "";
+ };
+ ECB35126A6E5AC04DA6E5CFD5988508A /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 4BD2D026071D7FD2BE689CCD1D3B9EF6 /* FBSnapshotTestCase.modulemap */,
+ E6AEF9CC1794C216962A1A9DE2B1B8BF /* FBSnapshotTestCase.xcconfig */,
+ 4C9DB4DA9DBEBDA43C5436275C4311D7 /* FBSnapshotTestCase-Private.xcconfig */,
+ 106F0533C6623B74EDB227C8FC027B8E /* FBSnapshotTestCase-dummy.m */,
+ A48AFAE54A63F3C0079D07FF3DA2DA1C /* FBSnapshotTestCase-prefix.pch */,
+ F468BFA5D26D1C563E9F8087AE7FDBD5 /* FBSnapshotTestCase-umbrella.h */,
+ ABBFB30F05A4EB2FE4F22CB71B966513 /* Info.plist */,
+ );
+ name = "Support Files";
+ path = "../Target Support Files/FBSnapshotTestCase";
+ sourceTree = "";
+ };
+ FBD2D672921284E66F309CA3462F84D6 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 52AE899D8B5E82245C5406997506EDFD /* FBSnapshotTestCase */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 2C8E797A4F24E32F97D3A0C66B53CE9B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 515E48BEDF072BF53F877B9D209C08A2 /* Pods-HamburgerButton_Example-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 406D8A5FA8E3D8ABA1A9CBCA1E325B3B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 122066F54AB32EC9C70FF010078E2BFC /* FBSnapshotTestCase-umbrella.h in Headers */,
+ A18AB0E0A6B41F384C48365498A7B99F /* FBSnapshotTestCase.h in Headers */,
+ 5A77C5F8806CD8AB6551AA900C5B903D /* FBSnapshotTestCasePlatform.h in Headers */,
+ 8058472FCDFCD7BC08B86B402703D764 /* FBSnapshotTestController.h in Headers */,
+ 705635138A2651EC4E1DDA39EB49F7E5 /* UIImage+Compare.h in Headers */,
+ 859A75A6F732CA92DDDAF17F8BD36EC3 /* UIImage+Diff.h in Headers */,
+ 779EEFAADC9462CC073AC24DF06C579E /* UIImage+Snapshot.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CF9BE5761ED9379693735214E191A342 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 68A040D91B6F7A1100F5A8C9 /* LBHamburgerButton.h in Headers */,
+ 70AF9768A079CE1332666E1F4DED6B90 /* HamburgerButton-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D389A034AB72F55BCA55C0CDB401A7A6 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A512A0FDCBA1411FFF43641017B586A2 /* Pods-HamburgerButton_Tests-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 1894885213A4F562D91EF8E37E3E2F5E /* Pods-HamburgerButton_Tests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 779076A281C41549230F89FBD1BB68C9 /* Build configuration list for PBXNativeTarget "Pods-HamburgerButton_Tests" */;
+ buildPhases = (
+ AC9854AC23BDD87634B62D5204F1C4D1 /* Sources */,
+ 5E705B70C45F13D3FE5FB652BB8BDD85 /* Frameworks */,
+ D389A034AB72F55BCA55C0CDB401A7A6 /* Headers */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 73690DAF65B31502BF0B5C24C45D9D37 /* PBXTargetDependency */,
+ B8B9E8D7823A879FE5350903C4B8042F /* PBXTargetDependency */,
+ );
+ name = "Pods-HamburgerButton_Tests";
+ productName = "Pods-HamburgerButton_Tests";
+ productReference = B6EE77B3672BAEABAA1B4DB3744A1B06 /* Pods_HamburgerButton_Tests.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ 835CA8410E338A12179CE4AE3052A2B2 /* Pods-HamburgerButton_Example */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = E31DCCDD46AA5BFFB60F517865EC7152 /* Build configuration list for PBXNativeTarget "Pods-HamburgerButton_Example" */;
+ buildPhases = (
+ 14BD130DED634CD187FD09647F6F8277 /* Sources */,
+ 564319DA63E0C4968134500131A020FE /* Frameworks */,
+ 2C8E797A4F24E32F97D3A0C66B53CE9B /* Headers */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ CD8759343A5133AF92F78B1CB6946272 /* PBXTargetDependency */,
+ );
+ name = "Pods-HamburgerButton_Example";
+ productName = "Pods-HamburgerButton_Example";
+ productReference = 13F9DB71C70CA0E85A5F0547A3597E3C /* Pods_HamburgerButton_Example.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ A5E3C8454E430B57F66B650B070436F8 /* FBSnapshotTestCase */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 402DF0CF18F8F970679E91754B3ADAA9 /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */;
+ buildPhases = (
+ 39972E59A680967AA2AF46CFDF9339D4 /* Sources */,
+ 2856E64C9B205FF009D405E755612CDF /* Frameworks */,
+ 406D8A5FA8E3D8ABA1A9CBCA1E325B3B /* Headers */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = FBSnapshotTestCase;
+ productName = FBSnapshotTestCase;
+ productReference = 1DE8E61523E195B79AF379E1E7AF0D53 /* FBSnapshotTestCase.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ B38D24EE87757ECA2870EA6F2B1714AD /* HamburgerButton-HamburgerButton */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1839BAC4FC28918A9A881273CB516A92 /* Build configuration list for PBXNativeTarget "HamburgerButton-HamburgerButton" */;
+ buildPhases = (
+ E383DCCB69DA7D629DA43096D05C68E9 /* Sources */,
+ A6F04AF4E596D897E56105B7BB0A2CAF /* Frameworks */,
+ CE0472F3FD7D06F1A1EF619A53C1BBFE /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "HamburgerButton-HamburgerButton";
+ productName = "HamburgerButton-HamburgerButton";
+ productReference = B018B99C96DEFBF4E2115361CBFDA031 /* HamburgerButton.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
+ E8A2E331B17AB8F4B78978C1A9170187 /* HamburgerButton */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A5886673B63068CE7318380CA4706C05 /* Build configuration list for PBXNativeTarget "HamburgerButton" */;
+ buildPhases = (
+ CB425D55471D032B5CDC0A2C3CEB2068 /* Sources */,
+ 1B54F50D61A801D84473A578EAA23648 /* Frameworks */,
+ CD6E0D3A855D1C059FF5FB40EC530547 /* Resources */,
+ CF9BE5761ED9379693735214E191A342 /* Headers */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B1EF3BE72F15D0F792823CCE6B179AA9 /* PBXTargetDependency */,
+ );
+ name = HamburgerButton;
+ productName = HamburgerButton;
+ productReference = 9008155BDFCCA40E8323C0B32BD6C36B /* HamburgerButton.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0700;
+ LastUpgradeCheck = 0700;
+ };
+ buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
+ productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ A5E3C8454E430B57F66B650B070436F8 /* FBSnapshotTestCase */,
+ E8A2E331B17AB8F4B78978C1A9170187 /* HamburgerButton */,
+ B38D24EE87757ECA2870EA6F2B1714AD /* HamburgerButton-HamburgerButton */,
+ 835CA8410E338A12179CE4AE3052A2B2 /* Pods-HamburgerButton_Example */,
+ 1894885213A4F562D91EF8E37E3E2F5E /* Pods-HamburgerButton_Tests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ CD6E0D3A855D1C059FF5FB40EC530547 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0B7F951B9C84228107DCF5FE532990C7 /* HamburgerButton.bundle in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CE0472F3FD7D06F1A1EF619A53C1BBFE /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 14BD130DED634CD187FD09647F6F8277 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 00C5ED9602D45B2B9AB3A61AD6085BD4 /* Pods-HamburgerButton_Example-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 39972E59A680967AA2AF46CFDF9339D4 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D8916754747FBAF3A987C07826AA8FA8 /* FBSnapshotTestCase-dummy.m in Sources */,
+ 90E1FD3A190769CEA0B63504D88C7DDF /* FBSnapshotTestCase.m in Sources */,
+ 7163D6C2D4E42DE2E0030D74736DEA86 /* FBSnapshotTestCasePlatform.m in Sources */,
+ FF4A2B692DF2C6B70CFCC181FAFD42A8 /* FBSnapshotTestController.m in Sources */,
+ 17FF1BF851F42CCE7CEA1A3573781AF4 /* SwiftSupport.swift in Sources */,
+ 8CB94E6CEB3C70DA9A522B69D44377C6 /* UIImage+Compare.m in Sources */,
+ 7BC6D15A2C4F2757D7164D9973F56BBD /* UIImage+Diff.m in Sources */,
+ BBCB339B6876210CB81CDC8C2AEF8708 /* UIImage+Snapshot.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ AC9854AC23BDD87634B62D5204F1C4D1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 77D493B12A413B4971E66AEBD2DF7384 /* Pods-HamburgerButton_Tests-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CB425D55471D032B5CDC0A2C3CEB2068 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C0B7165ADF9662081DE5A260FC9C6824 /* HamburgerButton-dummy.m in Sources */,
+ 68A040D61B6F79F400F5A8C9 /* LBHamburgerButton.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ E383DCCB69DA7D629DA43096D05C68E9 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 73690DAF65B31502BF0B5C24C45D9D37 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = FBSnapshotTestCase;
+ target = A5E3C8454E430B57F66B650B070436F8 /* FBSnapshotTestCase */;
+ targetProxy = 5DF05D6F9EB5D29D19D96CD8E09D73F8 /* PBXContainerItemProxy */;
+ };
+ B1EF3BE72F15D0F792823CCE6B179AA9 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "HamburgerButton-HamburgerButton";
+ target = B38D24EE87757ECA2870EA6F2B1714AD /* HamburgerButton-HamburgerButton */;
+ targetProxy = BCED431185E74B90B6ED5A0FD8752218 /* PBXContainerItemProxy */;
+ };
+ B8B9E8D7823A879FE5350903C4B8042F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = HamburgerButton;
+ target = E8A2E331B17AB8F4B78978C1A9170187 /* HamburgerButton */;
+ targetProxy = 80E80952A2808DFD37A99A68D92A6FCB /* PBXContainerItemProxy */;
+ };
+ CD8759343A5133AF92F78B1CB6946272 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = HamburgerButton;
+ target = E8A2E331B17AB8F4B78978C1A9170187 /* HamburgerButton */;
+ targetProxy = 896664CAA6BBF4886DA07AF20DD2A5A8 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 03CA91998D6773EC5D02B3DB87B8353E /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1";
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ STRIP_INSTALLED_PRODUCT = NO;
+ SYMROOT = "${SRCROOT}/../build";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 0B57334D6C23DADAA4F7D802A5760EB2 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ ONLY_ACTIVE_ARCH = YES;
+ STRIP_INSTALLED_PRODUCT = NO;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Debug;
+ };
+ 1E73431A253C332B71E004A30EBF9224 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E3F6C51A8C61821D51FB13B8CA1A6567 /* Pods-HamburgerButton_Example.debug.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ INFOPLIST_FILE = "Target Support Files/Pods-HamburgerButton_Example/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.modulemap";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_NAME = Pods_HamburgerButton_Example;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 52B566C968256DA4F6E14D86623FF392 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 469D88E90A130481766EEE004A0925FD /* Pods-HamburgerButton_Tests.debug.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ INFOPLIST_FILE = "Target Support Files/Pods-HamburgerButton_Tests/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.modulemap";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_NAME = Pods_HamburgerButton_Tests;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 541CF04F57DBC0A4C56518DECACC621A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 731545587BE276FB10A5586389E9CAF2 /* Pods-HamburgerButton_Tests.release.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ INFOPLIST_FILE = "Target Support Files/Pods-HamburgerButton_Tests/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.modulemap";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_NAME = Pods_HamburgerButton_Tests;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ 62B0A04D8B13C57BE6E5204F9BFCD976 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 0.1.0;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 0.1.0;
+ DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_PREFIX_HEADER = "Target Support Files/HamburgerButton/HamburgerButton-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/HamburgerButton/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/HamburgerButton/HamburgerButton.modulemap";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_NAME = HamburgerButton;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ 7ED677F20E4DD731C8698E44C60C7BDA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */;
+ buildSettings = {
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ PRODUCT_NAME = HamburgerButton;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ 7FC9F47C973C41C10CBBAB8624EA1025 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 0.1.0;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 0.1.0;
+ DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_PREFIX_HEADER = "Target Support Files/HamburgerButton/HamburgerButton-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/HamburgerButton/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/HamburgerButton/HamburgerButton.modulemap";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ PRODUCT_NAME = HamburgerButton;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 92CFA2F50A90ECA8CB3DDEE37FED101D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4C9DB4DA9DBEBDA43C5436275C4311D7 /* FBSnapshotTestCase-Private.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 2.0.3;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 2;
+ DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_NAME = FBSnapshotTestCase;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ 9DAC6577D0C56D618DE1F8F282AD6FC9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4C9DB4DA9DBEBDA43C5436275C4311D7 /* FBSnapshotTestCase-Private.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 2.0.3;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 2;
+ DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)";
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ PRODUCT_NAME = FBSnapshotTestCase;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ B8B02B951F2A5DAD755F9E690DCFAFEF /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5D95B12EE01FCD41FA1A4E2EE9EBCF9F /* Pods-HamburgerButton_Example.release.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ INFOPLIST_FILE = "Target Support Files/Pods-HamburgerButton_Example/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MODULEMAP_FILE = "Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.modulemap";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_NAME = Pods_HamburgerButton_Example;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ EB403428C48336B397FF764ECA6AF4AF /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = CD2E0510976255F0AEA88974A5B7E8F8 /* HamburgerButton-Private.xcconfig */;
+ buildSettings = {
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ PRODUCT_NAME = HamburgerButton;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1839BAC4FC28918A9A881273CB516A92 /* Build configuration list for PBXNativeTarget "HamburgerButton-HamburgerButton" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7ED677F20E4DD731C8698E44C60C7BDA /* Debug */,
+ EB403428C48336B397FF764ECA6AF4AF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0B57334D6C23DADAA4F7D802A5760EB2 /* Debug */,
+ 03CA91998D6773EC5D02B3DB87B8353E /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 402DF0CF18F8F970679E91754B3ADAA9 /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 9DAC6577D0C56D618DE1F8F282AD6FC9 /* Debug */,
+ 92CFA2F50A90ECA8CB3DDEE37FED101D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 779076A281C41549230F89FBD1BB68C9 /* Build configuration list for PBXNativeTarget "Pods-HamburgerButton_Tests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 52B566C968256DA4F6E14D86623FF392 /* Debug */,
+ 541CF04F57DBC0A4C56518DECACC621A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A5886673B63068CE7318380CA4706C05 /* Build configuration list for PBXNativeTarget "HamburgerButton" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7FC9F47C973C41C10CBBAB8624EA1025 /* Debug */,
+ 62B0A04D8B13C57BE6E5204F9BFCD976 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ E31DCCDD46AA5BFFB60F517865EC7152 /* Build configuration list for PBXNativeTarget "Pods-HamburgerButton_Example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1E73431A253C332B71E004A30EBF9224 /* Debug */,
+ B8B02B951F2A5DAD755F9E690DCFAFEF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+}
diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/HamburgerButton.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/HamburgerButton.xcscheme
new file mode 100644
index 0000000..9719dff
--- /dev/null
+++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/HamburgerButton.xcscheme
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-Private.xcconfig b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-Private.xcconfig
new file mode 100644
index 0000000..ee5af94
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-Private.xcconfig
@@ -0,0 +1,8 @@
+#include "FBSnapshotTestCase.xcconfig"
+FRAMEWORK_SEARCH_PATHS = ${FBSNAPSHOTTESTCASE_FRAMEWORK_SEARCH_PATHS}
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public"
+OTHER_LDFLAGS = ${FBSNAPSHOTTESTCASE_OTHER_LDFLAGS}
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_ROOT = ${SRCROOT}
+SKIP_INSTALL = YES
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m
new file mode 100644
index 0000000..fb0c8fe
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_FBSnapshotTestCase : NSObject
+@end
+@implementation PodsDummy_FBSnapshotTestCase
+@end
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch
new file mode 100644
index 0000000..aa992a4
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch
@@ -0,0 +1,4 @@
+#ifdef __OBJC__
+#import
+#endif
+
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h
new file mode 100644
index 0000000..be5b7d7
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h
@@ -0,0 +1,14 @@
+#import
+
+#import "FBSnapshotTestCase.h"
+#import "FBSnapshotTestCasePlatform.h"
+#import "UIImage+Compare.h"
+#import "UIImage+Diff.h"
+#import "UIImage+Snapshot.h"
+#import "FBSnapshotTestCase.h"
+#import "FBSnapshotTestCasePlatform.h"
+#import "FBSnapshotTestController.h"
+
+FOUNDATION_EXPORT double FBSnapshotTestCaseVersionNumber;
+FOUNDATION_EXPORT const unsigned char FBSnapshotTestCaseVersionString[];
+
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap
new file mode 100644
index 0000000..3acac2d
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap
@@ -0,0 +1,8 @@
+framework module FBSnapshotTestCase {
+ umbrella header "FBSnapshotTestCase-umbrella.h"
+
+ export *
+ module * { export * }
+
+ private header "FBSnapshotTestController.h"
+}
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig
new file mode 100644
index 0000000..3906fc0
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig
@@ -0,0 +1,2 @@
+FBSNAPSHOTTESTCASE_FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(PLATFORM_DIR)/Developer/Library/Frameworks"
+FBSNAPSHOTTESTCASE_OTHER_LDFLAGS = -framework "XCTest"
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist b/Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist
new file mode 100644
index 0000000..1151db3
--- /dev/null
+++ b/Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 2.0.3
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-Private.xcconfig b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-Private.xcconfig
new file mode 100644
index 0000000..3557e69
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-Private.xcconfig
@@ -0,0 +1,5 @@
+#include "HamburgerButton.xcconfig"
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/HamburgerButton" "${PODS_ROOT}/Headers/Public"
+PODS_ROOT = ${SRCROOT}
+SKIP_INSTALL = YES
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-dummy.m b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-dummy.m
new file mode 100644
index 0000000..a3319d1
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_HamburgerButton : NSObject
+@end
+@implementation PodsDummy_HamburgerButton
+@end
diff --git a/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-prefix.pch b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-prefix.pch
new file mode 100644
index 0000000..aa992a4
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-prefix.pch
@@ -0,0 +1,4 @@
+#ifdef __OBJC__
+#import
+#endif
+
diff --git a/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-umbrella.h b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-umbrella.h
new file mode 100644
index 0000000..2748ac6
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton-umbrella.h
@@ -0,0 +1,6 @@
+#import
+
+
+FOUNDATION_EXPORT double HamburgerButtonVersionNumber;
+FOUNDATION_EXPORT const unsigned char HamburgerButtonVersionString[];
+
diff --git a/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton.modulemap b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton.modulemap
new file mode 100644
index 0000000..3d5ab7e
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton.modulemap
@@ -0,0 +1,6 @@
+framework module HamburgerButton {
+ umbrella header "HamburgerButton-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Pod/Classes/ReplaceMe.m b/Example/Pods/Target Support Files/HamburgerButton/HamburgerButton.xcconfig
similarity index 100%
rename from Pod/Classes/ReplaceMe.m
rename to Example/Pods/Target Support Files/HamburgerButton/HamburgerButton.xcconfig
diff --git a/Example/Pods/Target Support Files/HamburgerButton/Info.plist b/Example/Pods/Target Support Files/HamburgerButton/Info.plist
new file mode 100644
index 0000000..4ba5fa2
--- /dev/null
+++ b/Example/Pods/Target Support Files/HamburgerButton/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 0.1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Info.plist b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Info.plist
new file mode 100644
index 0000000..6974542
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.markdown
new file mode 100644
index 0000000..638fc8e
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.markdown
@@ -0,0 +1,26 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+
+## HamburgerButton
+
+Copyright (c) 2015 Giuseppe Nucifora
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Generated by CocoaPods - http://cocoapods.org
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.plist
new file mode 100644
index 0000000..3738df1
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-acknowledgements.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Copyright (c) 2015 Giuseppe Nucifora <me@giuseppenucifora.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+ Title
+ HamburgerButton
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - http://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-dummy.m b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-dummy.m
new file mode 100644
index 0000000..72986bf
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_HamburgerButton_Example : NSObject
+@end
+@implementation PodsDummy_Pods_HamburgerButton_Example
+@end
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-frameworks.sh
new file mode 100755
index 0000000..3faca6a
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-frameworks.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+set -e
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ else
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ fi
+
+ local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # use filter instead of exclude so missing patterns dont' throw errors
+ echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries
+ local basename
+ basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\""
+ /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1"
+ fi
+}
+
+
+if [[ "$CONFIGURATION" == "Debug" ]]; then
+ install_framework 'Pods-HamburgerButton_Example/HamburgerButton.framework'
+fi
+if [[ "$CONFIGURATION" == "Release" ]]; then
+ install_framework 'Pods-HamburgerButton_Example/HamburgerButton.framework'
+fi
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-resources.sh b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-resources.sh
new file mode 100755
index 0000000..ea685a2
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-resources.sh
@@ -0,0 +1,95 @@
+#!/bin/sh
+set -e
+
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+realpath() {
+ DIRECTORY="$(cd "${1%/*}" && pwd)"
+ FILENAME="${1##*/}"
+ echo "$DIRECTORY/$FILENAME"
+}
+
+install_resource()
+{
+ case $1 in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.framework)
+ echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\""
+ xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1")
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ /*)
+ echo "$1"
+ echo "$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ *)
+ echo "${PODS_ROOT}/$1"
+ echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
+then
+ case "${TARGETED_DEVICE_FAMILY}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+ esac
+
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "`realpath $PODS_ROOT`*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-umbrella.h
new file mode 100644
index 0000000..35bf7b5
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example-umbrella.h
@@ -0,0 +1,6 @@
+#import
+
+
+FOUNDATION_EXPORT double Pods_HamburgerButton_ExampleVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_HamburgerButton_ExampleVersionString[];
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.debug.xcconfig
new file mode 100644
index 0000000..8dca83a
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.debug.xcconfig
@@ -0,0 +1,6 @@
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/HamburgerButton.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "HamburgerButton"
+PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-HamburgerButton_Example
+PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.modulemap b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.modulemap
new file mode 100644
index 0000000..b35a90a
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_HamburgerButton_Example {
+ umbrella header "Pods-HamburgerButton_Example-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.release.xcconfig
new file mode 100644
index 0000000..8dca83a
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Example/Pods-HamburgerButton_Example.release.xcconfig
@@ -0,0 +1,6 @@
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/HamburgerButton.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "HamburgerButton"
+PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-HamburgerButton_Example
+PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Info.plist
new file mode 100644
index 0000000..6974542
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.markdown
new file mode 100644
index 0000000..3d1ef54
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.markdown
@@ -0,0 +1,59 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+
+## HamburgerButton
+
+Copyright (c) 2015 Giuseppe Nucifora
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+## FBSnapshotTestCase
+
+BSD License
+
+For the FBSnapshotTestCase software
+
+Copyright (c) 2013, Facebook, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name Facebook nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Generated by CocoaPods - http://cocoapods.org
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.plist
new file mode 100644
index 0000000..34ffd19
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-acknowledgements.plist
@@ -0,0 +1,93 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Copyright (c) 2015 Giuseppe Nucifora <me@giuseppenucifora.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+ Title
+ HamburgerButton
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ BSD License
+
+For the FBSnapshotTestCase software
+
+Copyright (c) 2013, Facebook, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name Facebook nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Title
+ FBSnapshotTestCase
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - http://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-dummy.m
new file mode 100644
index 0000000..edee3ba
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_HamburgerButton_Tests : NSObject
+@end
+@implementation PodsDummy_Pods_HamburgerButton_Tests
+@end
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-frameworks.sh
new file mode 100755
index 0000000..2c4a9eb
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-frameworks.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ else
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ fi
+
+ local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # use filter instead of exclude so missing patterns dont' throw errors
+ echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries
+ local basename
+ basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\""
+ /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1"
+ fi
+}
+
+
+if [[ "$CONFIGURATION" == "Debug" ]]; then
+ install_framework 'Pods-HamburgerButton_Tests/HamburgerButton.framework'
+ install_framework 'Pods-HamburgerButton_Tests/FBSnapshotTestCase.framework'
+fi
+if [[ "$CONFIGURATION" == "Release" ]]; then
+ install_framework 'Pods-HamburgerButton_Tests/HamburgerButton.framework'
+ install_framework 'Pods-HamburgerButton_Tests/FBSnapshotTestCase.framework'
+fi
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-resources.sh
new file mode 100755
index 0000000..ea685a2
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-resources.sh
@@ -0,0 +1,95 @@
+#!/bin/sh
+set -e
+
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+realpath() {
+ DIRECTORY="$(cd "${1%/*}" && pwd)"
+ FILENAME="${1##*/}"
+ echo "$DIRECTORY/$FILENAME"
+}
+
+install_resource()
+{
+ case $1 in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.framework)
+ echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\""
+ xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1")
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ /*)
+ echo "$1"
+ echo "$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ *)
+ echo "${PODS_ROOT}/$1"
+ echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
+then
+ case "${TARGETED_DEVICE_FAMILY}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+ esac
+
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "`realpath $PODS_ROOT`*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-umbrella.h
new file mode 100644
index 0000000..314552f
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests-umbrella.h
@@ -0,0 +1,6 @@
+#import
+
+
+FOUNDATION_EXPORT double Pods_HamburgerButton_TestsVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_HamburgerButton_TestsVersionString[];
+
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.debug.xcconfig
new file mode 100644
index 0000000..b648f45
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.debug.xcconfig
@@ -0,0 +1,7 @@
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/FBSnapshotTestCase.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/HamburgerButton.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" -framework "HamburgerButton"
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-HamburgerButton_Tests
+PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.modulemap b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.modulemap
new file mode 100644
index 0000000..1f0dfdd
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_HamburgerButton_Tests {
+ umbrella header "Pods-HamburgerButton_Tests-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.release.xcconfig
new file mode 100644
index 0000000..b648f45
--- /dev/null
+++ b/Example/Pods/Target Support Files/Pods-HamburgerButton_Tests/Pods-HamburgerButton_Tests.release.xcconfig
@@ -0,0 +1,7 @@
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/FBSnapshotTestCase.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/HamburgerButton.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" -framework "HamburgerButton"
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-HamburgerButton_Tests
+PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file
diff --git a/HamburgerButton.podspec b/HamburgerButton.podspec
index da7ca33..026cbfa 100644
--- a/HamburgerButton.podspec
+++ b/HamburgerButton.podspec
@@ -10,18 +10,14 @@
Pod::Spec.new do |s|
s.name = "HamburgerButton"
s.version = "0.1.0"
- s.summary = "A short description of HamburgerButton."
- s.description = <<-DESC
- An optional longer description of HamburgerButton
+ s.summary = "Is a fork of original repository https://github.com/luongbang152/HamburgerButton with Pod support"
+s.description = "LBHamburgerButton is an iOS control that displays 3 lines (hamburger) and other icon (back, close...) without using image. It has a beautiful, clean and smooth transition between 2 state like Google Material Design or \"close button\" of Paper app."
- * Markdown format.
- * Don't worry about the indent, we strip it!
- DESC
- s.homepage = "https://github.com//HamburgerButton"
+ s.homepage = "https://github.com/giuseppenucifora/HamburgerButton"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
- s.author = { "Giuseppe Nucifora" => "me@giuseppenucifora.com" }
- s.source = { :git => "https://github.com//HamburgerButton.git", :tag => s.version.to_s }
+ s.author = { "Giuseppe Nucifora" => "Giuseppe Nucifora" }
+ s.source = { :git => "https://github.com/giuseppenucifora/HamburgerButton.git", :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/'
s.platform = :ios, '7.0'
@@ -33,6 +29,6 @@ Pod::Spec.new do |s|
}
# s.public_header_files = 'Pod/Classes/**/*.h'
- # s.frameworks = 'UIKit', 'MapKit'
+ s.frameworks = 'QuartzCore'
# s.dependency 'AFNetworking', '~> 2.3'
end
diff --git a/Pod/Classes/LBHamburgerButton.h b/Pod/Classes/LBHamburgerButton.h
new file mode 100644
index 0000000..6dd2004
--- /dev/null
+++ b/Pod/Classes/LBHamburgerButton.h
@@ -0,0 +1,156 @@
+//
+// LBHamburgerButton.h
+// Version 1.0
+//
+// Created by Bang Nguyen on 26/07/2014.
+//
+
+// This code is distributed under the terms and conditions of the MIT license.
+
+// Copyright (c) 2014 Bang Nguyen
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#import
+#import
+
+typedef enum {
+ /** Show back (<-) button after switch state/animate. */
+ LBHamburgerButtonTypeBackButton = 0,
+ /** Show close (X) button after switch state/animate. */
+ LBHamburgerButtonTypeCloseButton
+
+ // other type
+
+} LBHamburgerButtonType;
+
+typedef enum {
+ /** Initialize state, with 3 lines (hamburger). */
+ LBHamburgerButtonStateHamburger = 0,
+ /** State happened after animate. */
+ LBHamburgerButtonStateNotHamburger
+} LBHamburgerButtonState;
+
+/**
+ * LBHamburgerButton is a sub-class of UIButton, displays a hamburger button
+ * and other state button without using image
+ *
+ * This is a simple button with 2 state. At initialization, it has state "Hamburger"
+ * which means 3 lines. After switch state, it has state "Not hamburger" and
+ * displays a back button/a close button.
+ *
+ * This button support 2 type:
+ * - LBHamburgerButtonTypeBackButton - display <- after switch state
+ * - LBHamburgerButtonTypeCloseButton - display X after switch state
+ *
+ * Those type can be setted when initialization or manually at any time/any event.
+ *
+ */
+@interface LBHamburgerButton : UIButton
+
+/**
+ * Current state of hamburger button.
+ */
+@property (readonly) LBHamburgerButtonState hamburgerState;
+
+/**
+ * Type of hamburger button.
+ */
+@property LBHamburgerButtonType hamburgerType;
+
+/**
+ * Time for animation. Default is 0.5f.
+ */
+@property CFTimeInterval hamburgerAnimationDuration;
+
+/**
+ * Full contructor that initializes the button with default state.
+ *
+ * @param frame Frame of the button in superview.
+ * @param type Type of button, Back or Close or etc.
+ * @param lineWidth Width of each line in hamburger.
+ * @param lineHeight Height of each line in hamburger.
+ * @param lineSpacing Distance between lines.
+ * @param lineCenter Position of 2nd line in hamburger (which means center of group of 3)
+ * @param color Color of lines.
+ *
+ */
+- (instancetype)initWithFrame:(CGRect)frame
+ withHamburgerType:(LBHamburgerButtonType)type
+ lineWidth:(CGFloat)lineWidth
+ lineHeight:(CGFloat)lineHeight
+ lineSpacing:(CGFloat)lineSpacing
+ lineCenter:(CGPoint)lineCenter
+ color:(UIColor*)color;
+
+/**
+ * Set up default state of button which has 3 lines.
+ *
+ * @param type Type of button, Back or Close or etc.
+ * @param lineWidth Width of each line in hamburger.
+ * @param lineHeight Height of each line in hamburger.
+ * @param lineSpacing Distance between lines.
+ * @param lineCenter Position of 2nd line in hamburger (which means center of group of 3)
+ * @param color Color of lines.
+ *
+ */
+- (void)setUpHamburgerWithType:(LBHamburgerButtonType)type
+ lineWidth:(CGFloat)lineWidth
+ lineHeight:(CGFloat)lineHeight
+ lineSpacing:(CGFloat)lineSpacing
+ lineCenter:(CGPoint)lineCenter
+ color:(UIColor*)color;
+
+/**
+ * Animate from current state to other state.
+ */
+- (void)switchState;
+
+/**
+ * Animate from current state to specfied state.
+ */
+- (void)setState:(LBHamburgerButtonState)state;
+
+@end
+
+/**
+ * Supporting category of CALayer
+ */
+@interface CALayer (LBAddAnimationAndValue)
+
+/**
+ * Add both animation and its end value to CALayer
+ */
+- (void)addAnimation:(CAAnimation *)anim andValue:(NSValue*)value forKeyPath:(NSString *)keyPath;
+
+@end
+
+/**
+ * Supporting category of UIBezierPath
+ * Helps creating a curve path for animation
+ */
+@interface UIBezierPath (LBAnimateBezierPath)
+
+/**
+ * Create a curve path with ease
+ */
++ (UIBezierPath*)animateBezierPathFrom:(CGPoint)startPoint toPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
+
+@end
+
diff --git a/Pod/Classes/LBHamburgerButton.m b/Pod/Classes/LBHamburgerButton.m
new file mode 100644
index 0000000..173fd76
--- /dev/null
+++ b/Pod/Classes/LBHamburgerButton.m
@@ -0,0 +1,274 @@
+//
+// LBHamburgerButton.m
+// HamburgerButton
+//
+// Created by Bang Nguyen on 26/07/2014.
+// Copyright (c) Năm 2014 Bang Nguyen. All rights reserved.
+//
+
+#import "LBHamburgerButton.h"
+
+@interface LBHamburgerButton () {
+
+ CGFloat _lineHeight, _lineWidth, _lineSpacing;
+ CGPoint _lineCenter;
+ NSArray* _lineArray;
+ BOOL _lineCreated;
+
+}
+
+@end
+
+@implementation LBHamburgerButton
+
+#pragma mark -
+#pragma mark - Public functions
+
+- (instancetype)initWithFrame:(CGRect)frame withHamburgerType:(LBHamburgerButtonType)type lineWidth:(CGFloat)lineWidth lineHeight:(CGFloat)lineHeight lineSpacing:(CGFloat)lineSpacing lineCenter:(CGPoint)lineCenter color:(UIColor *)color {
+
+ if (self = [super initWithFrame:frame]) {
+
+ _hamburgerAnimationDuration = 0.5;
+ _hamburgerState = LBHamburgerButtonStateHamburger;
+
+ [self setUpHamburgerWithType:type
+ lineWidth:lineWidth
+ lineHeight:lineHeight
+ lineSpacing:lineSpacing
+ lineCenter:lineCenter
+ color:color];
+ }
+ return self;
+}
+
+- (void)setUpHamburgerWithType:(LBHamburgerButtonType)type lineWidth:(CGFloat)lineWidth lineHeight:(CGFloat)lineHeight lineSpacing:(CGFloat)lineSpacing lineCenter:(CGPoint)lineCenter color:(UIColor *)color {
+
+ if (_lineCreated) {
+ // Lines have been created, do nothing.
+ return;
+ }
+
+ _hamburgerType = type;
+ _lineWidth = lineWidth;
+ _lineHeight = lineHeight;
+ _lineSpacing = lineSpacing;
+ _lineCenter = lineCenter;
+
+ CAShapeLayer* topLine = [self createLayerWithFrame:CGRectMake(0, 0, lineWidth, lineHeight) andColor:color atPosition:CGPointMake(lineCenter.x, lineCenter.y - lineHeight - lineSpacing)];
+ CAShapeLayer* middleLine = [self createLayerWithFrame:CGRectMake(0, 0, lineWidth, lineHeight) andColor:color atPosition:lineCenter];
+ CAShapeLayer* bottomLine = [self createLayerWithFrame:CGRectMake(0, 0, lineWidth, lineHeight) andColor:color atPosition:CGPointMake(lineCenter.x, lineCenter.y + lineHeight + lineSpacing)];
+
+ _lineArray = @[ topLine, middleLine, bottomLine ];
+ for (CAShapeLayer* layer in _lineArray) {
+ [self.layer addSublayer:layer];
+ }
+ _lineCreated = YES;
+}
+
+- (void)switchState {
+ [self animateButtonForward:(_hamburgerState == LBHamburgerButtonStateHamburger)];
+ _hamburgerState = (_hamburgerState == LBHamburgerButtonStateHamburger) ? LBHamburgerButtonStateNotHamburger : LBHamburgerButtonStateHamburger;
+}
+
+-(void)setState:(LBHamburgerButtonState)state
+{
+ if(_hamburgerState == state)
+ return;
+ else
+ [self switchState];
+}
+
+#pragma mark -
+#pragma mark - Private functions
+
+- (void)animateButtonForward:(BOOL)forward {
+
+ NSArray* anims = @[ [self keyframeAnimationsOfLineIndex:0 forward:forward],
+ [self keyframeAnimationsOfLineIndex:1 forward:forward],
+ [self keyframeAnimationsOfLineIndex:2 forward:forward] ];
+
+ [CATransaction begin];
+ [CATransaction setAnimationDuration:_hamburgerAnimationDuration];
+ [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithControlPoints:0.4 :0.0 :0.2 :1.0]];
+
+ for (NSArray* animations in anims) {
+ NSInteger index = [anims indexOfObject:animations];
+ for (CAKeyframeAnimation* anim in animations) {
+ CAShapeLayer* layer = _lineArray[index];
+ if (!anim.removedOnCompletion) {
+ [layer addAnimation:anim forKey:anim.keyPath];
+ } else {
+ [layer addAnimation:anim andValue:anim.values.lastObject forKeyPath:anim.keyPath];
+ }
+ }
+ }
+
+ [CATransaction commit];
+}
+
+- (NSArray*)keyframeAnimationsOfLineIndex:(NSInteger)index forward:(BOOL)forward {
+
+ switch (_hamburgerType) {
+ case LBHamburgerButtonTypeBackButton:
+ {
+ switch (index) {
+ case 0:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(M_PI*5/4) ] : @[ @(M_PI*5/4), @0];
+ animRotate.calculationMode = kCAAnimationCubic;
+ animRotate.keyTimes = @[ @0, @0.33, @0.73, @1.0];
+
+ CGPoint startPoint = forward ? CGPointMake(_lineCenter.x, _lineCenter.y - _lineHeight - _lineSpacing) : CGPointMake(_lineCenter.x - [self scale:10], _lineCenter.y + _lineHeight + [self scale:7.2]);
+ CGPoint endPoint = forward ? CGPointMake(_lineCenter.x - [self scale:10], _lineCenter.y + _lineHeight + [self scale:7.2]) : CGPointMake(_lineCenter.x, _lineCenter.y - _lineHeight - _lineSpacing);
+ CGPoint controlPoint = CGPointMake(_lineCenter.x + [self scale:15], _lineCenter.y);
+
+ CAKeyframeAnimation* animPosition = [CAKeyframeAnimation animationWithKeyPath:@"position"];
+ animPosition.path = [UIBezierPath animateBezierPathFrom:startPoint toPoint:endPoint controlPoint:controlPoint].CGPath;
+ animPosition.removedOnCompletion = NO;
+ animPosition.fillMode = kCAFillModeForwards;
+
+ return @[ animRotate, animPosition ];
+ }
+ case 1:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(M_PI) ] : @[ @(M_PI), @0];
+
+ return @[ animRotate ];
+ }
+ case 2:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(-M_PI*5/4) ] : @[ @(-M_PI*5/4), @0];
+ animRotate.calculationMode = kCAAnimationCubic;
+ animRotate.keyTimes = @[ @0, @0.33, @0.73, @1.0];
+
+ CGPoint startPoint = forward ? CGPointMake(_lineCenter.x, _lineCenter.y + _lineHeight + _lineSpacing) : CGPointMake(_lineCenter.x - [self scale:10], _lineCenter.y - _lineHeight - [self scale:7.2]);
+ CGPoint endPoint = forward ? CGPointMake(_lineCenter.x - [self scale:10], _lineCenter.y - _lineHeight - [self scale:7.2]) : CGPointMake(_lineCenter.x, _lineCenter.y + _lineHeight + _lineSpacing);
+ CGPoint controlPoint = CGPointMake(_lineCenter.x + [self scale:15], _lineCenter.y);
+
+ CAKeyframeAnimation* animPosition = [CAKeyframeAnimation animationWithKeyPath:@"position"];
+ animPosition.path = [UIBezierPath animateBezierPathFrom:startPoint toPoint:endPoint controlPoint:controlPoint].CGPath;
+ animPosition.removedOnCompletion = NO;
+ animPosition.fillMode = kCAFillModeForwards;
+
+ return @[ animRotate, animPosition ];
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ case LBHamburgerButtonTypeCloseButton:
+ {
+ switch (index) {
+ case 0:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(-M_PI*5/4) ] : @[ @(-M_PI*5/4), @0];
+ animRotate.calculationMode = kCAAnimationCubic;
+ animRotate.keyTimes = @[ @0, @0.33, @0.73, @1.0];
+
+ CGPoint startPoint = forward ? CGPointMake(_lineCenter.x, _lineCenter.y - _lineHeight - _lineSpacing) : _lineCenter;
+ CGPoint endPoint = forward ? _lineCenter : CGPointMake(_lineCenter.x, _lineCenter.y - _lineHeight - _lineSpacing);
+ CGPoint controlPoint = CGPointMake(_lineCenter.x + [self scale:20], _lineCenter.y - _lineHeight - [self scale:5]);
+
+ CAKeyframeAnimation* animPosition = [CAKeyframeAnimation animationWithKeyPath:@"position"];
+ animPosition.path = [UIBezierPath animateBezierPathFrom:startPoint toPoint:endPoint controlPoint:controlPoint].CGPath;
+ animPosition.removedOnCompletion = NO;
+ animPosition.fillMode = kCAFillModeForwards;
+
+ return @[ animRotate, animPosition ];
+ }
+ case 1:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(M_PI) ] : @[ @(M_PI), @0];
+
+ CAKeyframeAnimation* animScale = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale.x"];
+ animScale.values = forward ? @[ @1, @0.1 ] : @[ @0.1, @1 ];
+
+ return @[ animRotate, animScale ];
+ }
+ case 2:
+ {
+ CAKeyframeAnimation* animRotate = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
+ animRotate.values = forward ? @[ @0, @(M_PI*5/4) ] : @[ @(M_PI*5/4), @0];
+ animRotate.calculationMode = kCAAnimationCubic;
+ animRotate.keyTimes = @[ @0, @0.33, @0.73, @1.0];
+
+ CGPoint startPoint = forward ? CGPointMake(_lineCenter.x, _lineCenter.y + _lineHeight + _lineSpacing) : _lineCenter;
+ CGPoint endPoint = forward ? _lineCenter : CGPointMake(_lineCenter.x, _lineCenter.y + _lineHeight + _lineSpacing);
+ CGPoint controlPoint = CGPointMake(_lineCenter.x - [self scale:20], _lineCenter.y + _lineHeight + [self scale:5]);
+
+ CAKeyframeAnimation* animPosition = [CAKeyframeAnimation animationWithKeyPath:@"position"];
+ animPosition.path = [UIBezierPath animateBezierPathFrom:startPoint toPoint:endPoint controlPoint:controlPoint].CGPath;
+ animPosition.removedOnCompletion = NO;
+ animPosition.fillMode = kCAFillModeForwards;
+
+ return @[ animRotate, animPosition ];
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return nil;
+}
+
+- (CAShapeLayer*)createLayerWithFrame:(CGRect)frame andColor:(UIColor*)color atPosition:(CGPoint)point {
+
+ CAShapeLayer* layer = [CAShapeLayer new];
+
+ UIBezierPath* path = [UIBezierPath new];
+ [path moveToPoint:CGPointMake(0, 0)];
+ [path addLineToPoint:CGPointMake(frame.size.width, 0)];
+
+ layer.path = path.CGPath;
+ layer.lineWidth = frame.size.height;
+ layer.strokeColor = color.CGColor;
+
+ CGPathRef bound = CGPathCreateCopyByStrokingPath(layer.path, nil, layer.lineWidth, kCGLineCapButt, kCGLineJoinMiter, layer.miterLimit);
+ layer.bounds = CGPathGetBoundingBox(bound);
+
+ layer.position = point;
+
+ return layer;
+}
+
+- (CGFloat)scale:(CGFloat)value {
+ return value/(50/_lineWidth);
+}
+
+@end
+
+#pragma mark -
+#pragma mark - Supporting Category
+#pragma mark - CALayer
+
+@implementation CALayer (LBAddAnimationAndValue)
+
+- (void)addAnimation:(CAAnimation *)anim andValue:(NSValue *)value forKeyPath:(NSString *)keyPath {
+ [self addAnimation:anim forKey:keyPath];
+ [self setValue:value forKeyPath:keyPath];
+}
+
+@end
+
+#pragma mark - UIBezierPath
+
+@implementation UIBezierPath (LBAnimateBezierPath)
+
++ (UIBezierPath*)animateBezierPathFrom:(CGPoint)startPoint toPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint {
+
+ UIBezierPath* path = [UIBezierPath new];
+ [path moveToPoint:startPoint];
+ [path addQuadCurveToPoint:endPoint controlPoint:controlPoint];
+ return path;
+}
+
+@end
diff --git a/README.md b/README.md
index 728620b..cc8297c 100644
--- a/README.md
+++ b/README.md
@@ -5,11 +5,68 @@
[](http://cocoapods.org/pods/HamburgerButton)
[](http://cocoapods.org/pods/HamburgerButton)
-## Usage
+## Overview ##
-To run the example project, clone the repo, and run `pod install` from the Example directory first.
+LBHamburgerButton is an iOS control that displays 3 lines (hamburger) and other icon (back, close...) without using image. It has a beautiful, clean and smooth transition between 2 state like Google Material Design or "close button" of Paper app.
-## Requirements
+## Requirement ##
+
+LBHamburgerButton use QuartzCore framework, so dont forget to add this framework. ARC (iOS 5+) is also required.
+
+## How to use ##
+
+First, you need to copy 2 files LBHamburgerButton.h/.m to your project. Then, import them to your class
+
+```objc
+#import "LBHamburgerButton.h"
+```
+
+This is a sub-class of UIButton. So you can init a simple button and call set-up method:
+
+```objc
+buttonHamburger = [[LBHamburgerButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
+[buttonHamburger setUpHamburgerWithType:LBHamburgerButtonTypeCloseButton
+lineWidth:50
+lineHeight:50/6
+lineSpacing:5
+lineCenter:CGPointMake(50, 50)
+color:[UIColor whiteColor]];
+
+
+or use full contructor like this:
+
+
+```objc
+buttonHamburger = [[LBHamburgerButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)
+withHamburgerType:LBHamburgerButtonTypeCloseButton
+lineWidth:50
+lineHeight:50/6
+lineSpacing:5
+lineCenter:CGPointMake(50, 50)
+color:[UIColor whiteColor]];
+```
+
+Set other propertises, add target add it to view like UIButton.
+
+```objc
+[buttonHamburger setCenter:CGPointMake(120, 120)];
+[buttonHamburger setBackgroundColor:[UIColor blackColor]];
+[buttonHamburger addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
+
+[self.view addSubview:buttonHamburger];
+```
+
+When you want to switch state, just call `switchState`.
+
+```objc
+- (void)buttonPressed:(id)sender {
+LBHamburgerButton* btn = (LBHamburgerButton*)sender;
+[btn switchState];
+}
+```
+
+## MIT License
+Copyright (c) 2014 Bang Nguyen
## Installation
@@ -24,6 +81,8 @@ pod "HamburgerButton"
Giuseppe Nucifora, me@giuseppenucifora.com
+
+
## License
HamburgerButton is available under the MIT license. See the LICENSE file for more info.