diff --git a/CSStickyHeaderFlowLayout.podspec b/CSStickyHeaderFlowLayout.podspec index 73a6e5b..a6ec95b 100644 --- a/CSStickyHeaderFlowLayout.podspec +++ b/CSStickyHeaderFlowLayout.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "CSStickyHeaderFlowLayout" - s.version = "0.2.9" + s.version = "0.2.12" s.summary = "Parallax and Sticky header done right using UICollectionViewLayout" s.description = <<-DESC UICollectionView are flexible and you can use supplementary views to diff --git a/Classes/CSStickyHeaderFlowLayout.h b/Classes/CSStickyHeaderFlowLayout.h index d1801fb..690b9c2 100644 --- a/Classes/CSStickyHeaderFlowLayout.h +++ b/Classes/CSStickyHeaderFlowLayout.h @@ -27,5 +27,6 @@ extern NSString *const CSStickyHeaderParallaxHeader; @property (nonatomic) CGSize parallaxHeaderMinimumReferenceSize; @property (nonatomic) BOOL parallaxHeaderAlwaysOnTop; @property (nonatomic) BOOL disableStickyHeaders; +@property (nonatomic) BOOL disableStretching; @end diff --git a/Classes/CSStickyHeaderFlowLayout.m b/Classes/CSStickyHeaderFlowLayout.m index 053b059..610ba91 100644 --- a/Classes/CSStickyHeaderFlowLayout.m +++ b/Classes/CSStickyHeaderFlowLayout.m @@ -68,107 +68,117 @@ - (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { - // The rect should compensate the header size - CGRect adjustedRect = rect; - adjustedRect.origin.y -= self.parallaxHeaderReferenceSize.height; - - NSMutableArray *allItems = [[super layoutAttributesForElementsInRect:adjustedRect] mutableCopy]; - - NSMutableDictionary *headers = [[NSMutableDictionary alloc] init]; - NSMutableDictionary *lastCells = [[NSMutableDictionary alloc] init]; - __block BOOL visibleParallexHeader; - - [allItems enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - UICollectionViewLayoutAttributes *attributes = obj; - - CGRect frame = attributes.frame; - frame.origin.y += self.parallaxHeaderReferenceSize.height; - attributes.frame = frame; - - NSIndexPath *indexPath = [(UICollectionViewLayoutAttributes *)obj indexPath]; - BOOL isHeader = [[obj representedElementKind] isEqualToString:UICollectionElementKindSectionHeader]; - BOOL isFooter = [[obj representedElementKind] isEqualToString:UICollectionElementKindSectionFooter]; - - if (isHeader) { - [headers setObject:obj forKey:@(indexPath.section)]; - } else if (isFooter) { - // Not implemeneted - } else { - UICollectionViewLayoutAttributes *currentAttribute = [lastCells objectForKey:@(indexPath.section)]; - - // Get the bottom most cell of that section - if ( ! currentAttribute || indexPath.row > currentAttribute.indexPath.row) { - [lastCells setObject:obj forKey:@(indexPath.section)]; + + if (self.collectionView.dataSource != nil) { + // The rect should compensate the header size + CGRect adjustedRect = rect; + adjustedRect.origin.y -= self.parallaxHeaderReferenceSize.height; + + NSMutableArray *allItems = [NSMutableArray array]; + NSArray *originalAttributes = [super layoutAttributesForElementsInRect:adjustedRect]; + //Perform a deep copy of the attributes returned from super + for (UICollectionViewLayoutAttributes *originalAttribute in originalAttributes) { + [allItems addObject:[originalAttribute copy]]; + } + + NSMutableDictionary *headers = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *lastCells = [[NSMutableDictionary alloc] init]; + __block BOOL visibleParallexHeader; + + [allItems enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + UICollectionViewLayoutAttributes *attributes = obj; + + CGRect frame = attributes.frame; + frame.origin.y += self.parallaxHeaderReferenceSize.height; + attributes.frame = frame; + + NSIndexPath *indexPath = [(UICollectionViewLayoutAttributes *)obj indexPath]; + BOOL isHeader = [[obj representedElementKind] isEqualToString:UICollectionElementKindSectionHeader]; + BOOL isFooter = [[obj representedElementKind] isEqualToString:UICollectionElementKindSectionFooter]; + + if (isHeader) { + [headers setObject:obj forKey:@(indexPath.section)]; + } else if (isFooter) { + // Not implemeneted + } else { + UICollectionViewLayoutAttributes *currentAttribute = [lastCells objectForKey:@(indexPath.section)]; + + // Get the bottom most cell of that section + if ( ! currentAttribute || indexPath.row > currentAttribute.indexPath.row) { + [lastCells setObject:obj forKey:@(indexPath.section)]; + } + + if ([indexPath item] == 0 && [indexPath section] == 0) { + visibleParallexHeader = YES; + } } - - if ([indexPath item] == 0 && [indexPath section] == 0) { - visibleParallexHeader = YES; + + if (isHeader) { + attributes.zIndex = kHeaderZIndex; + } else { + // For iOS 7.0, the cell zIndex should be above sticky section header + attributes.zIndex = 1; } + }]; + + // when the visible rect is at top of the screen, make sure we see + // the parallex header + if (CGRectGetMinY(rect) <= 0) { + visibleParallexHeader = YES; } - - if (isHeader) { - attributes.zIndex = kHeaderZIndex; - } else { - // For iOS 7.0, the cell zIndex should be above sticky section header - attributes.zIndex = 1; + + if (self.parallaxHeaderAlwaysOnTop == YES) { + visibleParallexHeader = YES; } - }]; - - // when the visible rect is at top of the screen, make sure we see - // the parallex header - if (CGRectGetMinY(rect) <= 0) { - visibleParallexHeader = YES; - } - - if (self.parallaxHeaderAlwaysOnTop == YES) { - visibleParallexHeader = YES; - } - - - // This method may not be explicitly defined, default to 1 - // https://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionViewDataSource_protocol/Reference/Reference.html#jumpTo_6 -// NSUInteger numberOfSections = [self.collectionView.dataSource -// respondsToSelector:@selector(numberOfSectionsInCollectionView:)] -// ? [self.collectionView.dataSource numberOfSectionsInCollectionView:self.collectionView] -// : 1; - - // Create the attributes for the Parallex header - if (visibleParallexHeader && ! CGSizeEqualToSize(CGSizeZero, self.parallaxHeaderReferenceSize)) { - CSStickyHeaderFlowLayoutAttributes *currentAttribute = [CSStickyHeaderFlowLayoutAttributes layoutAttributesForSupplementaryViewOfKind:CSStickyHeaderParallaxHeader withIndexPath:[NSIndexPath indexPathWithIndex:0]]; - [self updateParallaxHeaderAttribute:currentAttribute]; - - [allItems addObject:currentAttribute]; - } - - if ( ! self.disableStickyHeaders) { - [lastCells enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - NSIndexPath *indexPath = [obj indexPath]; - NSNumber *indexPathKey = @(indexPath.section); - - UICollectionViewLayoutAttributes *header = headers[indexPathKey]; - // CollectionView automatically removes headers not in bounds - if ( ! header) { - header = [self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader - atIndexPath:[NSIndexPath indexPathForItem:0 inSection:indexPath.section]]; - + + + // This method may not be explicitly defined, default to 1 + // https://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionViewDataSource_protocol/Reference/Reference.html#jumpTo_6 + // NSUInteger numberOfSections = [self.collectionView.dataSource + // respondsToSelector:@selector(numberOfSectionsInCollectionView:)] + // ? [self.collectionView.dataSource numberOfSectionsInCollectionView:self.collectionView] + // : 1; + + // Create the attributes for the Parallex header + if (visibleParallexHeader && ! CGSizeEqualToSize(CGSizeZero, self.parallaxHeaderReferenceSize)) { + CSStickyHeaderFlowLayoutAttributes *currentAttribute = [CSStickyHeaderFlowLayoutAttributes layoutAttributesForSupplementaryViewOfKind:CSStickyHeaderParallaxHeader withIndexPath:[NSIndexPath indexPathWithIndex:0]]; + [self updateParallaxHeaderAttribute:currentAttribute]; + + [allItems addObject:currentAttribute]; + } + + if ( ! self.disableStickyHeaders) { + [lastCells enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSIndexPath *indexPath = [obj indexPath]; + NSNumber *indexPathKey = @(indexPath.section); + + UICollectionViewLayoutAttributes *header = headers[indexPathKey]; + // CollectionView automatically removes headers not in bounds + if ( ! header) { + header = [self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader + atIndexPath:[NSIndexPath indexPathForItem:0 inSection:indexPath.section]]; + + if (!CGSizeEqualToSize(CGSizeZero, header.frame.size)) { + [allItems addObject:header]; + } + } if (!CGSizeEqualToSize(CGSizeZero, header.frame.size)) { - [allItems addObject:header]; + [self updateHeaderAttributes:header lastCellAttributes:lastCells[indexPathKey]]; } - } - if (!CGSizeEqualToSize(CGSizeZero, header.frame.size)) { - [self updateHeaderAttributes:header lastCellAttributes:lastCells[indexPathKey]]; - } - }]; + }]; + } + + // For debugging purpose + // [self debugLayoutAttributes:allItems]; + + return allItems; + } else { + return nil; } - - // For debugging purpose -// [self debugLayoutAttributes:allItems]; - - return allItems; } - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { - UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath]; + UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath].copy; CGRect frame = attributes.frame; frame.origin.y += self.parallaxHeaderReferenceSize.height; attributes.frame = frame; @@ -266,7 +276,7 @@ - (void)updateParallaxHeaderAttribute:(CSStickyHeaderFlowLayoutAttributes *)curr frame.origin.x, y, frame.size.width, - height, + self.disableStretching && height > maxHeight ? maxHeight : height, }; } diff --git a/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h b/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h new file mode 100644 index 0000000..d3de69d --- /dev/null +++ b/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h @@ -0,0 +1,19 @@ +// +// CSStickyHeaderFlowLayoutCarthage.h +// CSStickyHeaderFlowLayoutCarthage +// +// Created by Christian Enevoldsen on 16/08/16. +// Copyright © 2016 Jamz Tang. All rights reserved. +// + +#import + +//! Project version number for CSStickyHeaderFlowLayoutCarthage. +FOUNDATION_EXPORT double CSStickyHeaderFlowLayoutCarthageVersionNumber; + +//! Project version string for CSStickyHeaderFlowLayoutCarthage. +FOUNDATION_EXPORT const unsigned char CSStickyHeaderFlowLayoutCarthageVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Project/CSStickyHeaderFlowLayoutCarthage/Info.plist b/Project/CSStickyHeaderFlowLayoutCarthage/Info.plist new file mode 100644 index 0000000..d3de8ee --- /dev/null +++ b/Project/CSStickyHeaderFlowLayoutCarthage/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj index e349970..05e7bc1 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj @@ -40,6 +40,11 @@ 1AFE097F187D677000CA880A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1AFE097D187D677000CA880A /* InfoPlist.strings */; }; 1AFE0981187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE0980187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.m */; }; 1AFE0992187D688300CA880A /* CSCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE0991187D688300CA880A /* CSCell.m */; }; + AF1D0D491D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1D0D481D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF1D0D4E1D6320A800F9FA68 /* CSStickyHeaderFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F761B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m */; }; + AF1D0D4F1D6320A800F9FA68 /* CSStickyHeaderFlowLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F781B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m */; }; + AF1D0D501D6320B100F9FA68 /* CSStickyHeaderFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4B2F751B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF1D0D511D6320B100F9FA68 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4B2F771B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; B36BC395070946668DCF2AFF /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 491370024AF54DD8BFB773DA /* libPods.a */; }; /* End PBXBuildFile section */ @@ -134,6 +139,9 @@ 58D371C1C7F562AB1D536637 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; 6BDE4094D41E4DE6515DF055 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; AD97E1BDF2B20F6336CBF8D7 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + AF1D0D461D63203300F9FA68 /* CSStickyHeaderFlowLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CSStickyHeaderFlowLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF1D0D481D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayoutCarthage.h; sourceTree = ""; }; + AF1D0D4A1D63203300F9FA68 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -174,6 +182,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF1D0D421D63203300F9FA68 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -231,6 +246,7 @@ 1AFE097A187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */, 1A4B2F561B56C539007F67CC /* CSStickyHeaderFlowLayout */, 1A4B2F651B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */, + AF1D0D471D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */, 1AFE0954187D677000CA880A /* Frameworks */, 1AFE0953187D677000CA880A /* Products */, 9DDE38A70ED787DEBF9A6411 /* Pods */, @@ -244,6 +260,7 @@ 1AFE0973187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.xctest */, 1A4B2F551B56C539007F67CC /* CSStickyHeaderFlowLayout.framework */, 1A4B2F5F1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.xctest */, + AF1D0D461D63203300F9FA68 /* CSStickyHeaderFlowLayout.framework */, ); name = Products; sourceTree = ""; @@ -349,6 +366,15 @@ name = Pods; sourceTree = ""; }; + AF1D0D471D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */ = { + isa = PBXGroup; + children = ( + AF1D0D481D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h */, + AF1D0D4A1D63203300F9FA68 /* Info.plist */, + ); + path = CSStickyHeaderFlowLayoutCarthage; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -361,6 +387,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF1D0D431D63203300F9FA68 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + AF1D0D501D6320B100F9FA68 /* CSStickyHeaderFlowLayout.h in Headers */, + AF1D0D511D6320B100F9FA68 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */, + AF1D0D491D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -439,6 +475,24 @@ productReference = 1AFE0973187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + AF1D0D451D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */ = { + isa = PBXNativeTarget; + buildConfigurationList = AF1D0D4D1D63203300F9FA68 /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutCarthage" */; + buildPhases = ( + AF1D0D411D63203300F9FA68 /* Sources */, + AF1D0D421D63203300F9FA68 /* Frameworks */, + AF1D0D431D63203300F9FA68 /* Headers */, + AF1D0D441D63203300F9FA68 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CSStickyHeaderFlowLayoutCarthage; + productName = CSStickyHeaderFlowLayoutCarthage; + productReference = AF1D0D461D63203300F9FA68 /* CSStickyHeaderFlowLayout.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -459,6 +513,9 @@ 1AFE0972187D677000CA880A = { TestTargetID = 1AFE0951187D677000CA880A; }; + AF1D0D451D63203300F9FA68 = { + CreatedOnToolsVersion = 7.3.1; + }; }; }; buildConfigurationList = 1AFE094D187D677000CA880A /* Build configuration list for PBXProject "CSStickyHeaderFlowLayoutDemo" */; @@ -478,6 +535,7 @@ 1AFE0972187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */, 1A4B2F541B56C539007F67CC /* CSStickyHeaderFlowLayout */, 1A4B2F5E1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */, + AF1D0D451D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */, ); }; /* End PBXProject section */ @@ -520,6 +578,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF1D0D441D63203300F9FA68 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -598,6 +663,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AF1D0D411D63203300F9FA68 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AF1D0D4F1D6320A800F9FA68 /* CSStickyHeaderFlowLayoutAttributes.m in Sources */, + AF1D0D4E1D6320A800F9FA68 /* CSStickyHeaderFlowLayout.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -900,6 +974,64 @@ }; name = Release; }; + AF1D0D4B1D63203300F9FA68 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = CSStickyHeaderFlowLayoutCarthage/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.jamztang.CSStickyHeaderFlowLayoutFramework.CSStickyHeaderFlowLayoutCarthage; + PRODUCT_NAME = CSStickyHeaderFlowLayout; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + AF1D0D4C1D63203300F9FA68 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = CSStickyHeaderFlowLayoutCarthage/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.jamztang.CSStickyHeaderFlowLayoutFramework.CSStickyHeaderFlowLayoutCarthage; + PRODUCT_NAME = CSStickyHeaderFlowLayout; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -948,6 +1080,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + AF1D0D4D1D63203300F9FA68 /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutCarthage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AF1D0D4B1D63203300F9FA68 /* Debug */, + AF1D0D4C1D63203300F9FA68 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; /* End XCConfigurationList section */ }; rootObject = 1AFE094A187D677000CA880A /* Project object */; diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme new file mode 100644 index 0000000..8927e3b --- /dev/null +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Project/Podfile.lock b/Project/Podfile.lock index 27f6c38..e838b82 100644 --- a/Project/Podfile.lock +++ b/Project/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - CSStickyHeaderFlowLayout (0.2.9) + - CSStickyHeaderFlowLayout (0.2.10) DEPENDENCIES: - CSStickyHeaderFlowLayout (from `../`) @@ -9,6 +9,6 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - CSStickyHeaderFlowLayout: ece83dad3a1528af8b5a25bda3aa12536624ac65 + CSStickyHeaderFlowLayout: 5366582779d8b7c9ba9b9cc729c218cc23888776 -COCOAPODS: 0.37.2 +COCOAPODS: 0.38.2 diff --git a/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json b/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json index 8872534..3f9d251 100644 --- a/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json +++ b/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json @@ -1,8 +1,8 @@ { "name": "CSStickyHeaderFlowLayout", - "version": "0.2.9", + "version": "0.2.10", "summary": "Parallax and Sticky header done right using UICollectionViewLayout", - "description": " UICollectionView are flexible and you can use supplementary views to\n anything you wanted.\n", + "description": "UICollectionView are flexible and you can use supplementary views to\nanything you wanted.", "homepage": "http://github.com/jamztang/CSStickyHeaderFlowLayout", "screenshots": "https://d262ilb51hltx0.cloudfront.net/max/800/1*pev9ZXJAZ2MYoF8-R_nbRA.gif", "license": "MIT", @@ -11,7 +11,7 @@ }, "source": { "git": "https://github.com/jamztang/CSStickyHeaderFlowLayout.git", - "tag": "0.2.9" + "tag": "0.2.10" }, "platforms": { "ios": "7.0" diff --git a/Project/Pods/Manifest.lock b/Project/Pods/Manifest.lock index 27f6c38..e838b82 100644 --- a/Project/Pods/Manifest.lock +++ b/Project/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - CSStickyHeaderFlowLayout (0.2.9) + - CSStickyHeaderFlowLayout (0.2.10) DEPENDENCIES: - CSStickyHeaderFlowLayout (from `../`) @@ -9,6 +9,6 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - CSStickyHeaderFlowLayout: ece83dad3a1528af8b5a25bda3aa12536624ac65 + CSStickyHeaderFlowLayout: 5366582779d8b7c9ba9b9cc729c218cc23888776 -COCOAPODS: 0.37.2 +COCOAPODS: 0.38.2 diff --git a/Project/Pods/Pods.xcodeproj/project.pbxproj b/Project/Pods/Pods.xcodeproj/project.pbxproj index 31d531a..e44e841 100644 --- a/Project/Pods/Pods.xcodeproj/project.pbxproj +++ b/Project/Pods/Pods.xcodeproj/project.pbxproj @@ -7,291 +7,274 @@ objects = { /* Begin PBXBuildFile section */ - 15F50C1AEAD366DA99E006AB /* CSStickyHeaderFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = A2321EAF33F530944DA10434 /* CSStickyHeaderFlowLayout.h */; }; - 3713F8BE2D3BB55E7F2AB807 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = CE9D4A0C95ADCBB364780848 /* CSStickyHeaderFlowLayoutAttributes.h */; }; - 5C786D26BE2AB83BE589AC35 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586372366E976725771A83F4 /* Foundation.framework */; }; - 5DFF4F027FFEF69181B4572E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586372366E976725771A83F4 /* Foundation.framework */; }; - CD888DCE6AF473CEEFEB0B6E /* CSStickyHeaderFlowLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = A96FC8EA31B01494ECA3DF13 /* CSStickyHeaderFlowLayoutAttributes.m */; }; - CFB41318AA5F85B78C860524 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B25B13B4D7B50BF1235199 /* Pods-dummy.m */; }; - D1B104290BCACA8932C06AA2 /* Pods-CSStickyHeaderFlowLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AC96F8CF5D2EFEABDAD602BB /* Pods-CSStickyHeaderFlowLayout-dummy.m */; }; - DC493F2D2E769E9740DE2F0F /* CSStickyHeaderFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = FE18CEC962BE789F46FAEB6F /* CSStickyHeaderFlowLayout.m */; }; + 4939C1D302428B8AA4D845AA6649315E /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D977BFC33FB2277A3AEDEC48FFCA2079 /* Pods-dummy.m */; }; + 718CC17A4811A1C529658991CE1529D8 /* CSStickyHeaderFlowLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DF42FC14C22B3814DB7EFD04400F8E /* CSStickyHeaderFlowLayoutAttributes.m */; }; + 90B7D3BC05B6326BE1ACC8369BC4BA9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5001DE7E6DBAEB117E72A32A567B30E0 /* Foundation.framework */; }; + BF1B5F9C0B8C15493A888378DB06E099 /* CSStickyHeaderFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 59912E49FAEB9F1FC77C22957EE88582 /* CSStickyHeaderFlowLayout.m */; }; + C6840549AF89761FFC581FBB8197A427 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5001DE7E6DBAEB117E72A32A567B30E0 /* Foundation.framework */; }; + CD23ACA14536749C7672FE1FCE60A7D6 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = C101ADFA653BE696B6288259608E1BC6 /* CSStickyHeaderFlowLayoutAttributes.h */; }; + D76182056CC6BB8DED186CF4EBD28CDA /* CSStickyHeaderFlowLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FF0A77C3567C8B48155BFDE19ABC20C /* CSStickyHeaderFlowLayout-dummy.m */; }; + E9BB7C82CE2329FA219E4422CE95B464 /* CSStickyHeaderFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 1257CE923430D3E27D1157DCBCF77FD3 /* CSStickyHeaderFlowLayout.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 635E32B6A20DCAE0322DFE3B /* PBXContainerItemProxy */ = { + 169C3A6CF1ED7AC1ADCA5B3DE678753D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 4127D870DE62CEB22069E1D7 /* Project object */; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 50FB5229D04F17D96CAB31D2; - remoteInfo = "Pods-CSStickyHeaderFlowLayout"; + remoteGlobalIDString = 32CF90DBE2A4842932209237BC634C11; + remoteInfo = CSStickyHeaderFlowLayout; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0085796C4518EDAEF56204F7 /* libPods-CSStickyHeaderFlowLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CSStickyHeaderFlowLayout.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2882AE8EFC727E355A0F43A7 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; - 2BECECB3135D7C47FFE12322 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 2D08E4FD5BCD73002B5AEEC8 /* Pods-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-environment.h"; sourceTree = ""; }; - 34398FBC2539784FDE2FB5C3 /* Pods-CSStickyHeaderFlowLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CSStickyHeaderFlowLayout-prefix.pch"; sourceTree = ""; }; - 40B0BF74D003EEA7E5972DA3 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; - 4CE89B079D71B141EC0F44DC /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; - 586372366E976725771A83F4 /* 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; }; - 755CDE987B5BB9706CA723DB /* Pods-CSStickyHeaderFlowLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CSStickyHeaderFlowLayout.xcconfig"; sourceTree = ""; }; - 78EC98E1A3782FDF08116AA2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 91B25B13B4D7B50BF1235199 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; - A2321EAF33F530944DA10434 /* CSStickyHeaderFlowLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayout.h; sourceTree = ""; }; - A96FC8EA31B01494ECA3DF13 /* CSStickyHeaderFlowLayoutAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CSStickyHeaderFlowLayoutAttributes.m; sourceTree = ""; }; - AC96F8CF5D2EFEABDAD602BB /* Pods-CSStickyHeaderFlowLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CSStickyHeaderFlowLayout-dummy.m"; sourceTree = ""; }; - CCD0C6A1A02D3CEAC9DB4A3C /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; - CE9D4A0C95ADCBB364780848 /* CSStickyHeaderFlowLayoutAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayoutAttributes.h; sourceTree = ""; }; - E1F2BC0C6B45843719108537 /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; - F2B8F976C3B6AACE8D6A8A81 /* Pods-CSStickyHeaderFlowLayout-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CSStickyHeaderFlowLayout-Private.xcconfig"; sourceTree = ""; }; - FE18CEC962BE789F46FAEB6F /* CSStickyHeaderFlowLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CSStickyHeaderFlowLayout.m; sourceTree = ""; }; + 07836F93A318AB1B5D363BBB30E562AD /* CSStickyHeaderFlowLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CSStickyHeaderFlowLayout-prefix.pch"; sourceTree = ""; }; + 1257CE923430D3E27D1157DCBCF77FD3 /* CSStickyHeaderFlowLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayout.h; sourceTree = ""; }; + 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = ""; }; + 2A105B12EA2A2F16B544420D6D486581 /* libCSStickyHeaderFlowLayout.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCSStickyHeaderFlowLayout.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5001DE7E6DBAEB117E72A32A567B30E0 /* 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; }; + 59912E49FAEB9F1FC77C22957EE88582 /* CSStickyHeaderFlowLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CSStickyHeaderFlowLayout.m; sourceTree = ""; }; + 62BC0F6B182FE98FFA3CA86787062EF1 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = ""; }; + 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = ""; }; + 7FF0A77C3567C8B48155BFDE19ABC20C /* CSStickyHeaderFlowLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CSStickyHeaderFlowLayout-dummy.m"; sourceTree = ""; }; + 96E0C6AF1C624380CE9421A24E761FD4 /* CSStickyHeaderFlowLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CSStickyHeaderFlowLayout.xcconfig; sourceTree = ""; }; + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = ""; }; + C101ADFA653BE696B6288259608E1BC6 /* CSStickyHeaderFlowLayoutAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayoutAttributes.h; sourceTree = ""; }; + C9DF42FC14C22B3814DB7EFD04400F8E /* CSStickyHeaderFlowLayoutAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CSStickyHeaderFlowLayoutAttributes.m; sourceTree = ""; }; + CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CSStickyHeaderFlowLayout-Private.xcconfig"; sourceTree = ""; }; + D977BFC33FB2277A3AEDEC48FFCA2079 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = ""; }; + E256BC23DED73FB12167274A29383CB2 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E8E49AD5F42BB54B641C041AF44A5760 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4999100F8D2DF233089A5709 /* Frameworks */ = { + 0C3AD088E4FF32DE0DCCC24F189646F4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C786D26BE2AB83BE589AC35 /* Foundation.framework in Frameworks */, + C6840549AF89761FFC581FBB8197A427 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 67F4C76BAC3904785DECB5F9 /* Frameworks */ = { + 794A06816DE179D23431D33B8172D958 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5DFF4F027FFEF69181B4572E /* Foundation.framework in Frameworks */, + 90B7D3BC05B6326BE1ACC8369BC4BA9E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 30B3D23C74FA88251A15298A = { + 410698420A66B648363A45E76517BBEE /* Development Pods */ = { isa = PBXGroup; children = ( - 2BECECB3135D7C47FFE12322 /* Podfile */, - D5735D7CB7D70301B05EFA38 /* Development Pods */, - CD1C9A2CDF3CF2FADFDD4FCC /* Frameworks */, - FBAFD46CBCCA74B42C5AC026 /* Products */, - EA01DC0964798430B390C9C8 /* Targets Support Files */, + F80AFA9A1107ED5A27D10E2E7DAAEFBE /* CSStickyHeaderFlowLayout */, ); + name = "Development Pods"; sourceTree = ""; }; - 3CC937EE6FD7F5BAEB367152 /* Support Files */ = { + 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */ = { isa = PBXGroup; children = ( - 755CDE987B5BB9706CA723DB /* Pods-CSStickyHeaderFlowLayout.xcconfig */, - F2B8F976C3B6AACE8D6A8A81 /* Pods-CSStickyHeaderFlowLayout-Private.xcconfig */, - AC96F8CF5D2EFEABDAD602BB /* Pods-CSStickyHeaderFlowLayout-dummy.m */, - 34398FBC2539784FDE2FB5C3 /* Pods-CSStickyHeaderFlowLayout-prefix.pch */, + 5001DE7E6DBAEB117E72A32A567B30E0 /* Foundation.framework */, ); - name = "Support Files"; - path = "Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout"; + name = iOS; sourceTree = ""; }; - 4807D8AE429AF1A52D416AB8 /* iOS */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - 586372366E976725771A83F4 /* Foundation.framework */, + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + 410698420A66B648363A45E76517BBEE /* Development Pods */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, ); - name = iOS; sourceTree = ""; }; - B494E755787B88F2FCD74921 /* Pods */ = { + 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { isa = PBXGroup; children = ( - E1F2BC0C6B45843719108537 /* Pods-acknowledgements.markdown */, - CCD0C6A1A02D3CEAC9DB4A3C /* Pods-acknowledgements.plist */, - 91B25B13B4D7B50BF1235199 /* Pods-dummy.m */, - 2D08E4FD5BCD73002B5AEEC8 /* Pods-environment.h */, - 40B0BF74D003EEA7E5972DA3 /* Pods-resources.sh */, - 4CE89B079D71B141EC0F44DC /* Pods.debug.xcconfig */, - 2882AE8EFC727E355A0F43A7 /* Pods.release.xcconfig */, + 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, + BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, + D977BFC33FB2277A3AEDEC48FFCA2079 /* Pods-dummy.m */, + 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, + 62BC0F6B182FE98FFA3CA86787062EF1 /* Pods.debug.xcconfig */, + E8E49AD5F42BB54B641C041AF44A5760 /* Pods.release.xcconfig */, ); name = Pods; path = "Target Support Files/Pods"; sourceTree = ""; }; - CCCD55452282CDFCB23D2092 /* Classes */ = { + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { isa = PBXGroup; children = ( - A2321EAF33F530944DA10434 /* CSStickyHeaderFlowLayout.h */, - FE18CEC962BE789F46FAEB6F /* CSStickyHeaderFlowLayout.m */, - CE9D4A0C95ADCBB364780848 /* CSStickyHeaderFlowLayoutAttributes.h */, - A96FC8EA31B01494ECA3DF13 /* CSStickyHeaderFlowLayoutAttributes.m */, + 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */, ); - path = Classes; + name = Frameworks; sourceTree = ""; }; - CD1C9A2CDF3CF2FADFDD4FCC /* Frameworks */ = { + CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { isa = PBXGroup; children = ( - 4807D8AE429AF1A52D416AB8 /* iOS */, + 2A105B12EA2A2F16B544420D6D486581 /* libCSStickyHeaderFlowLayout.a */, + E256BC23DED73FB12167274A29383CB2 /* libPods.a */, ); - name = Frameworks; + name = Products; sourceTree = ""; }; - D5735D7CB7D70301B05EFA38 /* Development Pods */ = { + D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { isa = PBXGroup; children = ( - EA4D2D8870F23A490A88D87B /* CSStickyHeaderFlowLayout */, + 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, ); - name = "Development Pods"; + name = "Targets Support Files"; sourceTree = ""; }; - EA01DC0964798430B390C9C8 /* Targets Support Files */ = { + DA0CD6575CEDE7061087F70461B13B42 /* Classes */ = { isa = PBXGroup; children = ( - B494E755787B88F2FCD74921 /* Pods */, + 1257CE923430D3E27D1157DCBCF77FD3 /* CSStickyHeaderFlowLayout.h */, + 59912E49FAEB9F1FC77C22957EE88582 /* CSStickyHeaderFlowLayout.m */, + C101ADFA653BE696B6288259608E1BC6 /* CSStickyHeaderFlowLayoutAttributes.h */, + C9DF42FC14C22B3814DB7EFD04400F8E /* CSStickyHeaderFlowLayoutAttributes.m */, ); - name = "Targets Support Files"; + path = Classes; sourceTree = ""; }; - EA4D2D8870F23A490A88D87B /* CSStickyHeaderFlowLayout */ = { + F80AFA9A1107ED5A27D10E2E7DAAEFBE /* CSStickyHeaderFlowLayout */ = { isa = PBXGroup; children = ( - CCCD55452282CDFCB23D2092 /* Classes */, - 3CC937EE6FD7F5BAEB367152 /* Support Files */, + DA0CD6575CEDE7061087F70461B13B42 /* Classes */, + FC99B6419D37394393040CCFB4F45C5D /* Support Files */, ); name = CSStickyHeaderFlowLayout; path = ../..; sourceTree = ""; }; - FBAFD46CBCCA74B42C5AC026 /* Products */ = { + FC99B6419D37394393040CCFB4F45C5D /* Support Files */ = { isa = PBXGroup; children = ( - 78EC98E1A3782FDF08116AA2 /* libPods.a */, - 0085796C4518EDAEF56204F7 /* libPods-CSStickyHeaderFlowLayout.a */, + 96E0C6AF1C624380CE9421A24E761FD4 /* CSStickyHeaderFlowLayout.xcconfig */, + CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */, + 7FF0A77C3567C8B48155BFDE19ABC20C /* CSStickyHeaderFlowLayout-dummy.m */, + 07836F93A318AB1B5D363BBB30E562AD /* CSStickyHeaderFlowLayout-prefix.pch */, ); - name = Products; + name = "Support Files"; + path = "Project/Pods/Target Support Files/CSStickyHeaderFlowLayout"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 4D0DB934E6D7792C9B360B04 /* Headers */ = { + DE5B0200C7F877527EC419BFBF2BCAC2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 15F50C1AEAD366DA99E006AB /* CSStickyHeaderFlowLayout.h in Headers */, - 3713F8BE2D3BB55E7F2AB807 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */, + E9BB7C82CE2329FA219E4422CE95B464 /* CSStickyHeaderFlowLayout.h in Headers */, + CD23ACA14536749C7672FE1FCE60A7D6 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 50FB5229D04F17D96CAB31D2 /* Pods-CSStickyHeaderFlowLayout */ = { + 2EAA1A1D205BF057B42AB5DE35ECFE03 /* Pods */ = { isa = PBXNativeTarget; - buildConfigurationList = A071EA05CCCE5D2EC5784409 /* Build configuration list for PBXNativeTarget "Pods-CSStickyHeaderFlowLayout" */; + buildConfigurationList = 54FCB8F6DEC70AD3A3D4051D92E2525D /* Build configuration list for PBXNativeTarget "Pods" */; buildPhases = ( - AF3B4B62FF2670E1CCFA670B /* Sources */, - 67F4C76BAC3904785DECB5F9 /* Frameworks */, - 4D0DB934E6D7792C9B360B04 /* Headers */, + B3CDA53154316A0AE01D4C7FC0D037D4 /* Sources */, + 794A06816DE179D23431D33B8172D958 /* Frameworks */, ); buildRules = ( ); dependencies = ( + 5A65E30016C21B89D229A375B73A21D3 /* PBXTargetDependency */, ); - name = "Pods-CSStickyHeaderFlowLayout"; - productName = "Pods-CSStickyHeaderFlowLayout"; - productReference = 0085796C4518EDAEF56204F7 /* libPods-CSStickyHeaderFlowLayout.a */; + name = Pods; + productName = Pods; + productReference = E256BC23DED73FB12167274A29383CB2 /* libPods.a */; productType = "com.apple.product-type.library.static"; }; - 672933F81C885C894C0D315B /* Pods */ = { + 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */ = { isa = PBXNativeTarget; - buildConfigurationList = 0C933EE06BBB4A1B9424A5C0 /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = 19BD00C3D95D47758DC7D1BAB83BFB7F /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */; buildPhases = ( - 0D0F5F766764919DC267EFDF /* Sources */, - 4999100F8D2DF233089A5709 /* Frameworks */, + 3946CEA8E4418852132E21CD2CE79484 /* Sources */, + 0C3AD088E4FF32DE0DCCC24F189646F4 /* Frameworks */, + DE5B0200C7F877527EC419BFBF2BCAC2 /* Headers */, ); buildRules = ( ); dependencies = ( - B0E089E2FE9E5D4137E87393 /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = 78EC98E1A3782FDF08116AA2 /* libPods.a */; + name = CSStickyHeaderFlowLayout; + productName = CSStickyHeaderFlowLayout; + productReference = 2A105B12EA2A2F16B544420D6D486581 /* libCSStickyHeaderFlowLayout.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 4127D870DE62CEB22069E1D7 /* Project object */ = { + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0640; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; }; - buildConfigurationList = 48F484435DF26D3FC48790A5 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 30B3D23C74FA88251A15298A; - productRefGroup = FBAFD46CBCCA74B42C5AC026 /* Products */; + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 672933F81C885C894C0D315B /* Pods */, - 50FB5229D04F17D96CAB31D2 /* Pods-CSStickyHeaderFlowLayout */, + 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */, + 2EAA1A1D205BF057B42AB5DE35ECFE03 /* Pods */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 0D0F5F766764919DC267EFDF /* Sources */ = { + 3946CEA8E4418852132E21CD2CE79484 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CFB41318AA5F85B78C860524 /* Pods-dummy.m in Sources */, + D76182056CC6BB8DED186CF4EBD28CDA /* CSStickyHeaderFlowLayout-dummy.m in Sources */, + BF1B5F9C0B8C15493A888378DB06E099 /* CSStickyHeaderFlowLayout.m in Sources */, + 718CC17A4811A1C529658991CE1529D8 /* CSStickyHeaderFlowLayoutAttributes.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - AF3B4B62FF2670E1CCFA670B /* Sources */ = { + B3CDA53154316A0AE01D4C7FC0D037D4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DC493F2D2E769E9740DE2F0F /* CSStickyHeaderFlowLayout.m in Sources */, - CD888DCE6AF473CEEFEB0B6E /* CSStickyHeaderFlowLayoutAttributes.m in Sources */, - D1B104290BCACA8932C06AA2 /* Pods-CSStickyHeaderFlowLayout-dummy.m in Sources */, + 4939C1D302428B8AA4D845AA6649315E /* Pods-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B0E089E2FE9E5D4137E87393 /* PBXTargetDependency */ = { + 5A65E30016C21B89D229A375B73A21D3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-CSStickyHeaderFlowLayout"; - target = 50FB5229D04F17D96CAB31D2 /* Pods-CSStickyHeaderFlowLayout */; - targetProxy = 635E32B6A20DCAE0322DFE3B /* PBXContainerItemProxy */; + name = CSStickyHeaderFlowLayout; + target = 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */; + targetProxy = 169C3A6CF1ED7AC1ADCA5B3DE678753D /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 20D7118813CC379076F1E7B0 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F2B8F976C3B6AACE8D6A8A81 /* Pods-CSStickyHeaderFlowLayout-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 4E07C90E9A4469BC04C6A798 /* Debug */ = { + 052A17875CB827423D627183396CEB60 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -308,15 +291,10 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = 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_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -324,13 +302,45 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1D627B7053A47BA5ECE88F862A8DEEEA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 3F7C21093C3458FFB9A157380A003F97 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; }; name = Debug; }; - 56287BE8681B9CC7CAB262AD /* Release */ = { + B37F0F91F85060E28F1DAAB522DC7EC1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -347,10 +357,15 @@ 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; + COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; + 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; @@ -358,31 +373,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 7.0; + ONLY_ACTIVE_ARCH = YES; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 747325B20014753E47DCB721 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4CE89B079D71B141EC0F44DC /* Pods.debug.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; }; name = Debug; }; - B7E6CD45BF9AB3E70965BB02 /* Release */ = { + BA689EE488AFB5C4C61B57BED665B985 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2882AE8EFC727E355A0F43A7 /* Pods.release.xcconfig */; + baseConfigurationReference = E8E49AD5F42BB54B641C041AF44A5760 /* Pods.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; IPHONEOS_DEPLOYMENT_TARGET = 7.0; @@ -396,16 +395,16 @@ }; name = Release; }; - CDC7DABF49892B7AA5F1979F /* Debug */ = { + C73E823B626A71316C4172A3B03DF294 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F2B8F976C3B6AACE8D6A8A81 /* Pods-CSStickyHeaderFlowLayout-Private.xcconfig */; + baseConfigurationReference = 62BC0F6B182FE98FFA3CA86787062EF1 /* Pods.debug.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -415,34 +414,34 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0C933EE06BBB4A1B9424A5C0 /* Build configuration list for PBXNativeTarget "Pods" */ = { + 19BD00C3D95D47758DC7D1BAB83BFB7F /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */ = { isa = XCConfigurationList; buildConfigurations = ( - 747325B20014753E47DCB721 /* Debug */, - B7E6CD45BF9AB3E70965BB02 /* Release */, + 3F7C21093C3458FFB9A157380A003F97 /* Debug */, + 1D627B7053A47BA5ECE88F862A8DEEEA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 48F484435DF26D3FC48790A5 /* Build configuration list for PBXProject "Pods" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4E07C90E9A4469BC04C6A798 /* Debug */, - 56287BE8681B9CC7CAB262AD /* Release */, + B37F0F91F85060E28F1DAAB522DC7EC1 /* Debug */, + 052A17875CB827423D627183396CEB60 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A071EA05CCCE5D2EC5784409 /* Build configuration list for PBXNativeTarget "Pods-CSStickyHeaderFlowLayout" */ = { + 54FCB8F6DEC70AD3A3D4051D92E2525D /* Build configuration list for PBXNativeTarget "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - CDC7DABF49892B7AA5F1979F /* Debug */, - 20D7118813CC379076F1E7B0 /* Release */, + C73E823B626A71316C4172A3B03DF294 /* Debug */, + BA689EE488AFB5C4C61B57BED665B985 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 4127D870DE62CEB22069E1D7 /* Project object */; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; } diff --git a/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme b/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme new file mode 100644 index 0000000..10ff8e7 --- /dev/null +++ b/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-Private.xcconfig b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig similarity index 80% rename from Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-Private.xcconfig rename to Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig index 87084a4..7749a02 100644 --- a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-Private.xcconfig +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig @@ -1,6 +1,5 @@ -#include "Pods-CSStickyHeaderFlowLayout.xcconfig" +#include "CSStickyHeaderFlowLayout.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CSStickyHeaderFlowLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -OTHER_LDFLAGS = -ObjC PODS_ROOT = ${SRCROOT} SKIP_INSTALL = YES \ No newline at end of file diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-dummy.m b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-dummy.m new file mode 100644 index 0000000..91cc005 --- /dev/null +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_CSStickyHeaderFlowLayout : NSObject +@end +@implementation PodsDummy_CSStickyHeaderFlowLayout +@end diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-prefix.pch b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch similarity index 62% rename from Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-prefix.pch rename to Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch index 95cf11d..aa992a4 100644 --- a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-prefix.pch +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch @@ -2,4 +2,3 @@ #import #endif -#import "Pods-environment.h" diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout.xcconfig b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig similarity index 100% rename from Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout.xcconfig rename to Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-dummy.m b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-dummy.m deleted file mode 100644 index e9c00bd..0000000 --- a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayout/Pods-CSStickyHeaderFlowLayout-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_CSStickyHeaderFlowLayout : NSObject -@end -@implementation PodsDummy_Pods_CSStickyHeaderFlowLayout -@end diff --git a/Project/Pods/Target Support Files/Pods/Pods-environment.h b/Project/Pods/Target Support Files/Pods/Pods-environment.h deleted file mode 100644 index 14b576e..0000000 --- a/Project/Pods/Target Support Files/Pods/Pods-environment.h +++ /dev/null @@ -1,14 +0,0 @@ - -// To check if a library is compiled with CocoaPods you -// can use the `COCOAPODS` macro definition which is -// defined in the xcconfigs so it is available in -// headers also when they are imported in the client -// project. - - -// CSStickyHeaderFlowLayout -#define COCOAPODS_POD_AVAILABLE_CSStickyHeaderFlowLayout -#define COCOAPODS_VERSION_MAJOR_CSStickyHeaderFlowLayout 0 -#define COCOAPODS_VERSION_MINOR_CSStickyHeaderFlowLayout 2 -#define COCOAPODS_VERSION_PATCH_CSStickyHeaderFlowLayout 9 - diff --git a/Project/Pods/Target Support Files/Pods/Pods-resources.sh b/Project/Pods/Target Support Files/Pods/Pods-resources.sh index 43f0852..ea685a2 100755 --- a/Project/Pods/Target Support Files/Pods/Pods-resources.sh +++ b/Project/Pods/Target Support Files/Pods/Pods-resources.sh @@ -9,7 +9,7 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() realpath() { - DIRECTORY=$(cd "${1%/*}" && pwd) + DIRECTORY="$(cd "${1%/*}" && pwd)" FILENAME="${1##*/}" echo "$DIRECTORY/$FILENAME" } @@ -22,7 +22,7 @@ install_resource() 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}" + 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) @@ -58,8 +58,10 @@ install_resource() 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" diff --git a/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig index 430b2d7..a94e0c5 100644 --- a/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,6 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-CSStickyHeaderFlowLayout" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +OTHER_LDFLAGS = $(inherited) -ObjC -l"CSStickyHeaderFlowLayout" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Project/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Project/Pods/Target Support Files/Pods/Pods.release.xcconfig index 430b2d7..a94e0c5 100644 --- a/Project/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/Project/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,6 +1,5 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-CSStickyHeaderFlowLayout" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +OTHER_LDFLAGS = $(inherited) -ObjC -l"CSStickyHeaderFlowLayout" PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj b/Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj index 22189ee..a30ce3f 100644 --- a/Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj +++ b/Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj @@ -169,7 +169,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0630; + LastUpgradeCheck = 1110; ORGANIZATIONNAME = "James Tang"; TargetAttributes = { 1A4B2F2A1B56C513007F67CC = { @@ -183,7 +183,7 @@ }; buildConfigurationList = 1A4B2F261B56C513007F67CC /* Build configuration list for PBXProject "SwiftDemo" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -266,23 +266,35 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -303,6 +315,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -310,17 +323,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -339,6 +363,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -350,9 +376,11 @@ CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwiftDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "SwiftDemo/SwiftDemo-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -363,8 +391,10 @@ CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwiftDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "SwiftDemo/SwiftDemo-Bridging-Header.h"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -382,6 +412,7 @@ ); INFOPLIST_FILE = SwiftDemoTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftDemo.app/SwiftDemo"; }; @@ -397,6 +428,7 @@ ); INFOPLIST_FILE = SwiftDemoTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftDemo.app/SwiftDemo"; }; diff --git a/Project/SwiftDemo/SwiftDemo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme b/Project/SwiftDemo/SwiftDemo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme new file mode 100644 index 0000000..ceb8f39 --- /dev/null +++ b/Project/SwiftDemo/SwiftDemo.xcodeproj/xcshareddata/xcschemes/SwiftDemo.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Project/SwiftDemo/SwiftDemo/AppDelegate.swift b/Project/SwiftDemo/SwiftDemo/AppDelegate.swift index e31cb63..dd57121 100644 --- a/Project/SwiftDemo/SwiftDemo/AppDelegate.swift +++ b/Project/SwiftDemo/SwiftDemo/AppDelegate.swift @@ -13,42 +13,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { // Override point for customization after application launch. let stickyHeaderFlowLayout = CSStickyHeaderFlowLayout() let collectionViewController = CollectionViewController(collectionViewLayout: stickyHeaderFlowLayout) - let window = UIWindow(frame: UIScreen.mainScreen().bounds) + let window = UIWindow(frame: UIScreen.main.bounds) window.rootViewController = collectionViewController window.makeKeyAndVisible() self.window = window return true } - - func applicationWillResignActive(application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(application: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - } diff --git a/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift b/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift index da4f4ab..9b9e7a9 100644 --- a/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift +++ b/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift @@ -15,20 +15,20 @@ class CollectionParallaxHeader: UICollectionReusableView { override init(frame: CGRect) { super.init(frame: frame) - self.backgroundColor = UIColor.lightGrayColor() + self.backgroundColor = UIColor.lightGray self.clipsToBounds = true - let bounds = CGRectMake(0, 0, CGRectGetMaxX(frame), CGRectGetMaxY(frame)) + let bounds = CGRect(x: 0, y: 0, width: frame.maxX, height: frame.maxY) let imageView = UIImageView(frame: bounds) - imageView.contentMode = UIViewContentMode.ScaleAspectFill + imageView.contentMode = UIView.ContentMode.scaleAspectFill imageView.image = UIImage(named: "success-baby") self.imageView = imageView self.addSubview(imageView) } - required init(coder aDecoder: NSCoder) { + required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift index 6d1149b..dc76a04 100644 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift +++ b/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift @@ -21,16 +21,16 @@ class CollectionViewCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) - self.backgroundColor = UIColor.whiteColor() + self.backgroundColor = UIColor.white - let bounds = CGRectMake(0, 0, CGRectGetMaxX(frame), CGRectGetMaxY(frame)) + let bounds = CGRect(x: 0, y: 0, width: frame.maxX, height: frame.maxY) let label = UILabel(frame: bounds) - label.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleWidth] + label.autoresizingMask = [UIView.AutoresizingMask.flexibleHeight, UIView.AutoresizingMask.flexibleWidth] self.textLabel = label self.addSubview(label) } - required init(coder aDecoder: NSCoder) { + required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift index 9ee41f4..0a063ae 100644 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift +++ b/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift @@ -20,44 +20,45 @@ class CollectionViewController: UICollectionViewController { super.viewDidLoad() self.collectionView?.alwaysBounceVertical = true - self.view.backgroundColor = UIColor.whiteColor() + self.collectionView.backgroundColor = .groupTableViewBackground + self.view.backgroundColor = UIColor.white // Setup Cell - self.collectionView?.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "cell") - self.layout?.itemSize = CGSizeMake(self.view.frame.size.width, 44) + self.collectionView?.register(CollectionViewCell.self, forCellWithReuseIdentifier: "cell") + self.layout?.itemSize = CGSize(width: self.view.frame.size.width, height: 44) // Setup Header - self.collectionView?.registerClass(CollectionParallaxHeader.self, forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, withReuseIdentifier: "parallaxHeader") - self.layout?.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, 100) + self.collectionView?.register(CollectionParallaxHeader.self, forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, withReuseIdentifier: "parallaxHeader") + self.layout?.parallaxHeaderReferenceSize = CGSize(width: self.view.frame.size.width, height: 100) // Setup Section Header - self.collectionView?.registerClass(CollectionViewSectionHeader.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "sectionHeader") - self.layout?.headerReferenceSize = CGSizeMake(320, 40) + self.collectionView?.register(CollectionViewSectionHeader.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "sectionHeader") + self.layout?.headerReferenceSize = CGSize(width: 320, height: 40) } // Cells - override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.items.count } - override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { + override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell cell.text = self.items[indexPath.row] return cell } // Parallax Header - override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { + override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { if kind == CSStickyHeaderParallaxHeader { - let view = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "parallaxHeader", forIndexPath: indexPath) + let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "parallaxHeader", for: indexPath) return view - } else if kind == UICollectionElementKindSectionHeader { - let view = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "sectionHeader", forIndexPath: indexPath) - view.backgroundColor = UIColor.lightGrayColor() + } else if kind == UICollectionView.elementKindSectionHeader { + let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "sectionHeader", for: indexPath) + view.backgroundColor = UIColor.lightGray return view } diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift index 8bcbd1d..d91febf 100644 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift +++ b/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift @@ -16,7 +16,7 @@ class CollectionViewSectionHeader: UICollectionReusableView { commonInit() } - required init(coder aDecoder: NSCoder) { + required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) commonInit() } @@ -24,6 +24,6 @@ class CollectionViewSectionHeader: UICollectionReusableView { func commonInit() { self.addSubview(label) label.frame = self.bounds - label.text = UICollectionElementKindSectionHeader + label.text = UICollectionView.elementKindSectionHeader } } diff --git a/Project/SwiftDemo/SwiftDemo/Info.plist b/Project/SwiftDemo/SwiftDemo/Info.plist index 83351f2..d39a4da 100644 --- a/Project/SwiftDemo/SwiftDemo/Info.plist +++ b/Project/SwiftDemo/SwiftDemo/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.jamztang.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Project/SwiftDemo/SwiftDemoTests/Info.plist b/Project/SwiftDemo/SwiftDemoTests/Info.plist index 609467f..ba72822 100644 --- a/Project/SwiftDemo/SwiftDemoTests/Info.plist +++ b/Project/SwiftDemo/SwiftDemoTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.jamztang.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/README.md b/README.md index 911ebe7..79dc42e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # CSStickyHeaderFlowLayout +## Contributors + +For anyone who'd like to be a contributor to the repository, please read the [Contribution Guideline](https://github.com/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/wiki/Contribution-Guidelines) + +--- + @@ -14,14 +20,19 @@ UICollectionViewLayout. [![Version](http://cocoapod-badges.herokuapp.com/v/CSStickyHeaderFlowLayout/badge.png)](http://cocoadocs.org/docsets/CSStickyHeaderFlowLayout) [![Platform](http://cocoapod-badges.herokuapp.com/p/CSStickyHeaderFlowLayout/badge.png)](http://cocoadocs.org/docsets/CSStickyHeaderFlowLayout) +### Cocoapods CSStickyHeaderFlowLayout is available through [CocoaPods](http://cocoapods.org), to install it simply add the following line to your Podfile: pod "CSStickyHeaderFlowLayout" -Alternatively, you can just drag the files from `CSStickyHeaderFlowLayout / Classes` into your own project. +### Carthage + +CSStickyHeaderFlowLayout is also available with Carthage. +Add `github "CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout"` to your Cartfile +Alternatively, you can just drag the files from `CSStickyHeaderFlowLayout / Classes` into your own project. ## Usage (Swift/Code) @@ -110,20 +121,12 @@ Run the project examples and it'll shows you exactly how you achieve different e ![](http://f.cl.ly/items/313D2n3R0H0e0x090B3X/different-header.jpeg) +## Updates +- 0.2.12: Add Swift 5 Demo +- 0.2.11: Add support for carthage. -## Donation - -If you think this worths something, tip me a cup of coffee! (p.s. was trying out ChangeTip, or if you know any better donation button, let [me](http://twitter.com/@jamztang) know) :) - - - Tip Me With ChangeTip - - - -## Updates +- 0.2.10: Fixed issue because attributes were not copied and datasource might have been niled - 0.2.9: Remove Supplementry Header Layout Attribute to prevent crash when returning nil and while is CGSizeZero