From 6beaa1c84cb3c727bfb32291dd1becdc44e9534c Mon Sep 17 00:00:00 2001 From: chrene Date: Wed, 14 Sep 2016 21:06:43 +0200 Subject: [PATCH 01/13] Transition to swift --- CSStickyHeaderFlowLayout.podspec | 6 +- Classes/CSStickyHeaderFlowLayout.h | 32 - Classes/CSStickyHeaderFlowLayout.m | 337 --------- Classes/CSStickyHeaderFlowLayout.swift | 269 +++++++ Classes/CSStickyHeaderFlowLayoutAttributes.h | 16 - Classes/CSStickyHeaderFlowLayoutAttributes.m | 33 - .../CSStickyHeaderFlowLayoutAttributes.swift | 30 + .../project.pbxproj | 404 +++++++++++ .../CSStickyHeaderFlowLayout.xcscheme} | 43 +- .../CSStickyHeaderFlowLayout.h | 6 +- .../{ => CSStickyHeaderFlowLayout}/Info.plist | 0 .../CSStickyHeaderFlowLayoutTests.swift | 10 +- .../CSStickyHeaderFlowLayoutTests/Info.plist | 0 .../CSStickyHeaderFlowLayoutCarthage.h | 19 - .../Info.plist | 26 - .../project.pbxproj | 676 +----------------- .../contents.xcworkspacedata | 3 - .../Base.lproj/Main.storyboard | 27 +- .../CSAlwaysOnTopHeader.m | 2 +- .../CSAlwaysOnTopHeader.xib | 21 +- .../CSGrowHeader.xib | 10 +- .../CSGrowHeaderViewController.m | 9 +- .../CSLockedHeaderViewController.m | 6 +- .../CSParallaxHeader.xib | 10 +- .../CSParallaxHeaderViewController.m | 6 +- .../CSSearchBarHeader.xib | 10 +- .../CSStickyParallaxHeaderViewController.m | 9 +- .../AppIcon.appiconset/Contents.json | 10 + ...StickyHeaderFlowLayoutDemoTests-Info.plist | 22 - .../CSStickyHeaderFlowLayoutDemoTests.m | 34 - .../en.lproj/InfoPlist.strings | 2 - Project/Podfile | 9 +- Project/Podfile.lock | 8 +- .../CSStickyHeaderFlowLayout.h | 1 - .../CSStickyHeaderFlowLayoutAttributes.h | 1 - .../CSStickyHeaderFlowLayout.h | 1 - .../CSStickyHeaderFlowLayoutAttributes.h | 1 - .../CSStickyHeaderFlowLayout.podspec.json | 8 +- Project/Pods/Manifest.lock | 8 +- Project/Pods/Pods.xcodeproj/project.pbxproj | 435 ++++++----- .../CSStickyHeaderFlowLayout.xcscheme | 71 -- .../CSStickyHeaderFlowLayout-Private.xcconfig | 5 - .../CSStickyHeaderFlowLayout-umbrella.h | 6 + .../CSStickyHeaderFlowLayout.modulemap | 6 + .../CSStickyHeaderFlowLayout.xcconfig | 9 + .../CSStickyHeaderFlowLayout/Info.plist | 26 + .../Info.plist | 26 + ...rFlowLayoutDemo-acknowledgements.markdown} | 2 +- ...aderFlowLayoutDemo-acknowledgements.plist} | 2 +- .../Pods-CSStickyHeaderFlowLayoutDemo-dummy.m | 5 + ...CSStickyHeaderFlowLayoutDemo-frameworks.sh | 91 +++ ...-CSStickyHeaderFlowLayoutDemo-resources.sh | 102 +++ ...ds-CSStickyHeaderFlowLayoutDemo-umbrella.h | 6 + ...SStickyHeaderFlowLayoutDemo.debug.xcconfig | 10 + ...ods-CSStickyHeaderFlowLayoutDemo.modulemap | 6 + ...tickyHeaderFlowLayoutDemo.release.xcconfig | 10 + .../Target Support Files/Pods/Pods-dummy.m | 5 - .../Pods/Pods-resources.sh | 95 --- .../Pods/Pods.debug.xcconfig | 5 - .../Pods/Pods.release.xcconfig | 5 - .../SwiftDemo.xcodeproj/project.pbxproj | 438 ------------ Project/SwiftDemo/SwiftDemo/AppDelegate.swift | 54 -- .../SwiftDemo/Base.lproj/LaunchScreen.xib | 41 -- .../SwiftDemo/CollectionParallaxHeader.swift | 40 -- .../SwiftDemo/CollectionViewCell.swift | 45 -- .../SwiftDemo/CollectionViewController.swift | 69 -- .../CollectionViewSectionHeader.swift | 29 - .../AppIcon.appiconset/Contents.json | 38 - .../SwiftDemo/Images.xcassets/Contents.json | 6 - .../success-baby.imageset/Contents.json | 21 - .../success-baby.imageset/success-baby.png | Bin 330829 -> 0 bytes Project/SwiftDemo/SwiftDemo/Info.plist | 38 - .../SwiftDemo/SwiftDemo-Bridging-Header.h | 6 - Project/SwiftDemo/SwiftDemoTests/Info.plist | 24 - .../SwiftDemoTests/SwiftDemoTests.swift | 36 - 75 files changed, 1419 insertions(+), 2519 deletions(-) delete mode 100644 Classes/CSStickyHeaderFlowLayout.h delete mode 100644 Classes/CSStickyHeaderFlowLayout.m create mode 100644 Classes/CSStickyHeaderFlowLayout.swift delete mode 100644 Classes/CSStickyHeaderFlowLayoutAttributes.h delete mode 100644 Classes/CSStickyHeaderFlowLayoutAttributes.m create mode 100644 Classes/CSStickyHeaderFlowLayoutAttributes.swift create mode 100644 Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/project.pbxproj rename Project/{CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme => CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme} (61%) rename Project/CSStickyHeaderFlowLayout/{ => CSStickyHeaderFlowLayout}/CSStickyHeaderFlowLayout.h (69%) rename Project/CSStickyHeaderFlowLayout/{ => CSStickyHeaderFlowLayout}/Info.plist (100%) rename Project/{ => CSStickyHeaderFlowLayout}/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift (73%) rename Project/{ => CSStickyHeaderFlowLayout}/CSStickyHeaderFlowLayoutTests/Info.plist (100%) delete mode 100644 Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h delete mode 100644 Project/CSStickyHeaderFlowLayoutCarthage/Info.plist delete mode 100644 Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist delete mode 100644 Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests.m delete mode 100644 Project/CSStickyHeaderFlowLayoutDemoTests/en.lproj/InfoPlist.strings delete mode 120000 Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h delete mode 120000 Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h delete mode 120000 Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h delete mode 120000 Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h delete mode 100644 Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme delete mode 100644 Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig create mode 100644 Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-umbrella.h create mode 100644 Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap create mode 100644 Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/Info.plist create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Info.plist rename Project/Pods/Target Support Files/{Pods/Pods-acknowledgements.markdown => Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown} (96%) rename Project/Pods/Target Support Files/{Pods/Pods-acknowledgements.plist => Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist} (96%) create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-dummy.m create mode 100755 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh create mode 100755 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-resources.sh create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap create mode 100644 Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig delete mode 100644 Project/Pods/Target Support Files/Pods/Pods-dummy.m delete mode 100755 Project/Pods/Target Support Files/Pods/Pods-resources.sh delete mode 100644 Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig delete mode 100644 Project/Pods/Target Support Files/Pods/Pods.release.xcconfig delete mode 100644 Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj delete mode 100644 Project/SwiftDemo/SwiftDemo/AppDelegate.swift delete mode 100644 Project/SwiftDemo/SwiftDemo/Base.lproj/LaunchScreen.xib delete mode 100644 Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift delete mode 100644 Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift delete mode 100644 Project/SwiftDemo/SwiftDemo/CollectionViewController.swift delete mode 100644 Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift delete mode 100644 Project/SwiftDemo/SwiftDemo/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Project/SwiftDemo/SwiftDemo/Images.xcassets/Contents.json delete mode 100644 Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/Contents.json delete mode 100644 Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/success-baby.png delete mode 100644 Project/SwiftDemo/SwiftDemo/Info.plist delete mode 100644 Project/SwiftDemo/SwiftDemo/SwiftDemo-Bridging-Header.h delete mode 100644 Project/SwiftDemo/SwiftDemoTests/Info.plist delete mode 100644 Project/SwiftDemo/SwiftDemoTests/SwiftDemoTests.swift diff --git a/CSStickyHeaderFlowLayout.podspec b/CSStickyHeaderFlowLayout.podspec index 0ff3f67..1beeafc 100644 --- a/CSStickyHeaderFlowLayout.podspec +++ b/CSStickyHeaderFlowLayout.podspec @@ -11,10 +11,10 @@ Pod::Spec.new do |s| s.license = 'MIT' s.author = { "James Tang" => "j@jamztang.com" } s.source = { :git => "https://github.com/jamztang/CSStickyHeaderFlowLayout.git", :tag => s.version.to_s } - s.platform = :ios, '7.0' - s.ios.deployment_target = '7.0' + s.platform = :ios, '9.0' + s.ios.deployment_target = '9.0' s.requires_arc = true - s.source_files = 'Classes' + s.source_files = 'Classes/**/*.{swift}' s.ios.exclude_files = 'Classes/osx' s.osx.exclude_files = 'Classes/ios' end diff --git a/Classes/CSStickyHeaderFlowLayout.h b/Classes/CSStickyHeaderFlowLayout.h deleted file mode 100644 index 690b9c2..0000000 --- a/Classes/CSStickyHeaderFlowLayout.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of the CSStickyHeaderFlowLayout package. - * (c) James Tang - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import - -//! Project version number for CSStickyHeaderFlowLayout. -FOUNDATION_EXPORT double CSStickyHeaderFlowLayoutVersionNumber; - -//! Project version string for CSStickyHeaderFlowLayout. -FOUNDATION_EXPORT const unsigned char CSStickyHeaderFlowLayoutVersionString[]; - -// Import All public headers -#import - -#pragma mark - - -extern NSString *const CSStickyHeaderParallaxHeader; - -@interface CSStickyHeaderFlowLayout : UICollectionViewFlowLayout - -@property (nonatomic) CGSize parallaxHeaderReferenceSize; -@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 deleted file mode 100644 index 610ba91..0000000 --- a/Classes/CSStickyHeaderFlowLayout.m +++ /dev/null @@ -1,337 +0,0 @@ -/* - * This file is part of the CSStickyHeaderFlowLayout package. - * (c) James Tang - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import "CSStickyHeaderFlowLayout.h" -#import "CSStickyHeaderFlowLayoutAttributes.h" - - -NSString *const CSStickyHeaderParallaxHeader = @"CSStickyHeaderParallexHeader"; -static const NSInteger kHeaderZIndex = 1024; - -@interface CSStickyHeaderFlowLayout (Debug) - -- (void)debugLayoutAttributes:(NSArray *)layoutAttributes; - -@end - - -@implementation CSStickyHeaderFlowLayout - -- (void)prepareLayout { - [super prepareLayout]; -} - -- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingSupplementaryElementOfKind:(NSString *)elementKind - atIndexPath:(NSIndexPath *)elementIndexPath { - UICollectionViewLayoutAttributes *attributes = [super initialLayoutAttributesForAppearingSupplementaryElementOfKind:elementKind atIndexPath:elementIndexPath]; - - if ([elementKind isEqualToString:CSStickyHeaderParallaxHeader]) { - // sticky header do not need to offset - return nil; - } else { - // offset others - - CGRect frame = attributes.frame; - frame.origin.y += self.parallaxHeaderReferenceSize.height; - attributes.frame = frame; - } - - return attributes; -} - -- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath { - - if ([elementKind isEqualToString:CSStickyHeaderParallaxHeader]) { - CSStickyHeaderFlowLayoutAttributes *attribute = (CSStickyHeaderFlowLayoutAttributes *)[self layoutAttributesForSupplementaryViewOfKind:elementKind atIndexPath:elementIndexPath]; - - [self updateParallaxHeaderAttribute:attribute]; - return attribute; - } else { - return [super finalLayoutAttributesForDisappearingSupplementaryElementOfKind:elementKind atIndexPath:elementIndexPath]; - } - return nil; -} - -- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath -{ - UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForSupplementaryViewOfKind:kind atIndexPath:indexPath]; - if (!attributes && [kind isEqualToString:CSStickyHeaderParallaxHeader]) { - attributes = [CSStickyHeaderFlowLayoutAttributes layoutAttributesForSupplementaryViewOfKind:kind withIndexPath:indexPath]; - } - return attributes; -} - -- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect -{ - - 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 (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 (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]]; - - if (!CGSizeEqualToSize(CGSizeZero, header.frame.size)) { - [allItems addObject:header]; - } - } - if (!CGSizeEqualToSize(CGSizeZero, header.frame.size)) { - [self updateHeaderAttributes:header lastCellAttributes:lastCells[indexPathKey]]; - } - }]; - } - - // For debugging purpose - // [self debugLayoutAttributes:allItems]; - - return allItems; - } else { - return nil; - } -} - -- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { - UICollectionViewLayoutAttributes *attributes = [super layoutAttributesForItemAtIndexPath:indexPath].copy; - CGRect frame = attributes.frame; - frame.origin.y += self.parallaxHeaderReferenceSize.height; - attributes.frame = frame; - return attributes; -} - -- (CGSize)collectionViewContentSize { - // If not part of view hierarchy then return CGSizeZero (as in docs). - // Call [super collectionViewContentSize] can cause EXC_BAD_ACCESS when collectionView has no superview. - if (!self.collectionView.superview) { - return CGSizeZero; - } - CGSize size = [super collectionViewContentSize]; - size.height += self.parallaxHeaderReferenceSize.height; - return size; -} - -- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds -{ - return YES; -} - -#pragma mark Overrides - -+ (Class)layoutAttributesClass { - return [CSStickyHeaderFlowLayoutAttributes class]; -} - -- (void)setParallaxHeaderReferenceSize:(CGSize)parallaxHeaderReferenceSize { - _parallaxHeaderReferenceSize = parallaxHeaderReferenceSize; - // Make sure we update the layout - [self invalidateLayout]; -} - -#pragma mark Helper - -- (void)updateHeaderAttributes:(UICollectionViewLayoutAttributes *)attributes lastCellAttributes:(UICollectionViewLayoutAttributes *)lastCellAttributes -{ - CGRect currentBounds = self.collectionView.bounds; - attributes.zIndex = kHeaderZIndex; - attributes.hidden = NO; - - CGPoint origin = attributes.frame.origin; - - CGFloat sectionMaxY = CGRectGetMaxY(lastCellAttributes.frame) - attributes.frame.size.height; - CGFloat y = CGRectGetMaxY(currentBounds) - currentBounds.size.height + self.collectionView.contentInset.top; - - if (self.parallaxHeaderAlwaysOnTop) { - y += self.parallaxHeaderMinimumReferenceSize.height; - } - - CGFloat maxY = MIN(MAX(y, attributes.frame.origin.y), sectionMaxY); - -// NSLog(@"%.2f, %.2f, %.2f", y, maxY, sectionMaxY); - - origin.y = maxY; - - attributes.frame = (CGRect){ - origin, - attributes.frame.size - }; -} - -- (void)updateParallaxHeaderAttribute:(CSStickyHeaderFlowLayoutAttributes *)currentAttribute { - - CGRect frame = currentAttribute.frame; - frame.size.width = self.parallaxHeaderReferenceSize.width; - frame.size.height = self.parallaxHeaderReferenceSize.height; - - CGRect bounds = self.collectionView.bounds; - CGFloat maxY = CGRectGetMaxY(frame); - - // make sure the frame won't be negative values - CGFloat y = MIN(maxY - self.parallaxHeaderMinimumReferenceSize.height, bounds.origin.y + self.collectionView.contentInset.top); - CGFloat height = MAX(0, -y + maxY); - - - CGFloat maxHeight = self.parallaxHeaderReferenceSize.height; - CGFloat minHeight = self.parallaxHeaderMinimumReferenceSize.height; - CGFloat progressiveness = (height - minHeight)/(maxHeight - minHeight); - currentAttribute.progressiveness = progressiveness; - - // if zIndex < 0 would prevents tap from recognized right under navigation bar - currentAttribute.zIndex = 0; - - // When parallaxHeaderAlwaysOnTop is enabled, we will check when we should update the y position - if (self.parallaxHeaderAlwaysOnTop && height <= self.parallaxHeaderMinimumReferenceSize.height) { - CGFloat insetTop = self.collectionView.contentInset.top; - // Always stick to top but under the nav bar - y = self.collectionView.contentOffset.y + insetTop; - currentAttribute.zIndex = 2000; - } - - currentAttribute.frame = (CGRect){ - frame.origin.x, - y, - frame.size.width, - self.disableStretching && height > maxHeight ? maxHeight : height, - }; - -} - -@end - -#pragma mark - Debugging - -@implementation CSStickyHeaderFlowLayoutAttributes (Debug) - -- (NSString *)description { - NSString *indexPathString = [NSString stringWithFormat:@"{%ld, %ld}", (long)self.indexPath.section, (long)self.indexPath.item]; - - NSString *desc = [NSString stringWithFormat:@" indexPath: %@ zIndex: %ld valid: %@ kind: %@", self, indexPathString, (long)self.zIndex, [self isValid] ? @"YES" : @"NO", self.representedElementKind ?: @"cell"]; - - return desc; -} - -- (BOOL)isValid { - switch (self.representedElementCategory) { - case UICollectionElementCategoryCell: - if (self.zIndex != 1) { - return NO; - } - return YES; - case UICollectionElementCategorySupplementaryView: - if ([self.representedElementKind isEqualToString:CSStickyHeaderParallaxHeader]) { - return YES; - } else if (self.zIndex < 1024) { - return NO; - } - return YES; - default: - return YES; - } -} - -@end - - -@implementation CSStickyHeaderFlowLayout (Debug) - -- (void)debugLayoutAttributes:(NSArray *)layoutAttributes { - __block BOOL hasInvalid = NO; - [layoutAttributes enumerateObjectsUsingBlock:^(CSStickyHeaderFlowLayoutAttributes *attr, NSUInteger idx, BOOL *stop) { - hasInvalid = ![attr isValid]; - if (hasInvalid) { - *stop = YES; - } - }]; - - if (hasInvalid) { - NSLog(@"CSStickyHeaderFlowLayout: %@", layoutAttributes); - } -} - -@end - diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift new file mode 100644 index 0000000..ffb869a --- /dev/null +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -0,0 +1,269 @@ +// +// CSStickyHeaderFlowLayout.swift +// CSStickyHeaderFlowLayoutDemo +// +// Created by Christian Enevoldsen on 13/09/16. +// Copyright © 2016 Jamz Tang. All rights reserved. +// + +import UIKit + + +public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" + +@objc public final class CSElementKind: NSObject { + public class func stickyHeaderParallaxHeader() -> String { + return CSStickyHeaderParallaxHeader + } +} + +public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { + + public var parallaxHeaderReferenceSize = CGSize.zero { + didSet { + invalidateLayout() + } + } + public var parallaxHeaderMinimumReferenceSize = CGSize.zero + public var parallaxHeaderAlwaysOnTop = true + public var disableStickyHeaders = false + public var disableStretching = false + + public override class func layoutAttributesClass() -> AnyClass { + return CSStickyHeaderFlowLayoutAttributes.self + } + + public override func initialLayoutAttributesForAppearingSupplementaryElementOfKind(elementKind: String, atIndexPath elementIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + + let attributes = super.initialLayoutAttributesForAppearingSupplementaryElementOfKind(elementKind, atIndexPath: elementIndexPath) + + guard elementKind == CSStickyHeaderParallaxHeader, let frame = attributes?.frame else { + return nil + } + + let origin = CGPoint( + x: frame.origin.x, + y: frame.origin.y + parallaxHeaderReferenceSize.height) + + attributes?.frame = CGRect(origin: origin, size: frame.size) + + return attributes + } + + public override func finalLayoutAttributesForDisappearingSupplementaryElementOfKind(elementKind: String, atIndexPath elementIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + + + guard elementKind == CSStickyHeaderParallaxHeader, + let attributes = self.layoutAttributesForSupplementaryViewOfKind( + elementKind, atIndexPath: elementIndexPath) as? CSStickyHeaderFlowLayoutAttributes + else { + return super.finalLayoutAttributesForDisappearingSupplementaryElementOfKind(elementKind, atIndexPath: elementIndexPath) + } + + updateParallaxHeaderAttributes(attributes) + + return attributes + } + + public override func layoutAttributesForSupplementaryViewOfKind(elementKind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + + let attributes = + super.layoutAttributesForSupplementaryViewOfKind(elementKind, + atIndexPath: indexPath) + + guard elementKind == CSStickyHeaderParallaxHeader && + attributes != nil else { return attributes } + + return CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: elementKind, + withIndexPath: indexPath) + + } + + public override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + + if collectionView?.dataSource == nil { + print("collection view has no datasource") + return nil + } + + let adjustedOrigin = CGPoint( + x: rect.origin.x, + y: rect.origin.y - parallaxHeaderReferenceSize.height) + + let adjustedRect = CGRect( + origin: adjustedOrigin, + size: rect.size) + + guard let originalAttributes = super.layoutAttributesForElementsInRect(adjustedRect) else { + return nil + } + + var headers = [Int : UICollectionViewLayoutAttributes]() + var lastCells = [Int : UICollectionViewLayoutAttributes]() + var visibleParallaxHeader = false + + var allItems = originalAttributes + .flatMap { + $0.copy() as? UICollectionViewLayoutAttributes + } + + allItems.forEach { [unowned self] (attributes) in + let origin = CGPoint( + x: attributes.frame.origin.x, + y: attributes.frame.origin.y + self.parallaxHeaderReferenceSize.height) + + let frame = CGRect( + origin: origin, + size: attributes.frame.size) + + attributes.frame = frame + + let indexPath = attributes.indexPath + let isHeader = + attributes.representedElementKind == UICollectionElementKindSectionHeader + let isFooter = + attributes.representedElementKind == UICollectionElementKindSectionFooter + + if isHeader { + headers[indexPath.section] = attributes + attributes.zIndex = 1024 + } + else if isFooter { + // Not handled + attributes.zIndex = 1 + } + else { + attributes.zIndex = 1 + if let currentAttribute = lastCells[indexPath.section] where indexPath.row > currentAttribute.indexPath.row { + lastCells[indexPath.section] = attributes + } else { + lastCells[indexPath.section] = attributes + } + + if indexPath.item == 0 && indexPath.section == 0 { + visibleParallaxHeader = true + } + } + } + + if CGRectGetMinY(rect) <= 0 || parallaxHeaderAlwaysOnTop { + visibleParallaxHeader = true + } + + if visibleParallaxHeader && CGSizeEqualToSize(.zero, self.parallaxHeaderReferenceSize) { + let currentAttributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, withIndexPath: NSIndexPath(index: 0)) + + updateParallaxHeaderAttributes(currentAttributes) + allItems.append(currentAttributes) + } + + if self.disableStickyHeaders == false { + lastCells.forEach({ (key, val) in + let indexPath = val.indexPath + let indexPathKey = indexPath.section + if let header = headers[indexPathKey] { + if !CGSizeEqualToSize(.zero, header.frame.size) { + self.updateHeaderAttributes(header, lastCellAttributes: lastCells[indexPathKey]) + } + } else { + if let header = self.layoutAttributesForSupplementaryViewOfKind(UICollectionElementKindSectionHeader, atIndexPath: NSIndexPath(forItem: 0, inSection: indexPath.section)) { + if !CGSizeEqualToSize(.zero, header.frame.size) { + allItems.append(header) + } + } + } + }) + } + + return allItems + } + + public override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + guard let attributes = super.layoutAttributesForItemAtIndexPath(indexPath)?.copy() as? UICollectionViewLayoutAttributes else { + print("not attributes") + return nil + } + + attributes.frame = CGRect( + origin: CGPoint(x: attributes.frame.origin.x, y: attributes.frame.origin.y + self.parallaxHeaderReferenceSize.height), + size: attributes.frame.size + ) + + return attributes + } + + public override func collectionViewContentSize() -> CGSize { + guard self.collectionView?.superview != nil else { + print("no size") + return .zero + } + + let size = super.collectionViewContentSize() + return CGSize(width: size.width, height: size.height + self.parallaxHeaderReferenceSize.height) + } + + public override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool { + return true + } + + private func updateHeaderAttributes(attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) { + + guard let lastCellAttributes = lastCellAttributes, let collectionView = self.collectionView else { + print ("no last cell") + return + } + + let currentBounds = collectionView.bounds + attributes.zIndex = 1024 + attributes.hidden = false + + var origin = attributes.frame.origin + let sectionMaxY = CGRectGetMaxY(lastCellAttributes.frame) - attributes.frame.size.height + var y = CGRectGetMaxY(currentBounds) - currentBounds.size.height - collectionView.contentInset.top + + if self.parallaxHeaderAlwaysOnTop { + y += parallaxHeaderMinimumReferenceSize.height + } + + let maxY = min(max(y, attributes.frame.origin.y), sectionMaxY) + + origin.y = maxY + + attributes.frame = CGRect(origin: origin, size: attributes.frame.size) + } + + private func updateParallaxHeaderAttributes(attributes: CSStickyHeaderFlowLayoutAttributes) { + + guard let collectionView = self.collectionView else { + return + } + + var frame = attributes.frame + frame.size = parallaxHeaderReferenceSize + let bounds = collectionView.bounds + let maxY = CGRectGetMaxY(frame) + + var y = min(maxY - self.parallaxHeaderMinimumReferenceSize.height, bounds.origin.y + collectionView.contentInset.top) + + let height = max(0, -y + maxY) + + let maxHeight = parallaxHeaderReferenceSize.height + let minHeight = parallaxHeaderMinimumReferenceSize.height + + attributes.progressiveness = (height - minHeight) / (maxHeight - minHeight) + attributes.zIndex = 0 + + if self.parallaxHeaderAlwaysOnTop && height <= parallaxHeaderMinimumReferenceSize.height { + let insetTop = collectionView.contentInset.top + y = collectionView.contentOffset.y + insetTop + attributes.zIndex = 2000 + } + + attributes.frame = CGRect( + x: frame.origin.x, + y: y, + width: frame.size.width, + height: self.disableStickyHeaders && height > maxHeight ? maxHeight : height) + } + +} diff --git a/Classes/CSStickyHeaderFlowLayoutAttributes.h b/Classes/CSStickyHeaderFlowLayoutAttributes.h deleted file mode 100644 index cae6001..0000000 --- a/Classes/CSStickyHeaderFlowLayoutAttributes.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of the CSStickyHeaderFlowLayout package. - * (c) James Tang - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import - -@interface CSStickyHeaderFlowLayoutAttributes : UICollectionViewLayoutAttributes - -// 0 = minimized, 1 = fully expanded, > 1 = stretched -@property (nonatomic) CGFloat progressiveness; - -@end diff --git a/Classes/CSStickyHeaderFlowLayoutAttributes.m b/Classes/CSStickyHeaderFlowLayoutAttributes.m deleted file mode 100644 index 39e261c..0000000 --- a/Classes/CSStickyHeaderFlowLayoutAttributes.m +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of the CSStickyHeaderFlowLayout package. - * (c) James Tang - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import "CSStickyHeaderFlowLayoutAttributes.h" - -@implementation CSStickyHeaderFlowLayoutAttributes - -- (id)copyWithZone:(NSZone *)zone { - typeof(self) copy = [super copyWithZone:zone]; - copy.progressiveness = self.progressiveness; - return copy; -} - -- (void)setZIndex:(NSInteger)zIndex { - [super setZIndex:zIndex]; - - // Fixes: Section header go behind cell when insert via performBatchUpdates #68 - // https://github.com/jamztang/CSStickyHeaderFlowLayout/issues/68#issuecomment-108678022 - // Reference: UICollectionView setLayout:animated: not preserving zIndex - // http://stackoverflow.com/questions/12659301/uicollectionview-setlayoutanimated-not-preserving-zindex - - // originally our solution is to translate the section header above the original z position, - // however, scroll indicator will be covered by those cells and section header if z position is >= 1 - // so instead we translate the original cell to be -1, and make sure the cell are hit test proven. - self.transform3D = CATransform3DMakeTranslation(0, 0, zIndex == 1 ? -1 : 0); -} - -@end diff --git a/Classes/CSStickyHeaderFlowLayoutAttributes.swift b/Classes/CSStickyHeaderFlowLayoutAttributes.swift new file mode 100644 index 0000000..3d0fdd5 --- /dev/null +++ b/Classes/CSStickyHeaderFlowLayoutAttributes.swift @@ -0,0 +1,30 @@ +// +// CSStickyHeaderFlowLayoutAttributes.swift +// CSStickyHeaderFlowLayoutDemo +// +// Created by Christian Enevoldsen on 13/09/16. +// Copyright © 2016 Jamz Tang. All rights reserved. +// + +import UIKit + +public class CSStickyHeaderFlowLayoutAttributes: UICollectionViewLayoutAttributes { + + public var progressiveness = CGFloat(0) + + public override func copyWithZone(zone: NSZone) -> AnyObject { + let copy = super.copyWithZone(zone) + guard let typedCopy = copy as? CSStickyHeaderFlowLayoutAttributes else { + return copy + } + + typedCopy.progressiveness = self.progressiveness + return typedCopy + } + + public override var zIndex: Int { + didSet { + self.transform3D = CATransform3DMakeTranslation(0, 0, zIndex == 1 ? -1 : 0) + } + } +} diff --git a/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/project.pbxproj b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1b11e6e --- /dev/null +++ b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/project.pbxproj @@ -0,0 +1,404 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + AF8F65831D886C04000961BD /* CSStickyHeaderFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8F65821D886C04000961BD /* CSStickyHeaderFlowLayout.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF8F658A1D886C04000961BD /* CSStickyHeaderFlowLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF8F657F1D886C04000961BD /* CSStickyHeaderFlowLayout.framework */; }; + AF8F658F1D886C04000961BD /* CSStickyHeaderFlowLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8F658E1D886C04000961BD /* CSStickyHeaderFlowLayoutTests.swift */; }; + AF8F659B1D886C5D000961BD /* CSStickyHeaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8F65991D886C5D000961BD /* CSStickyHeaderFlowLayout.swift */; }; + AF8F659C1D886C5D000961BD /* CSStickyHeaderFlowLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8F659A1D886C5D000961BD /* CSStickyHeaderFlowLayoutAttributes.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + AF8F658B1D886C04000961BD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AF8F65761D886C04000961BD /* Project object */; + proxyType = 1; + remoteGlobalIDString = AF8F657E1D886C04000961BD; + remoteInfo = CSStickyHeaderFlowLayout; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + AF8F657F1D886C04000961BD /* CSStickyHeaderFlowLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CSStickyHeaderFlowLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF8F65821D886C04000961BD /* CSStickyHeaderFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSStickyHeaderFlowLayout.h; sourceTree = ""; }; + AF8F65841D886C04000961BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AF8F65891D886C04000961BD /* CSStickyHeaderFlowLayoutTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CSStickyHeaderFlowLayoutTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + AF8F658E1D886C04000961BD /* CSStickyHeaderFlowLayoutTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSStickyHeaderFlowLayoutTests.swift; sourceTree = ""; }; + AF8F65901D886C04000961BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AF8F65991D886C5D000961BD /* CSStickyHeaderFlowLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CSStickyHeaderFlowLayout.swift; path = ../../../Classes/CSStickyHeaderFlowLayout.swift; sourceTree = ""; }; + AF8F659A1D886C5D000961BD /* CSStickyHeaderFlowLayoutAttributes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CSStickyHeaderFlowLayoutAttributes.swift; path = ../../../Classes/CSStickyHeaderFlowLayoutAttributes.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AF8F657B1D886C04000961BD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AF8F65861D886C04000961BD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AF8F658A1D886C04000961BD /* CSStickyHeaderFlowLayout.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AF8F65751D886C04000961BD = { + isa = PBXGroup; + children = ( + AF8F65811D886C04000961BD /* CSStickyHeaderFlowLayout */, + AF8F658D1D886C04000961BD /* CSStickyHeaderFlowLayoutTests */, + AF8F65801D886C04000961BD /* Products */, + ); + sourceTree = ""; + }; + AF8F65801D886C04000961BD /* Products */ = { + isa = PBXGroup; + children = ( + AF8F657F1D886C04000961BD /* CSStickyHeaderFlowLayout.framework */, + AF8F65891D886C04000961BD /* CSStickyHeaderFlowLayoutTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + AF8F65811D886C04000961BD /* CSStickyHeaderFlowLayout */ = { + isa = PBXGroup; + children = ( + AF8F65991D886C5D000961BD /* CSStickyHeaderFlowLayout.swift */, + AF8F659A1D886C5D000961BD /* CSStickyHeaderFlowLayoutAttributes.swift */, + AF8F65821D886C04000961BD /* CSStickyHeaderFlowLayout.h */, + AF8F65841D886C04000961BD /* Info.plist */, + ); + path = CSStickyHeaderFlowLayout; + sourceTree = ""; + }; + AF8F658D1D886C04000961BD /* CSStickyHeaderFlowLayoutTests */ = { + isa = PBXGroup; + children = ( + AF8F658E1D886C04000961BD /* CSStickyHeaderFlowLayoutTests.swift */, + AF8F65901D886C04000961BD /* Info.plist */, + ); + path = CSStickyHeaderFlowLayoutTests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + AF8F657C1D886C04000961BD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + AF8F65831D886C04000961BD /* CSStickyHeaderFlowLayout.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + AF8F657E1D886C04000961BD /* CSStickyHeaderFlowLayout */ = { + isa = PBXNativeTarget; + buildConfigurationList = AF8F65931D886C04000961BD /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */; + buildPhases = ( + AF8F657A1D886C04000961BD /* Sources */, + AF8F657B1D886C04000961BD /* Frameworks */, + AF8F657C1D886C04000961BD /* Headers */, + AF8F657D1D886C04000961BD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CSStickyHeaderFlowLayout; + productName = CSStickyHeaderFlowLayout; + productReference = AF8F657F1D886C04000961BD /* CSStickyHeaderFlowLayout.framework */; + productType = "com.apple.product-type.framework"; + }; + AF8F65881D886C04000961BD /* CSStickyHeaderFlowLayoutTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = AF8F65961D886C04000961BD /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutTests" */; + buildPhases = ( + AF8F65851D886C04000961BD /* Sources */, + AF8F65861D886C04000961BD /* Frameworks */, + AF8F65871D886C04000961BD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + AF8F658C1D886C04000961BD /* PBXTargetDependency */, + ); + name = CSStickyHeaderFlowLayoutTests; + productName = CSStickyHeaderFlowLayoutTests; + productReference = AF8F65891D886C04000961BD /* CSStickyHeaderFlowLayoutTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AF8F65761D886C04000961BD /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = CSStickyHeaderFlowLayout; + TargetAttributes = { + AF8F657E1D886C04000961BD = { + CreatedOnToolsVersion = 7.3.1; + }; + AF8F65881D886C04000961BD = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = AF8F65791D886C04000961BD /* Build configuration list for PBXProject "CSStickyHeaderFlowLayout" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = AF8F65751D886C04000961BD; + productRefGroup = AF8F65801D886C04000961BD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AF8F657E1D886C04000961BD /* CSStickyHeaderFlowLayout */, + AF8F65881D886C04000961BD /* CSStickyHeaderFlowLayoutTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + AF8F657D1D886C04000961BD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AF8F65871D886C04000961BD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + AF8F657A1D886C04000961BD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AF8F659C1D886C5D000961BD /* CSStickyHeaderFlowLayoutAttributes.swift in Sources */, + AF8F659B1D886C5D000961BD /* CSStickyHeaderFlowLayout.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AF8F65851D886C04000961BD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AF8F658F1D886C04000961BD /* CSStickyHeaderFlowLayoutTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + AF8F658C1D886C04000961BD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AF8F657E1D886C04000961BD /* CSStickyHeaderFlowLayout */; + targetProxy = AF8F658B1D886C04000961BD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + AF8F65911D886C04000961BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + AF8F65921D886C04000961BD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + AF8F65941D886C04000961BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CSStickyHeaderFlowLayout/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.csstickyheaderflowlayout.CSStickyHeaderFlowLayout; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + AF8F65951D886C04000961BD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CSStickyHeaderFlowLayout/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.csstickyheaderflowlayout.CSStickyHeaderFlowLayout; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + AF8F65971D886C04000961BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = CSStickyHeaderFlowLayoutTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.csstickyheaderflowlayout.CSStickyHeaderFlowLayoutTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + AF8F65981D886C04000961BD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = CSStickyHeaderFlowLayoutTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.csstickyheaderflowlayout.CSStickyHeaderFlowLayoutTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AF8F65791D886C04000961BD /* Build configuration list for PBXProject "CSStickyHeaderFlowLayout" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AF8F65911D886C04000961BD /* Debug */, + AF8F65921D886C04000961BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AF8F65931D886C04000961BD /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AF8F65941D886C04000961BD /* Debug */, + AF8F65951D886C04000961BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + AF8F65961D886C04000961BD /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AF8F65971D886C04000961BD /* Debug */, + AF8F65981D886C04000961BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = AF8F65761D886C04000961BD /* Project object */; +} diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme similarity index 61% rename from Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme rename to Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme index 543f210..98ad99c 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayoutCarthage.xcscheme +++ b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme @@ -14,10 +14,10 @@ buildForAnalyzing = "YES"> + BlueprintIdentifier = "AF8F657E1D886C04000961BD" + BuildableName = "CSStickyHeaderFlowLayout.framework" + BlueprintName = "CSStickyHeaderFlowLayout" + ReferencedContainer = "container:CSStickyHeaderFlowLayout.xcodeproj"> @@ -28,7 +28,26 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + + @@ -45,10 +64,10 @@ + BlueprintIdentifier = "AF8F657E1D886C04000961BD" + BuildableName = "CSStickyHeaderFlowLayout.framework" + BlueprintName = "CSStickyHeaderFlowLayout" + ReferencedContainer = "container:CSStickyHeaderFlowLayout.xcodeproj"> @@ -63,10 +82,10 @@ + BlueprintIdentifier = "AF8F657E1D886C04000961BD" + BuildableName = "CSStickyHeaderFlowLayout.framework" + BlueprintName = "CSStickyHeaderFlowLayout" + ReferencedContainer = "container:CSStickyHeaderFlowLayout.xcodeproj"> diff --git a/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h similarity index 69% rename from Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h rename to Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h index 8bc4428..559821e 100644 --- a/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h +++ b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h @@ -2,8 +2,8 @@ // CSStickyHeaderFlowLayout.h // CSStickyHeaderFlowLayout // -// Created by James Tang on 16/7/15. -// Copyright (c) 2015 Jamz Tang. All rights reserved. +// Created by Christian Enevoldsen on 13/09/16. +// Copyright © 2016 CSStickyHeaderFlowLayout. All rights reserved. // #import @@ -17,5 +17,3 @@ FOUNDATION_EXPORT const unsigned char CSStickyHeaderFlowLayoutVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import -#import -#import \ No newline at end of file diff --git a/Project/CSStickyHeaderFlowLayout/Info.plist b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/Info.plist similarity index 100% rename from Project/CSStickyHeaderFlowLayout/Info.plist rename to Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout/Info.plist diff --git a/Project/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift similarity index 73% rename from Project/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift rename to Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift index 7bd858e..fd14dd5 100644 --- a/Project/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift +++ b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutTests/CSStickyHeaderFlowLayoutTests.swift @@ -2,12 +2,12 @@ // CSStickyHeaderFlowLayoutTests.swift // CSStickyHeaderFlowLayoutTests // -// Created by James Tang on 16/7/15. -// Copyright (c) 2015 Jamz Tang. All rights reserved. +// Created by Christian Enevoldsen on 13/09/16. +// Copyright © 2016 CSStickyHeaderFlowLayout. All rights reserved. // -import UIKit import XCTest +@testable import CSStickyHeaderFlowLayout class CSStickyHeaderFlowLayoutTests: XCTestCase { @@ -23,12 +23,12 @@ class CSStickyHeaderFlowLayoutTests: XCTestCase { func testExample() { // This is an example of a functional test case. - XCTAssert(true, "Pass") + // Use XCTAssert and related functions to verify your tests produce the correct results. } func testPerformanceExample() { // This is an example of a performance test case. - self.measureBlock() { + self.measureBlock { // Put the code you want to measure the time of here. } } diff --git a/Project/CSStickyHeaderFlowLayoutTests/Info.plist b/Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutTests/Info.plist similarity index 100% rename from Project/CSStickyHeaderFlowLayoutTests/Info.plist rename to Project/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutTests/Info.plist diff --git a/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h b/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h deleted file mode 100644 index d3de69d..0000000 --- a/Project/CSStickyHeaderFlowLayoutCarthage/CSStickyHeaderFlowLayoutCarthage.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// 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 deleted file mode 100644 index d3de8ee..0000000 --- a/Project/CSStickyHeaderFlowLayoutCarthage/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - 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 05e7bc1..829d6c1 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj @@ -14,12 +14,6 @@ 1A14657818F13832003B643B /* CSStickyParallaxHeaderViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A14657718F13832003B643B /* CSStickyParallaxHeaderViewController.m */; }; 1A18AE5518F18764003DC8CF /* CSAlwaysOnTopHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A18AE5418F18764003DC8CF /* CSAlwaysOnTopHeader.xib */; }; 1A18AE5818F1947B003DC8CF /* CSAlwaysOnTopHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A18AE5718F1947B003DC8CF /* CSAlwaysOnTopHeader.m */; }; - 1A4B2F601B56C539007F67CC /* CSStickyHeaderFlowLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A4B2F551B56C539007F67CC /* CSStickyHeaderFlowLayout.framework */; }; - 1A4B2F691B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F681B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.swift */; }; - 1A4B2F791B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4B2F751B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A4B2F7A1B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F761B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m */; }; - 1A4B2F7B1B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4B2F771B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A4B2F7C1B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F781B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m */; }; 1AC0D88518AA38380072B3F1 /* CSParallaxHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AC0D88418AA38380072B3F1 /* CSParallaxHeader.xib */; }; 1AC0D88718AA39B50072B3F1 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AC0D88618AA39B50072B3F1 /* MapKit.framework */; }; 1AC0D88918AA3AF80072B3F1 /* CSSearchBarHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AC0D88818AA3AF80072B3F1 /* CSSearchBarHeader.xib */; }; @@ -34,44 +28,10 @@ 1AFE0969187D677000CA880A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1AFE0967187D677000CA880A /* Main.storyboard */; }; 1AFE096C187D677000CA880A /* CSParallaxHeaderViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE096B187D677000CA880A /* CSParallaxHeaderViewController.m */; }; 1AFE096E187D677000CA880A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1AFE096D187D677000CA880A /* Images.xcassets */; }; - 1AFE0975187D677000CA880A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AFE0974187D677000CA880A /* XCTest.framework */; }; - 1AFE0976187D677000CA880A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AFE0955187D677000CA880A /* Foundation.framework */; }; - 1AFE0977187D677000CA880A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AFE0959187D677000CA880A /* UIKit.framework */; }; - 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 */; }; + C74CBD50029E0337A7EE0F88 /* Pods_CSStickyHeaderFlowLayoutDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8417604E4BA3893CF506DC77 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 1A4B2F611B56C539007F67CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1AFE094A187D677000CA880A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A4B2F541B56C539007F67CC; - remoteInfo = CSStickyHeaderFlowLayout; - }; - 1A4B2F631B56C539007F67CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1AFE094A187D677000CA880A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1AFE0951187D677000CA880A; - remoteInfo = CSStickyHeaderFlowLayoutDemo; - }; - 1AFE0978187D677000CA880A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1AFE094A187D677000CA880A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1AFE0951187D677000CA880A; - remoteInfo = CSStickyHeaderFlowLayoutDemo; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 1A4B2F6D1B56C539007F67CC /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -97,15 +57,6 @@ 1A18AE5418F18764003DC8CF /* CSAlwaysOnTopHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSAlwaysOnTopHeader.xib; sourceTree = ""; }; 1A18AE5618F1947B003DC8CF /* CSAlwaysOnTopHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSAlwaysOnTopHeader.h; sourceTree = ""; }; 1A18AE5718F1947B003DC8CF /* CSAlwaysOnTopHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSAlwaysOnTopHeader.m; sourceTree = ""; }; - 1A4B2F551B56C539007F67CC /* CSStickyHeaderFlowLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CSStickyHeaderFlowLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A4B2F581B56C539007F67CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1A4B2F5F1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CSStickyHeaderFlowLayoutTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A4B2F671B56C539007F67CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1A4B2F681B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSStickyHeaderFlowLayoutTests.swift; sourceTree = ""; }; - 1A4B2F751B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSStickyHeaderFlowLayout.h; path = ../../Classes/CSStickyHeaderFlowLayout.h; sourceTree = ""; }; - 1A4B2F761B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CSStickyHeaderFlowLayout.m; path = ../../Classes/CSStickyHeaderFlowLayout.m; sourceTree = ""; }; - 1A4B2F771B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSStickyHeaderFlowLayoutAttributes.h; path = ../../Classes/CSStickyHeaderFlowLayoutAttributes.h; sourceTree = ""; }; - 1A4B2F781B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CSStickyHeaderFlowLayoutAttributes.m; path = ../../Classes/CSStickyHeaderFlowLayoutAttributes.m; sourceTree = ""; }; 1AC0D88418AA38380072B3F1 /* CSParallaxHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSParallaxHeader.xib; sourceTree = ""; }; 1AC0D88618AA39B50072B3F1 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 1AC0D88818AA3AF80072B3F1 /* CSSearchBarHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSSearchBarHeader.xib; sourceTree = ""; }; @@ -127,39 +78,15 @@ 1AFE096A187D677000CA880A /* CSParallaxHeaderViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSParallaxHeaderViewController.h; sourceTree = ""; }; 1AFE096B187D677000CA880A /* CSParallaxHeaderViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSParallaxHeaderViewController.m; sourceTree = ""; }; 1AFE096D187D677000CA880A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 1AFE0973187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CSStickyHeaderFlowLayoutDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 1AFE0974187D677000CA880A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 1AFE097C187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CSStickyHeaderFlowLayoutDemoTests-Info.plist"; sourceTree = ""; }; - 1AFE097E187D677000CA880A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 1AFE0980187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSStickyHeaderFlowLayoutDemoTests.m; sourceTree = ""; }; 1AFE0990187D688300CA880A /* CSCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSCell.h; sourceTree = ""; }; 1AFE0991187D688300CA880A /* CSCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSCell.m; sourceTree = ""; }; - 229ECB0968A8A873A6AEB59D /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; - 491370024AF54DD8BFB773DA /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 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 = ""; }; + 80BB814ECEE90720372C6F79 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig"; sourceTree = ""; }; + 8417604E4BA3893CF506DC77 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CSStickyHeaderFlowLayoutDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F96FC1299AF039CDEF659CAA /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1A4B2F511B56C539007F67CC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F5C1B56C539007F67CC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F601B56C539007F67CC /* CSStickyHeaderFlowLayout.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1AFE094F187D677000CA880A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -168,88 +95,20 @@ 1AFE0958187D677000CA880A /* CoreGraphics.framework in Frameworks */, 1AFE095A187D677000CA880A /* UIKit.framework in Frameworks */, 1AFE0956187D677000CA880A /* Foundation.framework in Frameworks */, - B36BC395070946668DCF2AFF /* libPods.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1AFE0970187D677000CA880A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1AFE0975187D677000CA880A /* XCTest.framework in Frameworks */, - 1AFE0977187D677000CA880A /* UIKit.framework in Frameworks */, - 1AFE0976187D677000CA880A /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AF1D0D421D63203300F9FA68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + C74CBD50029E0337A7EE0F88 /* Pods_CSStickyHeaderFlowLayoutDemo.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 034852391EBFCBDC0011D58A /* Pods */ = { - isa = PBXGroup; - children = ( - 6BDE4094D41E4DE6515DF055 /* Pods.debug.xcconfig */, - AD97E1BDF2B20F6336CBF8D7 /* Pods.release.xcconfig */, - ); - name = Pods; - path = ..; - sourceTree = ""; - }; - 1A4B2F561B56C539007F67CC /* CSStickyHeaderFlowLayout */ = { - isa = PBXGroup; - children = ( - 1A4B2F751B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h */, - 1A4B2F761B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m */, - 1A4B2F771B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h */, - 1A4B2F781B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m */, - 1A4B2F571B56C539007F67CC /* Supporting Files */, - ); - path = CSStickyHeaderFlowLayout; - sourceTree = ""; - }; - 1A4B2F571B56C539007F67CC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1A4B2F581B56C539007F67CC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 1A4B2F651B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */ = { - isa = PBXGroup; - children = ( - 1A4B2F681B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.swift */, - 1A4B2F661B56C539007F67CC /* Supporting Files */, - ); - path = CSStickyHeaderFlowLayoutTests; - sourceTree = ""; - }; - 1A4B2F661B56C539007F67CC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1A4B2F671B56C539007F67CC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; 1AFE0949187D677000CA880A = { isa = PBXGroup; children = ( 1AFE095B187D677000CA880A /* CSStickyHeaderFlowLayoutDemo */, - 1AFE097A187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */, - 1A4B2F561B56C539007F67CC /* CSStickyHeaderFlowLayout */, - 1A4B2F651B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */, - AF1D0D471D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */, 1AFE0954187D677000CA880A /* Frameworks */, 1AFE0953187D677000CA880A /* Products */, - 9DDE38A70ED787DEBF9A6411 /* Pods */, + 304440674C026B828247E81F /* Pods */, ); sourceTree = ""; }; @@ -257,10 +116,6 @@ isa = PBXGroup; children = ( 1AFE0952187D677000CA880A /* CSStickyHeaderFlowLayoutDemo.app */, - 1AFE0973187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.xctest */, - 1A4B2F551B56C539007F67CC /* CSStickyHeaderFlowLayout.framework */, - 1A4B2F5F1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.xctest */, - AF1D0D461D63203300F9FA68 /* CSStickyHeaderFlowLayout.framework */, ); name = Products; sourceTree = ""; @@ -273,7 +128,7 @@ 1AFE0957187D677000CA880A /* CoreGraphics.framework */, 1AFE0959187D677000CA880A /* UIKit.framework */, 1AFE0974187D677000CA880A /* XCTest.framework */, - 491370024AF54DD8BFB773DA /* libPods.a */, + 8417604E4BA3893CF506DC77 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */, ); name = Frameworks; sourceTree = ""; @@ -304,24 +159,6 @@ name = "Supporting Files"; sourceTree = ""; }; - 1AFE097A187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */ = { - isa = PBXGroup; - children = ( - 1AFE0980187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.m */, - 1AFE097B187D677000CA880A /* Supporting Files */, - ); - path = CSStickyHeaderFlowLayoutDemoTests; - sourceTree = ""; - }; - 1AFE097B187D677000CA880A /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1AFE097C187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests-Info.plist */, - 1AFE097D187D677000CA880A /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; 1AFE098A187D67F500CA880A /* ViewControllers */ = { isa = PBXGroup; children = ( @@ -347,7 +184,6 @@ 1A0BCA1F1A80B25D005D9F7C /* CSSectionHeader.h */, 1A0BCA201A80B25D005D9F7C /* CSSectionHeader.m */, 1A18AE5618F1947B003DC8CF /* CSAlwaysOnTopHeader.h */, - 034852391EBFCBDC0011D58A /* Pods */, 1A18AE5718F1947B003DC8CF /* CSAlwaysOnTopHeader.m */, 1AC0D88418AA38380072B3F1 /* CSParallaxHeader.xib */, 1AC0D88818AA3AF80072B3F1 /* CSSearchBarHeader.xib */, @@ -357,96 +193,29 @@ name = Cell; sourceTree = ""; }; - 9DDE38A70ED787DEBF9A6411 /* Pods */ = { + 304440674C026B828247E81F /* Pods */ = { isa = PBXGroup; children = ( - 58D371C1C7F562AB1D536637 /* Pods.debug.xcconfig */, - 229ECB0968A8A873A6AEB59D /* Pods.release.xcconfig */, + 80BB814ECEE90720372C6F79 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */, + F96FC1299AF039CDEF659CAA /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */, ); name = Pods; sourceTree = ""; }; - AF1D0D471D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */ = { - isa = PBXGroup; - children = ( - AF1D0D481D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage.h */, - AF1D0D4A1D63203300F9FA68 /* Info.plist */, - ); - path = CSStickyHeaderFlowLayoutCarthage; - sourceTree = ""; - }; /* End PBXGroup section */ -/* Begin PBXHeadersBuildPhase section */ - 1A4B2F521B56C539007F67CC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F791B56C5A6007F67CC /* CSStickyHeaderFlowLayout.h in Headers */, - 1A4B2F7B1B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.h in Headers */, - ); - 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 */ - 1A4B2F541B56C539007F67CC /* CSStickyHeaderFlowLayout */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1A4B2F731B56C539007F67CC /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */; - buildPhases = ( - 1A4B2F501B56C539007F67CC /* Sources */, - 1A4B2F511B56C539007F67CC /* Frameworks */, - 1A4B2F521B56C539007F67CC /* Headers */, - 1A4B2F531B56C539007F67CC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CSStickyHeaderFlowLayout; - productName = CSStickyHeaderFlowLayout; - productReference = 1A4B2F551B56C539007F67CC /* CSStickyHeaderFlowLayout.framework */; - productType = "com.apple.product-type.framework"; - }; - 1A4B2F5E1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1A4B2F741B56C539007F67CC /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutTests" */; - buildPhases = ( - 1A4B2F5B1B56C539007F67CC /* Sources */, - 1A4B2F5C1B56C539007F67CC /* Frameworks */, - 1A4B2F5D1B56C539007F67CC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 1A4B2F621B56C539007F67CC /* PBXTargetDependency */, - 1A4B2F641B56C539007F67CC /* PBXTargetDependency */, - ); - name = CSStickyHeaderFlowLayoutTests; - productName = CSStickyHeaderFlowLayoutTests; - productReference = 1A4B2F5F1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 1AFE0951187D677000CA880A /* CSStickyHeaderFlowLayoutDemo */ = { isa = PBXNativeTarget; buildConfigurationList = 1AFE0984187D677000CA880A /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutDemo" */; buildPhases = ( - 5D2E1DC23FE5404B8BEA4738 /* Check Pods Manifest.lock */, + 8E5951F81B9585B28F31405E /* [CP] Check Pods Manifest.lock */, 1AFE094E187D677000CA880A /* Sources */, 1AFE094F187D677000CA880A /* Frameworks */, 1AFE0950187D677000CA880A /* Resources */, - D421C3C38E994F76AF2EBD05 /* Copy Pods Resources */, 1A4B2F6D1B56C539007F67CC /* Embed Frameworks */, + 9DF5EEA1C63C1B238AB1C6C5 /* [CP] Embed Pods Frameworks */, + 2713ED7E2B41E30D1153BA8B /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -457,66 +226,15 @@ productReference = 1AFE0952187D677000CA880A /* CSStickyHeaderFlowLayoutDemo.app */; productType = "com.apple.product-type.application"; }; - 1AFE0972187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1AFE0987187D677000CA880A /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutDemoTests" */; - buildPhases = ( - 1AFE096F187D677000CA880A /* Sources */, - 1AFE0970187D677000CA880A /* Frameworks */, - 1AFE0971187D677000CA880A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 1AFE0979187D677000CA880A /* PBXTargetDependency */, - ); - name = CSStickyHeaderFlowLayoutDemoTests; - productName = CSStickyHeaderFlowLayoutDemoTests; - 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 */ 1AFE094A187D677000CA880A /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0700; + LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Jamz Tang"; - TargetAttributes = { - 1A4B2F541B56C539007F67CC = { - CreatedOnToolsVersion = 6.3.1; - }; - 1A4B2F5E1B56C539007F67CC = { - CreatedOnToolsVersion = 6.3.1; - TestTargetID = 1AFE0951187D677000CA880A; - }; - 1AFE0972187D677000CA880A = { - TestTargetID = 1AFE0951187D677000CA880A; - }; - AF1D0D451D63203300F9FA68 = { - CreatedOnToolsVersion = 7.3.1; - }; - }; }; buildConfigurationList = 1AFE094D187D677000CA880A /* Build configuration list for PBXProject "CSStickyHeaderFlowLayoutDemo" */; compatibilityVersion = "Xcode 3.2"; @@ -532,29 +250,11 @@ projectRoot = ""; targets = ( 1AFE0951187D677000CA880A /* CSStickyHeaderFlowLayoutDemo */, - 1AFE0972187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests */, - 1A4B2F541B56C539007F67CC /* CSStickyHeaderFlowLayout */, - 1A4B2F5E1B56C539007F67CC /* CSStickyHeaderFlowLayoutTests */, - AF1D0D451D63203300F9FA68 /* CSStickyHeaderFlowLayoutCarthage */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 1A4B2F531B56C539007F67CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F5D1B56C539007F67CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1AFE0950187D677000CA880A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -570,32 +270,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1AFE0971187D677000CA880A /* Resources */ = { - isa = PBXResourcesBuildPhase; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2713ED7E2B41E30D1153BA8B /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( - 1AFE097F187D677000CA880A /* InfoPlist.strings in Resources */, ); - runOnlyForDeploymentPostprocessing = 0; - }; - AF1D0D441D63203300F9FA68 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-resources.sh\"\n"; + showEnvVarsInLog = 0; }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 5D2E1DC23FE5404B8BEA4738 /* Check Pods Manifest.lock */ = { + 8E5951F81B9585B28F31405E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -603,41 +303,24 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - D421C3C38E994F76AF2EBD05 /* Copy Pods Resources */ = { + 9DF5EEA1C63C1B238AB1C6C5 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1A4B2F501B56C539007F67CC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F7C1B56C5A6007F67CC /* CSStickyHeaderFlowLayoutAttributes.m in Sources */, - 1A4B2F7A1B56C5A6007F67CC /* CSStickyHeaderFlowLayout.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F5B1B56C539007F67CC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F691B56C539007F67CC /* CSStickyHeaderFlowLayoutTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1AFE094E187D677000CA880A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -655,43 +338,8 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1AFE096F187D677000CA880A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1AFE0981187D677000CA880A /* CSStickyHeaderFlowLayoutDemoTests.m in Sources */, - ); - 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 */ - 1A4B2F621B56C539007F67CC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1A4B2F541B56C539007F67CC /* CSStickyHeaderFlowLayout */; - targetProxy = 1A4B2F611B56C539007F67CC /* PBXContainerItemProxy */; - }; - 1A4B2F641B56C539007F67CC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1AFE0951187D677000CA880A /* CSStickyHeaderFlowLayoutDemo */; - targetProxy = 1A4B2F631B56C539007F67CC /* PBXContainerItemProxy */; - }; - 1AFE0979187D677000CA880A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1AFE0951187D677000CA880A /* CSStickyHeaderFlowLayoutDemo */; - targetProxy = 1AFE0978187D677000CA880A /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin PBXVariantGroup section */ 1AFE095E187D677000CA880A /* InfoPlist.strings */ = { isa = PBXVariantGroup; @@ -709,126 +357,9 @@ name = Main.storyboard; sourceTree = ""; }; - 1AFE097D187D677000CA880A /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 1AFE097E187D677000CA880A /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 1A4B2F6F1B56C539007F67CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_UNREACHABLE_CODE = YES; - 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_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = CSStickyHeaderFlowLayout/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.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 1A4B2F701B56C539007F67CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - 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 = CSStickyHeaderFlowLayout/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.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 1A4B2F711B56C539007F67CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_UNREACHABLE_CODE = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = CSStickyHeaderFlowLayoutTests/Info.plist; - 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.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CSStickyHeaderFlowLayoutDemo.app/CSStickyHeaderFlowLayoutDemo"; - }; - name = Debug; - }; - 1A4B2F721B56C539007F67CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_UNREACHABLE_CODE = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = CSStickyHeaderFlowLayoutTests/Info.plist; - 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.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CSStickyHeaderFlowLayoutDemo.app/CSStickyHeaderFlowLayoutDemo"; - }; - name = Release; - }; 1AFE0982187D677000CA880A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -862,7 +393,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -894,7 +425,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -902,13 +433,14 @@ }; 1AFE0985187D677000CA880A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 58D371C1C7F562AB1D536637 /* Pods.debug.xcconfig */; + baseConfigurationReference = 80BB814ECEE90720372C6F79 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Prefix.pch"; INFOPLIST_FILE = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -918,13 +450,14 @@ }; 1AFE0986187D677000CA880A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 229ECB0968A8A873A6AEB59D /* Pods.release.xcconfig */; + baseConfigurationReference = F96FC1299AF039CDEF659CAA /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Prefix.pch"; INFOPLIST_FILE = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -932,127 +465,9 @@ }; name = Release; }; - 1AFE0988187D677000CA880A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CSStickyHeaderFlowLayoutDemo.app/CSStickyHeaderFlowLayoutDemo"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - 1AFE0989187D677000CA880A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CSStickyHeaderFlowLayoutDemo.app/CSStickyHeaderFlowLayoutDemo"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "CSStickyHeaderFlowLayoutDemo/CSStickyHeaderFlowLayoutDemo-Prefix.pch"; - INFOPLIST_FILE = "CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - 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 */ - 1A4B2F731B56C539007F67CC /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A4B2F6F1B56C539007F67CC /* Debug */, - 1A4B2F701B56C539007F67CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1A4B2F741B56C539007F67CC /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A4B2F711B56C539007F67CC /* Debug */, - 1A4B2F721B56C539007F67CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1AFE094D187D677000CA880A /* Build configuration list for PBXProject "CSStickyHeaderFlowLayoutDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1071,23 +486,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1AFE0987187D677000CA880A /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayoutDemoTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1AFE0988187D677000CA880A /* Debug */, - 1AFE0989187D677000CA880A /* Release */, - ); - 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.xcworkspace/contents.xcworkspacedata b/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/contents.xcworkspacedata index accf9bd..e20aede 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/contents.xcworkspacedata +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcworkspace/contents.xcworkspacedata @@ -1,9 +1,6 @@ - - diff --git a/Project/CSStickyHeaderFlowLayoutDemo/Base.lproj/Main.storyboard b/Project/CSStickyHeaderFlowLayoutDemo/Base.lproj/Main.storyboard index 3af57fb..8a88200 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/Base.lproj/Main.storyboard +++ b/Project/CSStickyHeaderFlowLayoutDemo/Base.lproj/Main.storyboard @@ -1,8 +1,7 @@ - + - - + @@ -13,7 +12,7 @@ - + @@ -21,7 +20,7 @@ - + @@ -30,7 +29,7 @@ @@ -128,7 +127,7 @@ - + @@ -136,7 +135,7 @@ - + @@ -145,7 +144,7 @@ @@ -209,7 +208,7 @@ - + @@ -217,7 +216,7 @@ - + @@ -226,7 +225,7 @@ @@ -289,7 +288,7 @@ - + @@ -297,7 +296,7 @@ - + diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.m b/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.m index 47d17b2..8a71397 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.m @@ -7,7 +7,7 @@ // #import "CSAlwaysOnTopHeader.h" -#import "CSStickyHeaderFlowLayoutAttributes.h" +@import CSStickyHeaderFlowLayout; @implementation CSAlwaysOnTopHeader diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.xib b/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.xib index 8a7b5d1..57aa273 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.xib +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSAlwaysOnTopHeader.xib @@ -1,8 +1,7 @@ - + - - + @@ -39,12 +38,6 @@ - @@ -148,9 +146,4 @@ - - - - - diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeader.xib b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeader.xib index f786730..0982c8d 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeader.xib +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeader.xib @@ -1,8 +1,7 @@ - + - - + @@ -32,9 +31,4 @@ - - - - - diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m index 186e175..1d0515f 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m @@ -9,7 +9,8 @@ #import "CSGrowHeaderViewController.h" #import "CSCell.h" #import "CSSectionHeader.h" -#import "CSStickyHeaderFlowLayout.h" + +@import CSStickyHeaderFlowLayout; @interface CSGrowHeaderViewController () @@ -47,9 +48,9 @@ - (void)viewDidLoad self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(44, 0, 0, 0); [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:CSStickyHeaderParallaxHeader + forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; - + } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { @@ -101,7 +102,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:CSStickyHeaderParallaxHeader]) { + } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m index d718350..660635e 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m @@ -9,7 +9,7 @@ #import "CSLockedHeaderViewController.h" #import "CSCell.h" #import "CSSectionHeader.h" -#import "CSStickyHeaderFlowLayout.h" +#import @interface CSLockedHeaderViewController () @@ -40,7 +40,7 @@ - (void)viewDidLoad self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(44, 0, 0, 0); [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:CSStickyHeaderParallaxHeader + forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStylePlain target:self action:@selector(add:)]; @@ -157,7 +157,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:CSStickyHeaderParallaxHeader]) { + } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeader.xib b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeader.xib index 3431f51..ac05651 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeader.xib +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeader.xib @@ -1,8 +1,7 @@ - + - - + @@ -31,9 +30,4 @@ - - - - - diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m index 029b02b..1c03fb8 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m @@ -9,7 +9,7 @@ #import "CSParallaxHeaderViewController.h" #import "CSCell.h" #import "CSSectionHeader.h" -#import "CSStickyHeaderFlowLayout.h" +@import CSStickyHeaderFlowLayout; #ifdef DEBUG_PULL_TO_REFRESH #import "MyPulling.h" @@ -47,7 +47,7 @@ - (void)viewDidLoad [self reloadLayout]; [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:CSStickyHeaderParallaxHeader + forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; #ifdef DEBUG_PULL_TO_REFRESH @@ -119,7 +119,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:CSStickyHeaderParallaxHeader]) { + } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSSearchBarHeader.xib b/Project/CSStickyHeaderFlowLayoutDemo/CSSearchBarHeader.xib index ae2a3d6..47bcc12 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSSearchBarHeader.xib +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSSearchBarHeader.xib @@ -1,8 +1,7 @@ - + - - + @@ -32,9 +31,4 @@ - - - - - diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m index ca75d50..a960802 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m @@ -9,7 +9,7 @@ #import "CSStickyParallaxHeaderViewController.h" #import "CSCell.h" #import "CSSectionHeader.h" -#import "CSStickyHeaderFlowLayout.h" +@import CSStickyHeaderFlowLayout; @interface CSStickyParallaxHeaderViewController () @@ -62,9 +62,8 @@ - (void)viewDidLoad // Also insets the scroll indicator so it appears below the search bar self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, 0); - [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:CSStickyHeaderParallaxHeader + forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; } @@ -76,7 +75,7 @@ - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInte - (void)reloadLayout { CSStickyHeaderFlowLayout *layout = (id)self.collectionViewLayout; - + if ([layout isKindOfClass:[CSStickyHeaderFlowLayout class]]) { layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, 426); layout.parallaxHeaderMinimumReferenceSize = CGSizeMake(self.view.frame.size.width, 110); @@ -120,7 +119,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView return cell; - } else if ([kind isEqualToString:CSStickyHeaderParallaxHeader]) { + } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/Images.xcassets/AppIcon.appiconset/Contents.json b/Project/CSStickyHeaderFlowLayoutDemo/Images.xcassets/AppIcon.appiconset/Contents.json index 33ec0bc..118c98f 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Project/CSStickyHeaderFlowLayoutDemo/Images.xcassets/AppIcon.appiconset/Contents.json @@ -5,11 +5,21 @@ "size" : "29x29", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "60x60", diff --git a/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist b/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist deleted file mode 100644 index 169b6f7..0000000 --- a/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests.m b/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests.m deleted file mode 100644 index 4fc774f..0000000 --- a/Project/CSStickyHeaderFlowLayoutDemoTests/CSStickyHeaderFlowLayoutDemoTests.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// CSStickyHeaderFlowLayoutDemoTests.m -// CSStickyHeaderFlowLayoutDemoTests -// -// Created by Jamz Tang on 8/1/14. -// Copyright (c) 2014 Jamz Tang. All rights reserved. -// - -#import - -@interface CSStickyHeaderFlowLayoutDemoTests : XCTestCase - -@end - -@implementation CSStickyHeaderFlowLayoutDemoTests - -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} - -@end diff --git a/Project/CSStickyHeaderFlowLayoutDemoTests/en.lproj/InfoPlist.strings b/Project/CSStickyHeaderFlowLayoutDemoTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/Project/CSStickyHeaderFlowLayoutDemoTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/Project/Podfile b/Project/Podfile index aca0175..83b44e6 100644 --- a/Project/Podfile +++ b/Project/Podfile @@ -1,2 +1,7 @@ -platform :ios, '7.0' -pod "CSStickyHeaderFlowLayout", :path => "../" +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +target 'CSStickyHeaderFlowLayoutDemo' do + use_frameworks! + pod 'CSStickyHeaderFlowLayout', :path => '../' +end diff --git a/Project/Podfile.lock b/Project/Podfile.lock index e838b82..d5f9616 100644 --- a/Project/Podfile.lock +++ b/Project/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - CSStickyHeaderFlowLayout (0.2.10) + - CSStickyHeaderFlowLayout (0.2.11) DEPENDENCIES: - CSStickyHeaderFlowLayout (from `../`) @@ -9,6 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - CSStickyHeaderFlowLayout: 5366582779d8b7c9ba9b9cc729c218cc23888776 + CSStickyHeaderFlowLayout: 835d734b40e45460a4a72d3f2ca06dcdcd4f0dad -COCOAPODS: 0.38.2 +PODFILE CHECKSUM: a352297494e8941361f57449bc7baadf12de1844 + +COCOAPODS: 1.0.1 diff --git a/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h b/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h deleted file mode 120000 index bf691a1..0000000 --- a/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Classes/CSStickyHeaderFlowLayout.h \ No newline at end of file diff --git a/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h b/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h deleted file mode 120000 index d8b323e..0000000 --- a/Project/Pods/Headers/Private/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Classes/CSStickyHeaderFlowLayoutAttributes.h \ No newline at end of file diff --git a/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h b/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h deleted file mode 120000 index bf691a1..0000000 --- a/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Classes/CSStickyHeaderFlowLayout.h \ No newline at end of file diff --git a/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h b/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h deleted file mode 120000 index d8b323e..0000000 --- a/Project/Pods/Headers/Public/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayoutAttributes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Classes/CSStickyHeaderFlowLayoutAttributes.h \ No newline at end of file diff --git a/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json b/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json index 3f9d251..0a96f64 100644 --- a/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json +++ b/Project/Pods/Local Podspecs/CSStickyHeaderFlowLayout.podspec.json @@ -1,6 +1,6 @@ { "name": "CSStickyHeaderFlowLayout", - "version": "0.2.10", + "version": "0.2.11", "summary": "Parallax and Sticky header done right using UICollectionViewLayout", "description": "UICollectionView are flexible and you can use supplementary views to\nanything you wanted.", "homepage": "http://github.com/jamztang/CSStickyHeaderFlowLayout", @@ -11,13 +11,13 @@ }, "source": { "git": "https://github.com/jamztang/CSStickyHeaderFlowLayout.git", - "tag": "0.2.10" + "tag": "0.2.11" }, "platforms": { - "ios": "7.0" + "ios": "9.0" }, "requires_arc": true, - "source_files": "Classes", + "source_files": "Classes/**/*.{swift}", "ios": { "exclude_files": "Classes/osx" }, diff --git a/Project/Pods/Manifest.lock b/Project/Pods/Manifest.lock index e838b82..d5f9616 100644 --- a/Project/Pods/Manifest.lock +++ b/Project/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - CSStickyHeaderFlowLayout (0.2.10) + - CSStickyHeaderFlowLayout (0.2.11) DEPENDENCIES: - CSStickyHeaderFlowLayout (from `../`) @@ -9,6 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - CSStickyHeaderFlowLayout: 5366582779d8b7c9ba9b9cc729c218cc23888776 + CSStickyHeaderFlowLayout: 835d734b40e45460a4a72d3f2ca06dcdcd4f0dad -COCOAPODS: 0.38.2 +PODFILE CHECKSUM: a352297494e8941361f57449bc7baadf12de1844 + +COCOAPODS: 1.0.1 diff --git a/Project/Pods/Pods.xcodeproj/project.pbxproj b/Project/Pods/Pods.xcodeproj/project.pbxproj index e44e841..eac28ab 100644 --- a/Project/Pods/Pods.xcodeproj/project.pbxproj +++ b/Project/Pods/Pods.xcodeproj/project.pbxproj @@ -7,205 +7,221 @@ objects = { /* Begin PBXBuildFile section */ - 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 */; }; + 144CC6735F59E48C84E24173A1A9D3AF /* CSStickyHeaderFlowLayout-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 047087A5430E7B67AAF2144543EF7E03 /* CSStickyHeaderFlowLayout-dummy.m */; }; + 1AF3A35C2A4855F6158F56DDD59C39C4 /* CSStickyHeaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = C713EF3C0315A26E95D46E322CE35347 /* CSStickyHeaderFlowLayout.swift */; }; + 1B7C616CCC1C5B020D5A48EDC03D9BB3 /* CSStickyHeaderFlowLayoutAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DADB778505AD155A90B3FC8ACAF9BDA5 /* CSStickyHeaderFlowLayoutAttributes.swift */; }; + 3471F34B250913CA877DC50E049C4EA1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + 3C9C0BF933532F020CB6F5B10A7BA863 /* CSStickyHeaderFlowLayout-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CFAA15BA144CF1F29E11E40D1140282D /* CSStickyHeaderFlowLayout-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A196EABFD21326B51107B3D38823C19C /* Pods-CSStickyHeaderFlowLayoutDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7DC8DC786B6B8F43245BFED9BDAD95B /* Pods-CSStickyHeaderFlowLayoutDemo-dummy.m */; }; + EFF65CB4B41835ED82CE848E556E0317 /* Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E86EC8727F464782C2CF65ED684F40 /* Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F19E0CE6282BD6276D63A9A2DECA1071 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 169C3A6CF1ED7AC1ADCA5B3DE678753D /* PBXContainerItemProxy */ = { + 3F4235CDD1C89E752147E383BCAADA4F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 32CF90DBE2A4842932209237BC634C11; + remoteGlobalIDString = 95E95694BB646B360A7AB6093CD9789A; remoteInfo = CSStickyHeaderFlowLayout; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 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 = ""; }; + 02FC7498C2A1983A9AADBBB43666560F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 047087A5430E7B67AAF2144543EF7E03 /* CSStickyHeaderFlowLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CSStickyHeaderFlowLayout-dummy.m"; sourceTree = ""; }; + 2A4305CA927824DCB28661BCDF0CC04A /* Pods-CSStickyHeaderFlowLayoutDemo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CSStickyHeaderFlowLayoutDemo-resources.sh"; sourceTree = ""; }; + 2D222472F4D50374D90AA9EF7FAD82C6 /* Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown"; sourceTree = ""; }; + 384CCBF47AE047ECE00D8CBD3080E165 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CSStickyHeaderFlowLayoutDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 446CDB6A2DBB76105545760728168C1E /* CSStickyHeaderFlowLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CSStickyHeaderFlowLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BFB8E098006D15C7D995C6686259BEB /* CSStickyHeaderFlowLayout.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = CSStickyHeaderFlowLayout.modulemap; sourceTree = ""; }; + 5F29F27AC16D22737F243DE503F8150C /* CSStickyHeaderFlowLayout-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CSStickyHeaderFlowLayout-prefix.pch"; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9EB0F3B70596476C901D335C6C2C0A5E /* CSStickyHeaderFlowLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CSStickyHeaderFlowLayout.xcconfig; sourceTree = ""; }; + C2E86EC8727F464782C2CF65ED684F40 /* Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h"; sourceTree = ""; }; + C5FCCC205CF338F410D4F27FDE9005EA /* Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh"; sourceTree = ""; }; + C713EF3C0315A26E95D46E322CE35347 /* CSStickyHeaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CSStickyHeaderFlowLayout.swift; sourceTree = ""; }; + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + CFAA15BA144CF1F29E11E40D1140282D /* CSStickyHeaderFlowLayout-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CSStickyHeaderFlowLayout-umbrella.h"; sourceTree = ""; }; + D091EC71A1E90EC563CC8041B2F1F3EB /* Pods-CSStickyHeaderFlowLayoutDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-CSStickyHeaderFlowLayoutDemo.modulemap"; sourceTree = ""; }; + D9FC317AD965AE723290E3CD7319FB7A /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig"; sourceTree = ""; }; + DADB778505AD155A90B3FC8ACAF9BDA5 /* CSStickyHeaderFlowLayoutAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CSStickyHeaderFlowLayoutAttributes.swift; sourceTree = ""; }; + F20CE55E6F6DB06B57AB5ED1D2E055B0 /* Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist"; sourceTree = ""; }; + F7DC8DC786B6B8F43245BFED9BDAD95B /* Pods-CSStickyHeaderFlowLayoutDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CSStickyHeaderFlowLayoutDemo-dummy.m"; sourceTree = ""; }; + FCCB5E38F1A6C33C2ADA1B73B653FD63 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig"; sourceTree = ""; }; + FDAC068BA9EA5DFF688240547A14D317 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0C3AD088E4FF32DE0DCCC24F189646F4 /* Frameworks */ = { + 528857BC1240C88E60DFEA0ADECEB9C1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C6840549AF89761FFC581FBB8197A427 /* Foundation.framework in Frameworks */, + F19E0CE6282BD6276D63A9A2DECA1071 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 794A06816DE179D23431D33B8172D958 /* Frameworks */ = { + 69FA3914268604A8DF1EF46DEB7B0A06 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 90B7D3BC05B6326BE1ACC8369BC4BA9E /* Foundation.framework in Frameworks */, + 3471F34B250913CA877DC50E049C4EA1 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 410698420A66B648363A45E76517BBEE /* Development Pods */ = { + 34E7F317EDA4876A4251DCCBEF83B257 /* Support Files */ = { isa = PBXGroup; children = ( - F80AFA9A1107ED5A27D10E2E7DAAEFBE /* CSStickyHeaderFlowLayout */, + 5BFB8E098006D15C7D995C6686259BEB /* CSStickyHeaderFlowLayout.modulemap */, + 9EB0F3B70596476C901D335C6C2C0A5E /* CSStickyHeaderFlowLayout.xcconfig */, + 047087A5430E7B67AAF2144543EF7E03 /* CSStickyHeaderFlowLayout-dummy.m */, + 5F29F27AC16D22737F243DE503F8150C /* CSStickyHeaderFlowLayout-prefix.pch */, + CFAA15BA144CF1F29E11E40D1140282D /* CSStickyHeaderFlowLayout-umbrella.h */, + FDAC068BA9EA5DFF688240547A14D317 /* Info.plist */, ); - name = "Development Pods"; + name = "Support Files"; + path = "Project/Pods/Target Support Files/CSStickyHeaderFlowLayout"; sourceTree = ""; }; - 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */ = { + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */ = { isa = PBXGroup; children = ( - 5001DE7E6DBAEB117E72A32A567B30E0 /* Foundation.framework */, + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */, ); name = iOS; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 410698420A66B648363A45E76517BBEE /* Development Pods */ = { isa = PBXGroup; children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - 410698420A66B648363A45E76517BBEE /* Development Pods */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */, + 5A5C5D02EB99B3945CCDA85CE649B025 /* CSStickyHeaderFlowLayout */, ); + name = "Development Pods"; sourceTree = ""; }; - 952EEBFAF8F7E620423C9F156F25A506 /* Pods */ = { + 53313A1CBBC1FF4CF63B830D241DABFE /* Pods-CSStickyHeaderFlowLayoutDemo */ = { isa = PBXGroup; children = ( - 15A529C27057E4A57D259CBC6E6CE49C /* Pods-acknowledgements.markdown */, - BF59BC15D23E1E1912C8F334E7236813 /* Pods-acknowledgements.plist */, - D977BFC33FB2277A3AEDEC48FFCA2079 /* Pods-dummy.m */, - 641AE05DD55E5E6AC1590CD7B4A18F97 /* Pods-resources.sh */, - 62BC0F6B182FE98FFA3CA86787062EF1 /* Pods.debug.xcconfig */, - E8E49AD5F42BB54B641C041AF44A5760 /* Pods.release.xcconfig */, + 02FC7498C2A1983A9AADBBB43666560F /* Info.plist */, + D091EC71A1E90EC563CC8041B2F1F3EB /* Pods-CSStickyHeaderFlowLayoutDemo.modulemap */, + 2D222472F4D50374D90AA9EF7FAD82C6 /* Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown */, + F20CE55E6F6DB06B57AB5ED1D2E055B0 /* Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist */, + F7DC8DC786B6B8F43245BFED9BDAD95B /* Pods-CSStickyHeaderFlowLayoutDemo-dummy.m */, + C5FCCC205CF338F410D4F27FDE9005EA /* Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh */, + 2A4305CA927824DCB28661BCDF0CC04A /* Pods-CSStickyHeaderFlowLayoutDemo-resources.sh */, + C2E86EC8727F464782C2CF65ED684F40 /* Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h */, + FCCB5E38F1A6C33C2ADA1B73B653FD63 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */, + D9FC317AD965AE723290E3CD7319FB7A /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */, ); - name = Pods; - path = "Target Support Files/Pods"; + name = "Pods-CSStickyHeaderFlowLayoutDemo"; + path = "Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo"; sourceTree = ""; }; - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + 5534B223C9A338F124C6EEE3A8F8352A /* Targets Support Files */ = { isa = PBXGroup; children = ( - 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */, + 53313A1CBBC1FF4CF63B830D241DABFE /* Pods-CSStickyHeaderFlowLayoutDemo */, ); - name = Frameworks; + name = "Targets Support Files"; sourceTree = ""; }; - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { + 5A5C5D02EB99B3945CCDA85CE649B025 /* CSStickyHeaderFlowLayout */ = { isa = PBXGroup; children = ( - 2A105B12EA2A2F16B544420D6D486581 /* libCSStickyHeaderFlowLayout.a */, - E256BC23DED73FB12167274A29383CB2 /* libPods.a */, + 9A428D2B6E08DAB089311B604D1C1807 /* Classes */, + 34E7F317EDA4876A4251DCCBEF83B257 /* Support Files */, ); - name = Products; + name = CSStickyHeaderFlowLayout; + path = ../..; sourceTree = ""; }; - D2411A5FE7F7A004607BED49990C37F4 /* Targets Support Files */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - 952EEBFAF8F7E620423C9F156F25A506 /* Pods */, + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 410698420A66B648363A45E76517BBEE /* Development Pods */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + CFB85D9B722833EC653C84DD5355793F /* Products */, + 5534B223C9A338F124C6EEE3A8F8352A /* Targets Support Files */, ); - name = "Targets Support Files"; sourceTree = ""; }; - DA0CD6575CEDE7061087F70461B13B42 /* Classes */ = { + 9A428D2B6E08DAB089311B604D1C1807 /* Classes */ = { isa = PBXGroup; children = ( - 1257CE923430D3E27D1157DCBCF77FD3 /* CSStickyHeaderFlowLayout.h */, - 59912E49FAEB9F1FC77C22957EE88582 /* CSStickyHeaderFlowLayout.m */, - C101ADFA653BE696B6288259608E1BC6 /* CSStickyHeaderFlowLayoutAttributes.h */, - C9DF42FC14C22B3814DB7EFD04400F8E /* CSStickyHeaderFlowLayoutAttributes.m */, + C713EF3C0315A26E95D46E322CE35347 /* CSStickyHeaderFlowLayout.swift */, + DADB778505AD155A90B3FC8ACAF9BDA5 /* CSStickyHeaderFlowLayoutAttributes.swift */, ); path = Classes; sourceTree = ""; }; - F80AFA9A1107ED5A27D10E2E7DAAEFBE /* CSStickyHeaderFlowLayout */ = { + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { isa = PBXGroup; children = ( - DA0CD6575CEDE7061087F70461B13B42 /* Classes */, - FC99B6419D37394393040CCFB4F45C5D /* Support Files */, + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */, ); - name = CSStickyHeaderFlowLayout; - path = ../..; + name = Frameworks; sourceTree = ""; }; - FC99B6419D37394393040CCFB4F45C5D /* Support Files */ = { + CFB85D9B722833EC653C84DD5355793F /* Products */ = { isa = PBXGroup; children = ( - 96E0C6AF1C624380CE9421A24E761FD4 /* CSStickyHeaderFlowLayout.xcconfig */, - CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */, - 7FF0A77C3567C8B48155BFDE19ABC20C /* CSStickyHeaderFlowLayout-dummy.m */, - 07836F93A318AB1B5D363BBB30E562AD /* CSStickyHeaderFlowLayout-prefix.pch */, + 446CDB6A2DBB76105545760728168C1E /* CSStickyHeaderFlowLayout.framework */, + 384CCBF47AE047ECE00D8CBD3080E165 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */, ); - name = "Support Files"; - path = "Project/Pods/Target Support Files/CSStickyHeaderFlowLayout"; + name = Products; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - DE5B0200C7F877527EC419BFBF2BCAC2 /* Headers */ = { + 7533209F720371322C1F5C6F98F70EB6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E9BB7C82CE2329FA219E4422CE95B464 /* CSStickyHeaderFlowLayout.h in Headers */, - CD23ACA14536749C7672FE1FCE60A7D6 /* CSStickyHeaderFlowLayoutAttributes.h in Headers */, + EFF65CB4B41835ED82CE848E556E0317 /* Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FB1F6FD9C397CD31D9D1C2A74BD20439 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3C9C0BF933532F020CB6F5B10A7BA863 /* CSStickyHeaderFlowLayout-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 2EAA1A1D205BF057B42AB5DE35ECFE03 /* Pods */ = { + 09A2D51F8D917F13C73DB41D2C3EC40D /* Pods-CSStickyHeaderFlowLayoutDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = 54FCB8F6DEC70AD3A3D4051D92E2525D /* Build configuration list for PBXNativeTarget "Pods" */; + buildConfigurationList = 1EFF72CC07EE52DDCF3E4CF2770E1D08 /* Build configuration list for PBXNativeTarget "Pods-CSStickyHeaderFlowLayoutDemo" */; buildPhases = ( - B3CDA53154316A0AE01D4C7FC0D037D4 /* Sources */, - 794A06816DE179D23431D33B8172D958 /* Frameworks */, + AF432659D9125D9589A1C20F00765CC2 /* Sources */, + 69FA3914268604A8DF1EF46DEB7B0A06 /* Frameworks */, + 7533209F720371322C1F5C6F98F70EB6 /* Headers */, ); buildRules = ( ); dependencies = ( - 5A65E30016C21B89D229A375B73A21D3 /* PBXTargetDependency */, + 9BB0A303B250B67831C416392A08331E /* PBXTargetDependency */, ); - name = Pods; - productName = Pods; - productReference = E256BC23DED73FB12167274A29383CB2 /* libPods.a */; - productType = "com.apple.product-type.library.static"; + name = "Pods-CSStickyHeaderFlowLayoutDemo"; + productName = "Pods-CSStickyHeaderFlowLayoutDemo"; + productReference = 384CCBF47AE047ECE00D8CBD3080E165 /* Pods_CSStickyHeaderFlowLayoutDemo.framework */; + productType = "com.apple.product-type.framework"; }; - 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */ = { + 95E95694BB646B360A7AB6093CD9789A /* CSStickyHeaderFlowLayout */ = { isa = PBXNativeTarget; - buildConfigurationList = 19BD00C3D95D47758DC7D1BAB83BFB7F /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */; + buildConfigurationList = 5FE9D1C623DA3796ACA7CA087D6B091A /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */; buildPhases = ( - 3946CEA8E4418852132E21CD2CE79484 /* Sources */, - 0C3AD088E4FF32DE0DCCC24F189646F4 /* Frameworks */, - DE5B0200C7F877527EC419BFBF2BCAC2 /* Headers */, + 71A94AD374A026637C1E66F2EB728754 /* Sources */, + 528857BC1240C88E60DFEA0ADECEB9C1 /* Frameworks */, + FB1F6FD9C397CD31D9D1C2A74BD20439 /* Headers */, ); buildRules = ( ); @@ -213,8 +229,8 @@ ); name = CSStickyHeaderFlowLayout; productName = CSStickyHeaderFlowLayout; - productReference = 2A105B12EA2A2F16B544420D6D486581 /* libCSStickyHeaderFlowLayout.a */; - productType = "com.apple.product-type.library.static"; + productReference = 446CDB6A2DBB76105545760728168C1E /* CSStickyHeaderFlowLayout.framework */; + productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -222,7 +238,7 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0700; + LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0700; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; @@ -233,51 +249,52 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; + productRefGroup = CFB85D9B722833EC653C84DD5355793F /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */, - 2EAA1A1D205BF057B42AB5DE35ECFE03 /* Pods */, + 95E95694BB646B360A7AB6093CD9789A /* CSStickyHeaderFlowLayout */, + 09A2D51F8D917F13C73DB41D2C3EC40D /* Pods-CSStickyHeaderFlowLayoutDemo */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 3946CEA8E4418852132E21CD2CE79484 /* Sources */ = { + 71A94AD374A026637C1E66F2EB728754 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D76182056CC6BB8DED186CF4EBD28CDA /* CSStickyHeaderFlowLayout-dummy.m in Sources */, - BF1B5F9C0B8C15493A888378DB06E099 /* CSStickyHeaderFlowLayout.m in Sources */, - 718CC17A4811A1C529658991CE1529D8 /* CSStickyHeaderFlowLayoutAttributes.m in Sources */, + 144CC6735F59E48C84E24173A1A9D3AF /* CSStickyHeaderFlowLayout-dummy.m in Sources */, + 1AF3A35C2A4855F6158F56DDD59C39C4 /* CSStickyHeaderFlowLayout.swift in Sources */, + 1B7C616CCC1C5B020D5A48EDC03D9BB3 /* CSStickyHeaderFlowLayoutAttributes.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B3CDA53154316A0AE01D4C7FC0D037D4 /* Sources */ = { + AF432659D9125D9589A1C20F00765CC2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4939C1D302428B8AA4D845AA6649315E /* Pods-dummy.m in Sources */, + A196EABFD21326B51107B3D38823C19C /* Pods-CSStickyHeaderFlowLayoutDemo-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 5A65E30016C21B89D229A375B73A21D3 /* PBXTargetDependency */ = { + 9BB0A303B250B67831C416392A08331E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CSStickyHeaderFlowLayout; - target = 32CF90DBE2A4842932209237BC634C11 /* CSStickyHeaderFlowLayout */; - targetProxy = 169C3A6CF1ED7AC1ADCA5B3DE678753D /* PBXContainerItemProxy */; + target = 95E95694BB646B360A7AB6093CD9789A /* CSStickyHeaderFlowLayout */; + targetProxy = 3F4235CDD1C89E752147E383BCAADA4F /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 052A17875CB827423D627183396CEB60 /* Release */ = { + 034014829C1E4434983CF3A690C12017 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -291,59 +308,161 @@ 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; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + ONLY_ACTIVE_ARCH = YES; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 1D627B7053A47BA5ECE88F862A8DEEEA /* Release */ = { + 16005A731A4EF28CB8F0F5A7D91C8F2F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */; + baseConfigurationReference = D9FC317AD965AE723290E3CD7319FB7A /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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_PREFIX_HEADER = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_CSStickyHeaderFlowLayoutDemo; SDKROOT = iphoneos; SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - 3F7C21093C3458FFB9A157380A003F97 /* Debug */ = { + 265B82A89CC8F226F292C99F6332AADF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC7D496BDE63E8D94E22B7817AD9A268 /* CSStickyHeaderFlowLayout-Private.xcconfig */; + baseConfigurationReference = 9EB0F3B70596476C901D335C6C2C0A5E /* CSStickyHeaderFlowLayout.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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_PREFIX_HEADER = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + INFOPLIST_FILE = "Target Support Files/CSStickyHeaderFlowLayout/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = CSStickyHeaderFlowLayout; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 4497B9B54CA27A13666604E6F1C7697F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FCCB5E38F1A6C33C2ADA1B73B653FD63 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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; + INFOPLIST_FILE = "Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_CSStickyHeaderFlowLayoutDemo; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B37F0F91F85060E28F1DAAB522DC7EC1 /* Debug */ = { + AB907FF4B11918227F44537625C0EA2D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9EB0F3B70596476C901D335C6C2C0A5E /* CSStickyHeaderFlowLayout.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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_PREFIX_HEADER = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CSStickyHeaderFlowLayout/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = CSStickyHeaderFlowLayout; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C7E474A03CAE21F1CB6046E7344C59BD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -357,68 +476,34 @@ 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", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - BA689EE488AFB5C4C61B57BED665B985 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E8E49AD5F42BB54B641C041AF44A5760 /* Pods.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; }; name = Release; }; - C73E823B626A71316C4172A3B03DF294 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 62BC0F6B182FE98FFA3CA86787062EF1 /* 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; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 19BD00C3D95D47758DC7D1BAB83BFB7F /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */ = { + 1EFF72CC07EE52DDCF3E4CF2770E1D08 /* Build configuration list for PBXNativeTarget "Pods-CSStickyHeaderFlowLayoutDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3F7C21093C3458FFB9A157380A003F97 /* Debug */, - 1D627B7053A47BA5ECE88F862A8DEEEA /* Release */, + 4497B9B54CA27A13666604E6F1C7697F /* Debug */, + 16005A731A4EF28CB8F0F5A7D91C8F2F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -426,17 +511,17 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - B37F0F91F85060E28F1DAAB522DC7EC1 /* Debug */, - 052A17875CB827423D627183396CEB60 /* Release */, + 034014829C1E4434983CF3A690C12017 /* Debug */, + C7E474A03CAE21F1CB6046E7344C59BD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 54FCB8F6DEC70AD3A3D4051D92E2525D /* Build configuration list for PBXNativeTarget "Pods" */ = { + 5FE9D1C623DA3796ACA7CA087D6B091A /* Build configuration list for PBXNativeTarget "CSStickyHeaderFlowLayout" */ = { isa = XCConfigurationList; buildConfigurations = ( - C73E823B626A71316C4172A3B03DF294 /* Debug */, - BA689EE488AFB5C4C61B57BED665B985 /* Release */, + 265B82A89CC8F226F292C99F6332AADF /* Debug */, + AB907FF4B11918227F44537625C0EA2D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme b/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme deleted file mode 100644 index 0c73e58..0000000 --- a/Project/Pods/Pods.xcodeproj/xcshareddata/xcschemes/CSStickyHeaderFlowLayout.xcscheme +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig deleted file mode 100644 index 7749a02..0000000 --- a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#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" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-umbrella.h b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-umbrella.h new file mode 100644 index 0000000..28da858 --- /dev/null +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double CSStickyHeaderFlowLayoutVersionNumber; +FOUNDATION_EXPORT const unsigned char CSStickyHeaderFlowLayoutVersionString[]; + diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap new file mode 100644 index 0000000..2a198af --- /dev/null +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.modulemap @@ -0,0 +1,6 @@ +framework module CSStickyHeaderFlowLayout { + umbrella header "CSStickyHeaderFlowLayout-umbrella.h" + + export * + module * { export * } +} diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig index e69de29..08933c7 100644 --- a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CSStickyHeaderFlowLayout +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/Info.plist b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/Info.plist new file mode 100644 index 0000000..d9f297e --- /dev/null +++ b/Project/Pods/Target Support Files/CSStickyHeaderFlowLayout/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.2.11 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Info.plist b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/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.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Project/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown similarity index 96% rename from Project/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown rename to Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown index af2fca3..3c8042d 100644 --- a/Project/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.markdown @@ -23,4 +23,4 @@ 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 +Generated by CocoaPods - https://cocoapods.org diff --git a/Project/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist similarity index 96% rename from Project/Pods/Target Support Files/Pods/Pods-acknowledgements.plist rename to Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist index 05fd7b2..7b5d370 100644 --- a/Project/Pods/Target Support Files/Pods/Pods-acknowledgements.plist +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-acknowledgements.plist @@ -41,7 +41,7 @@ THE SOFTWARE. FooterText - Generated by CocoaPods - http://cocoapods.org + Generated by CocoaPods - https://cocoapods.org Title Type diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-dummy.m b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-dummy.m new file mode 100644 index 0000000..7233c81 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_CSStickyHeaderFlowLayoutDemo : NSObject +@end +@implementation PodsDummy_Pods_CSStickyHeaderFlowLayoutDemo +@end diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh new file mode 100755 index 0000000..598ebd2 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-frameworks.sh @@ -0,0 +1,91 @@ +#!/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" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_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}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # 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. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | 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 + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.framework" +fi diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-resources.sh b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-resources.sh new file mode 100755 index 0000000..0a15615 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-resources.sh @@ -0,0 +1,102 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h new file mode 100644 index 0000000..504559f --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_CSStickyHeaderFlowLayoutDemoVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_CSStickyHeaderFlowLayoutDemoVersionString[]; + diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig new file mode 100644 index 0000000..75ef085 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CSStickyHeaderFlowLayout" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "CSStickyHeaderFlowLayout" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap new file mode 100644 index 0000000..bf0581e --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.modulemap @@ -0,0 +1,6 @@ +framework module Pods_CSStickyHeaderFlowLayoutDemo { + umbrella header "Pods-CSStickyHeaderFlowLayoutDemo-umbrella.h" + + export * + module * { export * } +} diff --git a/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig new file mode 100644 index 0000000..75ef085 --- /dev/null +++ b/Project/Pods/Target Support Files/Pods-CSStickyHeaderFlowLayoutDemo/Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CSStickyHeaderFlowLayout" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "CSStickyHeaderFlowLayout" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Project/Pods/Target Support Files/Pods/Pods-dummy.m b/Project/Pods/Target Support Files/Pods/Pods-dummy.m deleted file mode 100644 index ade64bd..0000000 --- a/Project/Pods/Target Support Files/Pods/Pods-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods : NSObject -@end -@implementation PodsDummy_Pods -@end diff --git a/Project/Pods/Target Support Files/Pods/Pods-resources.sh b/Project/Pods/Target Support Files/Pods/Pods-resources.sh deleted file mode 100755 index ea685a2..0000000 --- a/Project/Pods/Target Support Files/Pods/Pods-resources.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]]; 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/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig deleted file mode 100644 index a94e0c5..0000000 --- a/Project/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -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 deleted file mode 100644 index a94e0c5..0000000 --- a/Project/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CSStickyHeaderFlowLayout" -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 deleted file mode 100644 index 22189ee..0000000 --- a/Project/SwiftDemo/SwiftDemo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,438 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1A3BEB111B56C602009644C9 /* CSStickyHeaderFlowLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A3BEB101B56C602009644C9 /* CSStickyHeaderFlowLayout.framework */; }; - 1A3BEB171B56C8E2009644C9 /* CollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A3BEB161B56C8E2009644C9 /* CollectionViewCell.swift */; }; - 1A3BEB191B56CBE9009644C9 /* CollectionParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A3BEB181B56CBE9009644C9 /* CollectionParallaxHeader.swift */; }; - 1A4229DA1B608D74009C66CD /* CollectionViewSectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4229D91B608D74009C66CD /* CollectionViewSectionHeader.swift */; }; - 1A4B2F311B56C513007F67CC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F301B56C513007F67CC /* AppDelegate.swift */; }; - 1A4B2F331B56C513007F67CC /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F321B56C513007F67CC /* CollectionViewController.swift */; }; - 1A4B2F381B56C513007F67CC /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A4B2F371B56C513007F67CC /* Images.xcassets */; }; - 1A4B2F3B1B56C513007F67CC /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A4B2F391B56C513007F67CC /* LaunchScreen.xib */; }; - 1A4B2F471B56C513007F67CC /* SwiftDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B2F461B56C513007F67CC /* SwiftDemoTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1A4B2F411B56C513007F67CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1A4B2F231B56C513007F67CC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A4B2F2A1B56C513007F67CC; - remoteInfo = SwiftDemo; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 1A3BEB101B56C602009644C9 /* CSStickyHeaderFlowLayout.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CSStickyHeaderFlowLayout.framework; path = "../build/Debug-iphoneos/CSStickyHeaderFlowLayout.framework"; sourceTree = ""; }; - 1A3BEB131B56C65F009644C9 /* SwiftDemo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwiftDemo-Bridging-Header.h"; sourceTree = ""; }; - 1A3BEB161B56C8E2009644C9 /* CollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCell.swift; sourceTree = ""; }; - 1A3BEB181B56CBE9009644C9 /* CollectionParallaxHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionParallaxHeader.swift; sourceTree = ""; }; - 1A4229D91B608D74009C66CD /* CollectionViewSectionHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewSectionHeader.swift; sourceTree = ""; }; - 1A4B2F2B1B56C513007F67CC /* SwiftDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A4B2F2F1B56C513007F67CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1A4B2F301B56C513007F67CC /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 1A4B2F321B56C513007F67CC /* CollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = ""; }; - 1A4B2F371B56C513007F67CC /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 1A4B2F3A1B56C513007F67CC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 1A4B2F401B56C513007F67CC /* SwiftDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A4B2F451B56C513007F67CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1A4B2F461B56C513007F67CC /* SwiftDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftDemoTests.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1A4B2F281B56C513007F67CC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A3BEB111B56C602009644C9 /* CSStickyHeaderFlowLayout.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F3D1B56C513007F67CC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1A4B2F221B56C513007F67CC = { - isa = PBXGroup; - children = ( - 1A3BEB101B56C602009644C9 /* CSStickyHeaderFlowLayout.framework */, - 1A4B2F2D1B56C513007F67CC /* SwiftDemo */, - 1A4B2F431B56C513007F67CC /* SwiftDemoTests */, - 1A4B2F2C1B56C513007F67CC /* Products */, - ); - sourceTree = ""; - }; - 1A4B2F2C1B56C513007F67CC /* Products */ = { - isa = PBXGroup; - children = ( - 1A4B2F2B1B56C513007F67CC /* SwiftDemo.app */, - 1A4B2F401B56C513007F67CC /* SwiftDemoTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 1A4B2F2D1B56C513007F67CC /* SwiftDemo */ = { - isa = PBXGroup; - children = ( - 1A4B2F301B56C513007F67CC /* AppDelegate.swift */, - 1A4B2F321B56C513007F67CC /* CollectionViewController.swift */, - 1A3BEB161B56C8E2009644C9 /* CollectionViewCell.swift */, - 1A3BEB181B56CBE9009644C9 /* CollectionParallaxHeader.swift */, - 1A4229D91B608D74009C66CD /* CollectionViewSectionHeader.swift */, - 1A4B2F371B56C513007F67CC /* Images.xcassets */, - 1A4B2F391B56C513007F67CC /* LaunchScreen.xib */, - 1A4B2F2E1B56C513007F67CC /* Supporting Files */, - 1A3BEB131B56C65F009644C9 /* SwiftDemo-Bridging-Header.h */, - ); - path = SwiftDemo; - sourceTree = ""; - }; - 1A4B2F2E1B56C513007F67CC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1A4B2F2F1B56C513007F67CC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 1A4B2F431B56C513007F67CC /* SwiftDemoTests */ = { - isa = PBXGroup; - children = ( - 1A4B2F461B56C513007F67CC /* SwiftDemoTests.swift */, - 1A4B2F441B56C513007F67CC /* Supporting Files */, - ); - path = SwiftDemoTests; - sourceTree = ""; - }; - 1A4B2F441B56C513007F67CC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1A4B2F451B56C513007F67CC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1A4B2F2A1B56C513007F67CC /* SwiftDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1A4B2F4A1B56C513007F67CC /* Build configuration list for PBXNativeTarget "SwiftDemo" */; - buildPhases = ( - 1A4B2F271B56C513007F67CC /* Sources */, - 1A4B2F281B56C513007F67CC /* Frameworks */, - 1A4B2F291B56C513007F67CC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwiftDemo; - productName = SwiftDemo; - productReference = 1A4B2F2B1B56C513007F67CC /* SwiftDemo.app */; - productType = "com.apple.product-type.application"; - }; - 1A4B2F3F1B56C513007F67CC /* SwiftDemoTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1A4B2F4D1B56C513007F67CC /* Build configuration list for PBXNativeTarget "SwiftDemoTests" */; - buildPhases = ( - 1A4B2F3C1B56C513007F67CC /* Sources */, - 1A4B2F3D1B56C513007F67CC /* Frameworks */, - 1A4B2F3E1B56C513007F67CC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 1A4B2F421B56C513007F67CC /* PBXTargetDependency */, - ); - name = SwiftDemoTests; - productName = SwiftDemoTests; - productReference = 1A4B2F401B56C513007F67CC /* SwiftDemoTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 1A4B2F231B56C513007F67CC /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0630; - ORGANIZATIONNAME = "James Tang"; - TargetAttributes = { - 1A4B2F2A1B56C513007F67CC = { - CreatedOnToolsVersion = 6.3.1; - }; - 1A4B2F3F1B56C513007F67CC = { - CreatedOnToolsVersion = 6.3.1; - TestTargetID = 1A4B2F2A1B56C513007F67CC; - }; - }; - }; - buildConfigurationList = 1A4B2F261B56C513007F67CC /* Build configuration list for PBXProject "SwiftDemo" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 1A4B2F221B56C513007F67CC; - productRefGroup = 1A4B2F2C1B56C513007F67CC /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1A4B2F2A1B56C513007F67CC /* SwiftDemo */, - 1A4B2F3F1B56C513007F67CC /* SwiftDemoTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1A4B2F291B56C513007F67CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F3B1B56C513007F67CC /* LaunchScreen.xib in Resources */, - 1A4B2F381B56C513007F67CC /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F3E1B56C513007F67CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1A4B2F271B56C513007F67CC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4229DA1B608D74009C66CD /* CollectionViewSectionHeader.swift in Sources */, - 1A4B2F331B56C513007F67CC /* CollectionViewController.swift in Sources */, - 1A4B2F311B56C513007F67CC /* AppDelegate.swift in Sources */, - 1A3BEB171B56C8E2009644C9 /* CollectionViewCell.swift in Sources */, - 1A3BEB191B56CBE9009644C9 /* CollectionParallaxHeader.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1A4B2F3C1B56C513007F67CC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A4B2F471B56C513007F67CC /* SwiftDemoTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 1A4B2F421B56C513007F67CC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1A4B2F2A1B56C513007F67CC /* SwiftDemo */; - targetProxy = 1A4B2F411B56C513007F67CC /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 1A4B2F391B56C513007F67CC /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 1A4B2F3A1B56C513007F67CC /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1A4B2F481B56C513007F67CC /* 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_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - 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; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - 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_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 1A4B2F491B56C513007F67CC /* 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_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - 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_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 1A4B2F4B1B56C513007F67CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - INFOPLIST_FILE = SwiftDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "SwiftDemo/SwiftDemo-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 1A4B2F4C1B56C513007F67CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - INFOPLIST_FILE = SwiftDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "SwiftDemo/SwiftDemo-Bridging-Header.h"; - }; - name = Release; - }; - 1A4B2F4E1B56C513007F67CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = SwiftDemoTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftDemo.app/SwiftDemo"; - }; - name = Debug; - }; - 1A4B2F4F1B56C513007F67CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = SwiftDemoTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftDemo.app/SwiftDemo"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1A4B2F261B56C513007F67CC /* Build configuration list for PBXProject "SwiftDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A4B2F481B56C513007F67CC /* Debug */, - 1A4B2F491B56C513007F67CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1A4B2F4A1B56C513007F67CC /* Build configuration list for PBXNativeTarget "SwiftDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A4B2F4B1B56C513007F67CC /* Debug */, - 1A4B2F4C1B56C513007F67CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1A4B2F4D1B56C513007F67CC /* Build configuration list for PBXNativeTarget "SwiftDemoTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1A4B2F4E1B56C513007F67CC /* Debug */, - 1A4B2F4F1B56C513007F67CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 1A4B2F231B56C513007F67CC /* Project object */; -} diff --git a/Project/SwiftDemo/SwiftDemo/AppDelegate.swift b/Project/SwiftDemo/SwiftDemo/AppDelegate.swift deleted file mode 100644 index e31cb63..0000000 --- a/Project/SwiftDemo/SwiftDemo/AppDelegate.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// AppDelegate.swift -// SwiftDemo -// -// Created by James Tang on 16/7/15. -// Copyright (c) 2015 James Tang. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { - // Override point for customization after application launch. - - let stickyHeaderFlowLayout = CSStickyHeaderFlowLayout() - let collectionViewController = CollectionViewController(collectionViewLayout: stickyHeaderFlowLayout) - - let window = UIWindow(frame: UIScreen.mainScreen().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/Base.lproj/LaunchScreen.xib b/Project/SwiftDemo/SwiftDemo/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 9f93f96..0000000 --- a/Project/SwiftDemo/SwiftDemo/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift b/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift deleted file mode 100644 index 60fc7e9..0000000 --- a/Project/SwiftDemo/SwiftDemo/CollectionParallaxHeader.swift +++ /dev/null @@ -1,40 +0,0 @@ -// -// CollectionParallaxHeader.swift -// SwiftDemo -// -// Created by James Tang on 16/7/15. -// Copyright © 2015 James Tang. All rights reserved. -// - -import UIKit - -class CollectionParallaxHeader: UICollectionReusableView { - - - private var imageView : UIImageView? - - override init(frame: CGRect) { - super.init(frame: frame) - self.backgroundColor = UIColor.lightGrayColor() - - self.clipsToBounds = true - - let bounds = CGRectMake(0, 0, CGRectGetMaxX(frame), CGRectGetMaxY(frame)) - - let imageView = UIImageView(frame: bounds) - imageView.contentMode = UIViewContentMode.ScaleAspectFill - imageView.image = UIImage(named: "success-baby") - self.imageView = imageView - self.addSubview(imageView) - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - override func layoutSubviews() { - super.layoutSubviews() - self.imageView?.frame = self.bounds - } - -} diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift deleted file mode 100644 index 220133a..0000000 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewCell.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// CollectionViewCell.swift -// SwiftDemo -// -// Created by James Tang on 16/7/15. -// Copyright © 2015 James Tang. All rights reserved. -// - -import UIKit - -class CollectionViewCell: UICollectionViewCell { - - var text : String? { - didSet { - self.reloadData() - } - } - - private var textLabel : UILabel? - - override init(frame: CGRect) { - super.init(frame: frame) - - self.backgroundColor = UIColor.whiteColor() - - let bounds = CGRectMake(0, 0, CGRectGetMaxX(frame), CGRectGetMaxY(frame)) - let label = UILabel(frame: bounds) - label.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleWidth] - self.textLabel = label - self.addSubview(label) - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - func reloadData() { - self.textLabel?.text = self.text - } - - override func layoutSubviews() { - super.layoutSubviews() - self.textLabel?.frame = self.bounds - } -} diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift deleted file mode 100644 index 9ee41f4..0000000 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewController.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// ViewController.swift -// SwiftDemo -// -// Created by James Tang on 16/7/15. -// Copyright (c) 2015 James Tang. All rights reserved. -// - -import UIKit - -class CollectionViewController: UICollectionViewController { - - var items : [String] = ["CSStickyHeaderFlowLayout basic example", "Example to initialize in code", "As well as in Swift", "Please Enjoy"] - - private var layout : CSStickyHeaderFlowLayout? { - return self.collectionView?.collectionViewLayout as? CSStickyHeaderFlowLayout - } - - override func viewDidLoad() { - super.viewDidLoad() - - self.collectionView?.alwaysBounceVertical = true - self.view.backgroundColor = UIColor.whiteColor() - - // Setup Cell - self.collectionView?.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "cell") - self.layout?.itemSize = CGSizeMake(self.view.frame.size.width, 44) - - // Setup Header - self.collectionView?.registerClass(CollectionParallaxHeader.self, forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, withReuseIdentifier: "parallaxHeader") - self.layout?.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, 100) - - // Setup Section Header - self.collectionView?.registerClass(CollectionViewSectionHeader.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "sectionHeader") - self.layout?.headerReferenceSize = CGSizeMake(320, 40) - } - - // Cells - - override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return self.items.count - } - - override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { - - let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: 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 { - - if kind == CSStickyHeaderParallaxHeader { - let view = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "parallaxHeader", forIndexPath: indexPath) - return view - } else if kind == UICollectionElementKindSectionHeader { - let view = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "sectionHeader", forIndexPath: indexPath) - view.backgroundColor = UIColor.lightGrayColor() - return view - } - - return UICollectionReusableView() - - } - -} - diff --git a/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift b/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift deleted file mode 100644 index d160ed8..0000000 --- a/Project/SwiftDemo/SwiftDemo/CollectionViewSectionHeader.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// CollectionViewSectionHeader.swift -// SwiftDemo -// -// Created by James Tang on 23/7/15. -// Copyright © 2015 James Tang. All rights reserved. -// - -import UIKit - -class CollectionViewSectionHeader: UICollectionReusableView { - - let label = UILabel() - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - func commonInit() { - self.addSubview(label) - label.frame = self.bounds - label.text = UICollectionElementKindSectionHeader - } -} diff --git a/Project/SwiftDemo/SwiftDemo/Images.xcassets/AppIcon.appiconset/Contents.json b/Project/SwiftDemo/SwiftDemo/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 118c98f..0000000 --- a/Project/SwiftDemo/SwiftDemo/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Project/SwiftDemo/SwiftDemo/Images.xcassets/Contents.json b/Project/SwiftDemo/SwiftDemo/Images.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/Project/SwiftDemo/SwiftDemo/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/Contents.json b/Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/Contents.json deleted file mode 100644 index c79515f..0000000 --- a/Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "success-baby.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/success-baby.png b/Project/SwiftDemo/SwiftDemo/Images.xcassets/success-baby.imageset/success-baby.png deleted file mode 100644 index 753bf272596ab40f97214f78cd9337b772b0916a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330829 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�= 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

qt#&dh89>|KtS;Gu4R)53A!{*Nz(Z!; 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 NVxG;rimw?8D2&~2@**wB>|=> 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 diff --git a/Project/SwiftDemo/SwiftDemo/Info.plist b/Project/SwiftDemo/SwiftDemo/Info.plist deleted file mode 100644 index 83351f2..0000000 --- a/Project/SwiftDemo/SwiftDemo/Info.plist +++ /dev/null @@ -1,38 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.jamztang.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Project/SwiftDemo/SwiftDemo/SwiftDemo-Bridging-Header.h b/Project/SwiftDemo/SwiftDemo/SwiftDemo-Bridging-Header.h deleted file mode 100644 index 311503e..0000000 --- a/Project/SwiftDemo/SwiftDemo/SwiftDemo-Bridging-Header.h +++ /dev/null @@ -1,6 +0,0 @@ -// -// Use this file to import your target's public headers that you would like to expose to Swift. -// - - -#import \ No newline at end of file diff --git a/Project/SwiftDemo/SwiftDemoTests/Info.plist b/Project/SwiftDemo/SwiftDemoTests/Info.plist deleted file mode 100644 index 609467f..0000000 --- a/Project/SwiftDemo/SwiftDemoTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.jamztang.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/Project/SwiftDemo/SwiftDemoTests/SwiftDemoTests.swift b/Project/SwiftDemo/SwiftDemoTests/SwiftDemoTests.swift deleted file mode 100644 index dea3ced..0000000 --- a/Project/SwiftDemo/SwiftDemoTests/SwiftDemoTests.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// SwiftDemoTests.swift -// SwiftDemoTests -// -// Created by James Tang on 16/7/15. -// Copyright (c) 2015 James Tang. All rights reserved. -// - -import UIKit -import XCTest - -class SwiftDemoTests: XCTestCase { - - override func setUp() { - super.setUp() - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // This is an example of a functional test case. - XCTAssert(true, "Pass") - } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measureBlock() { - // Put the code you want to measure the time of here. - } - } - -} From d28c3f66ce8f954bb10bf5444ac9b517da1cabdb Mon Sep 17 00:00:00 2001 From: chrene Date: Thu, 15 Sep 2016 00:56:07 +0200 Subject: [PATCH 02/13] Fix render issues --- Classes/CSStickyHeaderFlowLayout.swift | 133 +++++++++--------- .../CSStickyHeaderFlowLayoutAttributes.swift | 10 +- .../project.pbxproj | 21 ++- Project/Pods/Pods.xcodeproj/project.pbxproj | 12 ++ 4 files changed, 107 insertions(+), 69 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index ffb869a..35c73fd 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -17,69 +17,72 @@ public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" } } -public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { +open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { - public var parallaxHeaderReferenceSize = CGSize.zero { + open override func invalidateLayout() { + if #available(iOS 10, *) { + self.collectionView?.isPrefetchingEnabled = false + } + + super.invalidateLayout() + } + + open var parallaxHeaderReferenceSize = CGSize.zero { didSet { invalidateLayout() } } - public var parallaxHeaderMinimumReferenceSize = CGSize.zero - public var parallaxHeaderAlwaysOnTop = true - public var disableStickyHeaders = false - public var disableStretching = false + open var parallaxHeaderMinimumReferenceSize = CGSize.zero + open var parallaxHeaderAlwaysOnTop = false + open var disableStickyHeaders = false + open var disableStretching = false - public override class func layoutAttributesClass() -> AnyClass { + open override class var layoutAttributesClass : AnyClass { return CSStickyHeaderFlowLayoutAttributes.self } - public override func initialLayoutAttributesForAppearingSupplementaryElementOfKind(elementKind: String, atIndexPath elementIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + open override func initialLayoutAttributesForAppearingSupplementaryElement(ofKind elementKind: String, at elementIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - let attributes = super.initialLayoutAttributesForAppearingSupplementaryElementOfKind(elementKind, atIndexPath: elementIndexPath) + let attributes = super.initialLayoutAttributesForAppearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) - guard elementKind == CSStickyHeaderParallaxHeader, let frame = attributes?.frame else { + if elementKind == CSStickyHeaderParallaxHeader { return nil } - let origin = CGPoint( - x: frame.origin.x, - y: frame.origin.y + parallaxHeaderReferenceSize.height) - - attributes?.frame = CGRect(origin: origin, size: frame.size) + var frame = attributes?.frame ?? .zero + frame.origin.y += parallaxHeaderReferenceSize.height + attributes?.frame = frame return attributes } - public override func finalLayoutAttributesForDisappearingSupplementaryElementOfKind(elementKind: String, atIndexPath elementIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { - + open override func finalLayoutAttributesForDisappearingSupplementaryElement(ofKind elementKind: String, at elementIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - guard elementKind == CSStickyHeaderParallaxHeader, - let attributes = self.layoutAttributesForSupplementaryViewOfKind( - elementKind, atIndexPath: elementIndexPath) as? CSStickyHeaderFlowLayoutAttributes - else { - return super.finalLayoutAttributesForDisappearingSupplementaryElementOfKind(elementKind, atIndexPath: elementIndexPath) + if elementKind == CSStickyHeaderParallaxHeader { + if let attributes = layoutAttributesForSupplementaryView(ofKind: elementKind, at: elementIndexPath) as? CSStickyHeaderFlowLayoutAttributes { + updateParallaxHeaderAttributes(attributes) + return attributes + } } - updateParallaxHeaderAttributes(attributes) - - return attributes + return super.finalLayoutAttributesForDisappearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) } - public override func layoutAttributesForSupplementaryViewOfKind(elementKind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { + open override func layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - let attributes = - super.layoutAttributesForSupplementaryViewOfKind(elementKind, - atIndexPath: indexPath) + var attributes = + super.layoutAttributesForSupplementaryView(ofKind: elementKind, + at: indexPath) - guard elementKind == CSStickyHeaderParallaxHeader && - attributes != nil else { return attributes } + if ((attributes == nil) && elementKind == CSStickyHeaderParallaxHeader) { + attributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: indexPath) + } - return CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: elementKind, - withIndexPath: indexPath) + return attributes } - public override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { if collectionView?.dataSource == nil { print("collection view has no datasource") @@ -94,7 +97,7 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { origin: adjustedOrigin, size: rect.size) - guard let originalAttributes = super.layoutAttributesForElementsInRect(adjustedRect) else { + guard let originalAttributes = super.layoutAttributesForElements(in: adjustedRect) else { return nil } @@ -125,7 +128,7 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { attributes.representedElementKind == UICollectionElementKindSectionFooter if isHeader { - headers[indexPath.section] = attributes + headers[(indexPath as NSIndexPath).section] = attributes attributes.zIndex = 1024 } else if isFooter { @@ -134,24 +137,24 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } else { attributes.zIndex = 1 - if let currentAttribute = lastCells[indexPath.section] where indexPath.row > currentAttribute.indexPath.row { - lastCells[indexPath.section] = attributes + if let currentAttribute = lastCells[(indexPath as NSIndexPath).section] , (indexPath as NSIndexPath).row > (currentAttribute.indexPath as NSIndexPath).row { + lastCells[(indexPath as NSIndexPath).section] = attributes } else { - lastCells[indexPath.section] = attributes + lastCells[(indexPath as NSIndexPath).section] = attributes } - if indexPath.item == 0 && indexPath.section == 0 { + if (indexPath as NSIndexPath).item == 0 && (indexPath as NSIndexPath).section == 0 { visibleParallaxHeader = true } } } - if CGRectGetMinY(rect) <= 0 || parallaxHeaderAlwaysOnTop { + if rect.minY <= 0 || parallaxHeaderAlwaysOnTop { visibleParallaxHeader = true } - if visibleParallaxHeader && CGSizeEqualToSize(.zero, self.parallaxHeaderReferenceSize) { - let currentAttributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, withIndexPath: NSIndexPath(index: 0)) + if visibleParallaxHeader && !CGSize.zero.equalTo(self.parallaxHeaderReferenceSize) { + let currentAttributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: IndexPath(index: 0)) updateParallaxHeaderAttributes(currentAttributes) allItems.append(currentAttributes) @@ -160,26 +163,30 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { if self.disableStickyHeaders == false { lastCells.forEach({ (key, val) in let indexPath = val.indexPath - let indexPathKey = indexPath.section - if let header = headers[indexPathKey] { - if !CGSizeEqualToSize(.zero, header.frame.size) { - self.updateHeaderAttributes(header, lastCellAttributes: lastCells[indexPathKey]) - } - } else { - if let header = self.layoutAttributesForSupplementaryViewOfKind(UICollectionElementKindSectionHeader, atIndexPath: NSIndexPath(forItem: 0, inSection: indexPath.section)) { - if !CGSizeEqualToSize(.zero, header.frame.size) { + let indexPathKey = (indexPath as NSIndexPath).section + + var header = headers[indexPathKey] + if header == nil { + if let header = self.layoutAttributesForSupplementaryView(ofKind: UICollectionElementKindSectionHeader, at: indexPath) { + if !CGSize.zero.equalTo(header.frame.size) { allItems.append(header) } } } + if let header = header { + + if !CGSize.zero.equalTo(header.frame.size) { + updateHeaderAttributes(header, lastCellAttributes: lastCells[indexPathKey]) + } + } }) } return allItems } - public override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { - guard let attributes = super.layoutAttributesForItemAtIndexPath(indexPath)?.copy() as? UICollectionViewLayoutAttributes else { + open override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + guard let attributes = super.layoutAttributesForItem(at: indexPath)?.copy() as? UICollectionViewLayoutAttributes else { print("not attributes") return nil } @@ -192,21 +199,21 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { return attributes } - public override func collectionViewContentSize() -> CGSize { + open override var collectionViewContentSize : CGSize { guard self.collectionView?.superview != nil else { print("no size") return .zero } - let size = super.collectionViewContentSize() + let size = super.collectionViewContentSize return CGSize(width: size.width, height: size.height + self.parallaxHeaderReferenceSize.height) } - public override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool { + open override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { return true } - private func updateHeaderAttributes(attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) { + fileprivate func updateHeaderAttributes(_ attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) { guard let lastCellAttributes = lastCellAttributes, let collectionView = self.collectionView else { print ("no last cell") @@ -215,11 +222,11 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { let currentBounds = collectionView.bounds attributes.zIndex = 1024 - attributes.hidden = false + attributes.isHidden = false var origin = attributes.frame.origin - let sectionMaxY = CGRectGetMaxY(lastCellAttributes.frame) - attributes.frame.size.height - var y = CGRectGetMaxY(currentBounds) - currentBounds.size.height - collectionView.contentInset.top + let sectionMaxY = lastCellAttributes.frame.maxY - attributes.frame.size.height + var y = currentBounds.maxY - currentBounds.size.height + collectionView.contentInset.top if self.parallaxHeaderAlwaysOnTop { y += parallaxHeaderMinimumReferenceSize.height @@ -232,7 +239,7 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { attributes.frame = CGRect(origin: origin, size: attributes.frame.size) } - private func updateParallaxHeaderAttributes(attributes: CSStickyHeaderFlowLayoutAttributes) { + fileprivate func updateParallaxHeaderAttributes(_ attributes: CSStickyHeaderFlowLayoutAttributes) { guard let collectionView = self.collectionView else { return @@ -241,7 +248,7 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { var frame = attributes.frame frame.size = parallaxHeaderReferenceSize let bounds = collectionView.bounds - let maxY = CGRectGetMaxY(frame) + let maxY = frame.maxY var y = min(maxY - self.parallaxHeaderMinimumReferenceSize.height, bounds.origin.y + collectionView.contentInset.top) @@ -263,7 +270,7 @@ public class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { x: frame.origin.x, y: y, width: frame.size.width, - height: self.disableStickyHeaders && height > maxHeight ? maxHeight : height) + height: self.disableStretching && height > maxHeight ? maxHeight : height) } } diff --git a/Classes/CSStickyHeaderFlowLayoutAttributes.swift b/Classes/CSStickyHeaderFlowLayoutAttributes.swift index 3d0fdd5..c9c7f5e 100644 --- a/Classes/CSStickyHeaderFlowLayoutAttributes.swift +++ b/Classes/CSStickyHeaderFlowLayoutAttributes.swift @@ -8,12 +8,12 @@ import UIKit -public class CSStickyHeaderFlowLayoutAttributes: UICollectionViewLayoutAttributes { +open class CSStickyHeaderFlowLayoutAttributes: UICollectionViewLayoutAttributes { - public var progressiveness = CGFloat(0) + open var progressiveness = CGFloat(0) - public override func copyWithZone(zone: NSZone) -> AnyObject { - let copy = super.copyWithZone(zone) + open override func copy(with zone: NSZone?) -> Any { + let copy = super.copy(with: zone) guard let typedCopy = copy as? CSStickyHeaderFlowLayoutAttributes else { return copy } @@ -22,7 +22,7 @@ public class CSStickyHeaderFlowLayoutAttributes: UICollectionViewLayoutAttribute return typedCopy } - public override var zIndex: Int { + open override var zIndex: Int { didSet { self.transform3D = CATransform3DMakeTranslation(0, 0, zIndex == 1 ? -1 : 0) } diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj index 829d6c1..c2b42a5 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj @@ -233,8 +233,13 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = "Jamz Tang"; + TargetAttributes = { + 1AFE0951187D677000CA880A = { + LastSwiftMigration = 0800; + }; + }; }; buildConfigurationList = 1AFE094D187D677000CA880A /* Build configuration list for PBXProject "CSStickyHeaderFlowLayoutDemo" */; compatibilityVersion = "Xcode 3.2"; @@ -373,14 +378,19 @@ 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_OBJC_ROOT_CLASS = YES_ERROR; + 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; + ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -412,13 +422,18 @@ 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_OBJC_ROOT_CLASS = YES_ERROR; + 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 = YES; ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -435,6 +450,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 80BB814ECEE90720372C6F79 /* Pods-CSStickyHeaderFlowLayoutDemo.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -444,6 +460,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; WRAPPER_EXTENSION = app; }; name = Debug; @@ -452,6 +469,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = F96FC1299AF039CDEF659CAA /* Pods-CSStickyHeaderFlowLayoutDemo.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -461,6 +479,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.jamztang.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; WRAPPER_EXTENSION = app; }; name = Release; diff --git a/Project/Pods/Pods.xcodeproj/project.pbxproj b/Project/Pods/Pods.xcodeproj/project.pbxproj index eac28ab..19558bd 100644 --- a/Project/Pods/Pods.xcodeproj/project.pbxproj +++ b/Project/Pods/Pods.xcodeproj/project.pbxproj @@ -240,6 +240,14 @@ attributes = { LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0700; + TargetAttributes = { + 09A2D51F8D917F13C73DB41D2C3EC40D = { + LastSwiftMigration = 0800; + }; + 95E95694BB646B360A7AB6093CD9789A = { + LastSwiftMigration = 0800; + }; + }; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -359,6 +367,7 @@ PRODUCT_NAME = Pods_CSStickyHeaderFlowLayoutDemo; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -389,6 +398,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -423,6 +433,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -452,6 +463,7 @@ PRODUCT_NAME = CSStickyHeaderFlowLayout; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; From ddea14185ff3d3fe0490fb1fc453eebc8e3a789d Mon Sep 17 00:00:00 2001 From: chrene Date: Thu, 15 Sep 2016 03:10:11 +0200 Subject: [PATCH 03/13] fix ios 10 crash --- Classes/CSStickyHeaderFlowLayout.swift | 212 ++++++++++++------------- 1 file changed, 99 insertions(+), 113 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 35c73fd..5098f41 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -9,50 +9,35 @@ import UIKit -public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" - -@objc public final class CSElementKind: NSObject { - public class func stickyHeaderParallaxHeader() -> String { - return CSStickyHeaderParallaxHeader - } -} - open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { - open override func invalidateLayout() { - if #available(iOS 10, *) { - self.collectionView?.isPrefetchingEnabled = false - } - - super.invalidateLayout() - } + // MARK: Properties open var parallaxHeaderReferenceSize = CGSize.zero { - didSet { - invalidateLayout() - } + didSet { invalidateLayout() } } + open var parallaxHeaderMinimumReferenceSize = CGSize.zero open var parallaxHeaderAlwaysOnTop = false open var disableStickyHeaders = false open var disableStretching = false - open override class var layoutAttributesClass : AnyClass { - return CSStickyHeaderFlowLayoutAttributes.self - } + // MARK: Layout Attributes - open override func initialLayoutAttributesForAppearingSupplementaryElement(ofKind elementKind: String, at elementIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + open override func initialLayoutAttributesForAppearingSupplementaryElement + (ofKind elementKind: String, at elementIndexPath: IndexPath) -> + UICollectionViewLayoutAttributes? { - let attributes = super.initialLayoutAttributesForAppearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) + let attributes = + super.initialLayoutAttributesForAppearingSupplementaryElement(ofKind: elementKind, + at: elementIndexPath) - if elementKind == CSStickyHeaderParallaxHeader { - return nil + if elementKind != CSStickyHeaderParallaxHeader { + var frame = attributes?.frame ?? .zero + frame.origin.y += parallaxHeaderReferenceSize.height + attributes?.frame = frame } - var frame = attributes?.frame ?? .zero - frame.origin.y += parallaxHeaderReferenceSize.height - attributes?.frame = frame - return attributes } @@ -82,107 +67,83 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } - open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + fileprivate func visibleHeaders(in rect: CGRect, + with attributes: [UICollectionViewLayoutAttributes]) -> [UICollectionViewLayoutAttributes] { - if collectionView?.dataSource == nil { - print("collection view has no datasource") - return nil + return attributes.filter { (currentAttribute) in + return currentAttribute.representedElementKind == UICollectionElementKindSectionHeader } + } - let adjustedOrigin = CGPoint( - x: rect.origin.x, - y: rect.origin.y - parallaxHeaderReferenceSize.height) + fileprivate func visibleFooters(in rect: CGRect, + with attributes: [UICollectionViewLayoutAttributes]) -> [UICollectionViewLayoutAttributes] { + return attributes.filter { $0.representedElementKind == UICollectionElementKindSectionFooter } + } - let adjustedRect = CGRect( - origin: adjustedOrigin, - size: rect.size) + open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - guard let originalAttributes = super.layoutAttributesForElements(in: adjustedRect) else { - return nil - } + if collectionView?.dataSource == nil { return nil } - var headers = [Int : UICollectionViewLayoutAttributes]() - var lastCells = [Int : UICollectionViewLayoutAttributes]() - var visibleParallaxHeader = false + var retVal = [IndexPath : UICollectionViewLayoutAttributes]() - var allItems = originalAttributes - .flatMap { - $0.copy() as? UICollectionViewLayoutAttributes - } + let adjustedRect = rect.offsetBy(dx: 0, dy: -parallaxHeaderReferenceSize.height) + var parallaxHeaderOnScreen = false - allItems.forEach { [unowned self] (attributes) in - let origin = CGPoint( - x: attributes.frame.origin.x, - y: attributes.frame.origin.y + self.parallaxHeaderReferenceSize.height) + guard let originalAttributes = super.layoutAttributesForElements(in: adjustedRect) + else { return nil } - let frame = CGRect( - origin: origin, - size: attributes.frame.size) + var allItems = originalAttributes.flatMap { + $0.copy() as? UICollectionViewLayoutAttributes + } - attributes.frame = frame - let indexPath = attributes.indexPath - let isHeader = - attributes.representedElementKind == UICollectionElementKindSectionHeader - let isFooter = - attributes.representedElementKind == UICollectionElementKindSectionFooter + var visibleHeaders = allItems.filter { + $0.representedElementKind == UICollectionElementKindSectionHeader + } - if isHeader { - headers[(indexPath as NSIndexPath).section] = attributes - attributes.zIndex = 1024 - } - else if isFooter { - // Not handled - attributes.zIndex = 1 - } - else { - attributes.zIndex = 1 - if let currentAttribute = lastCells[(indexPath as NSIndexPath).section] , (indexPath as NSIndexPath).row > (currentAttribute.indexPath as NSIndexPath).row { - lastCells[(indexPath as NSIndexPath).section] = attributes - } else { - lastCells[(indexPath as NSIndexPath).section] = attributes - } + let visibleCells = allItems.filter { + $0.representedElementCategory == .cell + } + + (visibleHeaders + visibleCells).forEach { + $0.frame = $0.frame.offsetBy(dx: 0, dy: self.parallaxHeaderReferenceSize.height) + } - if (indexPath as NSIndexPath).item == 0 && (indexPath as NSIndexPath).section == 0 { - visibleParallaxHeader = true + let lastCells = visibleCells + .reduce([Int : UICollectionViewLayoutAttributes]()) { (prev, cur) in + var res = prev + if let last = prev[cur.indexPath.section] { + if last.indexPath.row < cur.indexPath.row && last.indexPath.section == cur.indexPath.section { + res[cur.indexPath.section] = cur + } + } else { + res[cur.indexPath.section] = cur } + return res } - } - if rect.minY <= 0 || parallaxHeaderAlwaysOnTop { - visibleParallaxHeader = true - } + parallaxHeaderOnScreen = rect.minY <= 0 || parallaxHeaderAlwaysOnTop - if visibleParallaxHeader && !CGSize.zero.equalTo(self.parallaxHeaderReferenceSize) { - let currentAttributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: IndexPath(index: 0)) + visibleHeaders.forEach { $0.zIndex = 1024 } + visibleCells.forEach { $0.zIndex = 1 } + + if parallaxHeaderOnScreen && !CGSize.zero.equalTo(self.parallaxHeaderReferenceSize) { + let currentAttributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: IndexPath(index: 0)) updateParallaxHeaderAttributes(currentAttributes) - allItems.append(currentAttributes) - } - if self.disableStickyHeaders == false { - lastCells.forEach({ (key, val) in - let indexPath = val.indexPath - let indexPathKey = (indexPath as NSIndexPath).section - - var header = headers[indexPathKey] - if header == nil { - if let header = self.layoutAttributesForSupplementaryView(ofKind: UICollectionElementKindSectionHeader, at: indexPath) { - if !CGSize.zero.equalTo(header.frame.size) { - allItems.append(header) - } - } - } - if let header = header { + retVal[currentAttributes.indexPath] = currentAttributes + } - if !CGSize.zero.equalTo(header.frame.size) { - updateHeaderAttributes(header, lastCellAttributes: lastCells[indexPathKey]) - } - } - }) + if !disableStickyHeaders { + visibleHeaders = visibleHeaders.flatMap { (header) in + self.updateHeaderAttributes(header, + lastCellAttributes: lastCells[header.indexPath.section]) + } } - return allItems + + return Array(retVal.values) + visibleCells + visibleHeaders } open override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { @@ -213,16 +174,14 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { return true } - fileprivate func updateHeaderAttributes(_ attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) { + fileprivate func updateHeaderAttributes(_ attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) -> UICollectionViewLayoutAttributes? { guard let lastCellAttributes = lastCellAttributes, let collectionView = self.collectionView else { - print ("no last cell") - return + return nil } let currentBounds = collectionView.bounds - attributes.zIndex = 1024 - attributes.isHidden = false + let newAttributes = attributes.copy() as? UICollectionViewLayoutAttributes var origin = attributes.frame.origin let sectionMaxY = lastCellAttributes.frame.maxY - attributes.frame.size.height @@ -236,7 +195,10 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { origin.y = maxY - attributes.frame = CGRect(origin: origin, size: attributes.frame.size) + newAttributes?.isHidden = false + newAttributes?.frame = CGRect(origin: origin, size: attributes.frame.size) + + return newAttributes } fileprivate func updateParallaxHeaderAttributes(_ attributes: CSStickyHeaderFlowLayoutAttributes) { @@ -273,4 +235,28 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { height: self.disableStretching && height > maxHeight ? maxHeight : height) } + // MARK: Overrides + + open override func invalidateLayout() { + + // Workaround for iOS 10 + if #available(iOS 10, *) { + self.collectionView?.isPrefetchingEnabled = true + } + + super.invalidateLayout() + } + + open override class var layoutAttributesClass : AnyClass { + return CSStickyHeaderFlowLayoutAttributes.self + } + +} + +public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" + +@objc public final class CSElementKind: NSObject { + public class func stickyHeaderParallaxHeader() -> String { + return CSStickyHeaderParallaxHeader + } } From b56fdacf7fbd635d35ba53e72e3b996c815d607f Mon Sep 17 00:00:00 2001 From: chrene Date: Thu, 15 Sep 2016 03:25:55 +0200 Subject: [PATCH 04/13] Remove unused functions --- Classes/CSStickyHeaderFlowLayout.swift | 32 ++++---------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 5098f41..2383e71 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -67,19 +67,6 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } - fileprivate func visibleHeaders(in rect: CGRect, - with attributes: [UICollectionViewLayoutAttributes]) -> [UICollectionViewLayoutAttributes] { - - return attributes.filter { (currentAttribute) in - return currentAttribute.representedElementKind == UICollectionElementKindSectionHeader - } - } - - fileprivate func visibleFooters(in rect: CGRect, - with attributes: [UICollectionViewLayoutAttributes]) -> [UICollectionViewLayoutAttributes] { - return attributes.filter { $0.representedElementKind == UICollectionElementKindSectionFooter } - } - open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { if collectionView?.dataSource == nil { return nil } @@ -96,7 +83,6 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { $0.copy() as? UICollectionViewLayoutAttributes } - var visibleHeaders = allItems.filter { $0.representedElementKind == UICollectionElementKindSectionHeader } @@ -105,6 +91,10 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { $0.representedElementCategory == .cell } + let otherVisibleItems = allItems.filter { + return $0.representedElementKind == UICollectionElementKindSectionFooter || $0.representedElementCategory == .decorationView + } + (visibleHeaders + visibleCells).forEach { $0.frame = $0.frame.offsetBy(dx: 0, dy: self.parallaxHeaderReferenceSize.height) } @@ -143,12 +133,11 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } - return Array(retVal.values) + visibleCells + visibleHeaders + return Array(retVal.values) + visibleCells + visibleHeaders + otherVisibleItems } open override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { guard let attributes = super.layoutAttributesForItem(at: indexPath)?.copy() as? UICollectionViewLayoutAttributes else { - print("not attributes") return nil } @@ -162,7 +151,6 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { open override var collectionViewContentSize : CGSize { guard self.collectionView?.superview != nil else { - print("no size") return .zero } @@ -237,16 +225,6 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { // MARK: Overrides - open override func invalidateLayout() { - - // Workaround for iOS 10 - if #available(iOS 10, *) { - self.collectionView?.isPrefetchingEnabled = true - } - - super.invalidateLayout() - } - open override class var layoutAttributesClass : AnyClass { return CSStickyHeaderFlowLayoutAttributes.self } From 2bceae22d8b4f91b2fc8deaafc7c784c24b023ec Mon Sep 17 00:00:00 2001 From: chrene Date: Thu, 15 Sep 2016 03:27:48 +0200 Subject: [PATCH 05/13] Merge lines --- Classes/CSStickyHeaderFlowLayout.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 2383e71..97ad785 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -179,9 +179,7 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { y += parallaxHeaderMinimumReferenceSize.height } - let maxY = min(max(y, attributes.frame.origin.y), sectionMaxY) - - origin.y = maxY + origin.y = min(max(y, attributes.frame.origin.y), sectionMaxY) newAttributes?.isHidden = false newAttributes?.frame = CGRect(origin: origin, size: attributes.frame.size) From 9046db89778c57515009666e03ef8726f48eba73 Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 17:49:31 +0900 Subject: [PATCH 06/13] Rename for more clearly. --- Classes/CSStickyHeaderFlowLayout.swift | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 97ad785..be3f50f 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -8,6 +8,7 @@ import UIKit +public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { @@ -22,6 +23,12 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { open var disableStickyHeaders = false open var disableStretching = false + // MARK: Expose Kind Name for ObjC + + open static func elementKindStickyHeaderParallaxHeader() -> String { + return CSStickyHeaderParallaxHeader + } + // MARK: Layout Attributes open override func initialLayoutAttributesForAppearingSupplementaryElement @@ -226,13 +233,4 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { open override class var layoutAttributesClass : AnyClass { return CSStickyHeaderFlowLayoutAttributes.self } - -} - -public let CSStickyHeaderParallaxHeader = "CSStickyHeaderParallaxHeader" - -@objc public final class CSElementKind: NSObject { - public class func stickyHeaderParallaxHeader() -> String { - return CSStickyHeaderParallaxHeader - } } From 8f89dae15db2d97181bcfd0d133e7218b237d86f Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 17:50:00 +0900 Subject: [PATCH 07/13] Use new element kind name from CSStickyHeaderParallaxHeader class method. --- .../CSGrowHeaderViewController.m | 4 ++-- .../CSLockedHeaderViewController.m | 6 +++--- .../CSParallaxHeaderViewController.m | 6 +++--- .../CSStickyParallaxHeaderViewController.m | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m index 1d0515f..e2047df 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSGrowHeaderViewController.m @@ -48,7 +48,7 @@ - (void)viewDidLoad self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(44, 0, 0, 0); [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] + forSupplementaryViewOfKind:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; } @@ -102,7 +102,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { + } else if ([kind isEqualToString:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m index 660635e..ce03eaa 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSLockedHeaderViewController.m @@ -9,7 +9,7 @@ #import "CSLockedHeaderViewController.h" #import "CSCell.h" #import "CSSectionHeader.h" -#import +@import CSStickyHeaderFlowLayout; @interface CSLockedHeaderViewController () @@ -40,7 +40,7 @@ - (void)viewDidLoad self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(44, 0, 0, 0); [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] + forSupplementaryViewOfKind:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStylePlain target:self action:@selector(add:)]; @@ -157,7 +157,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { + } else if ([kind isEqualToString:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m index 1c03fb8..03e9076 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSParallaxHeaderViewController.m @@ -44,10 +44,10 @@ - (id)initWithCoder:(NSCoder *)aDecoder { - (void)viewDidLoad { [super viewDidLoad]; - + [self reloadLayout]; [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] + forSupplementaryViewOfKind:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; #ifdef DEBUG_PULL_TO_REFRESH @@ -119,7 +119,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView cell.textLabel.text = [[obj allKeys] firstObject]; return cell; - } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { + } else if ([kind isEqualToString:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; diff --git a/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m b/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m index a960802..d52488d 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m +++ b/Project/CSStickyHeaderFlowLayoutDemo/CSStickyParallaxHeaderViewController.m @@ -63,7 +63,7 @@ - (void)viewDidLoad // Also insets the scroll indicator so it appears below the search bar self.collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, 0); [self.collectionView registerNib:self.headerNib - forSupplementaryViewOfKind:[CSElementKind stickyHeaderParallaxHeader] + forSupplementaryViewOfKind:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader] withReuseIdentifier:@"header"]; } @@ -119,7 +119,7 @@ - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView return cell; - } else if ([kind isEqualToString:[CSElementKind stickyHeaderParallaxHeader]]) { + } else if ([kind isEqualToString:[CSStickyHeaderFlowLayout elementKindStickyHeaderParallaxHeader]]) { UICollectionReusableView *cell = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; From de6fb955f5e0718224402db66bab02344c1860c9 Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 17:52:18 +0900 Subject: [PATCH 08/13] Attribute needs to change frame and if attributes is nil, frame will be .zero then assign to nil. So attribute must be not nil that we can change attribute's frame. --- Classes/CSStickyHeaderFlowLayout.swift | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index be3f50f..71cf2a8 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -31,18 +31,14 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { // MARK: Layout Attributes - open override func initialLayoutAttributesForAppearingSupplementaryElement - (ofKind elementKind: String, at elementIndexPath: IndexPath) -> - UICollectionViewLayoutAttributes? { - - let attributes = - super.initialLayoutAttributesForAppearingSupplementaryElement(ofKind: elementKind, - at: elementIndexPath) + open override func initialLayoutAttributesForAppearingSupplementaryElement(ofKind elementKind: String, at elementIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + guard let attributes = super.initialLayoutAttributesForAppearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) else { return nil } if elementKind != CSStickyHeaderParallaxHeader { - var frame = attributes?.frame ?? .zero + var frame = attributes.frame frame.origin.y += parallaxHeaderReferenceSize.height - attributes?.frame = frame + + attributes.frame = frame } return attributes From 40f54d255245ea38324836e9f4b05647af30259e Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 17:54:36 +0900 Subject: [PATCH 09/13] Flatten "if". --- Classes/CSStickyHeaderFlowLayout.swift | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 71cf2a8..8997ef9 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -45,15 +45,16 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } open override func finalLayoutAttributesForDisappearingSupplementaryElement(ofKind elementKind: String, at elementIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - - if elementKind == CSStickyHeaderParallaxHeader { - if let attributes = layoutAttributesForSupplementaryView(ofKind: elementKind, at: elementIndexPath) as? CSStickyHeaderFlowLayoutAttributes { - updateParallaxHeaderAttributes(attributes) - return attributes - } + guard + let attributes = layoutAttributesForSupplementaryView(ofKind: elementKind, at: elementIndexPath) as? CSStickyHeaderFlowLayoutAttributes, + elementKind != CSStickyHeaderParallaxHeader + else { + return super.finalLayoutAttributesForDisappearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) } - return super.finalLayoutAttributesForDisappearingSupplementaryElement(ofKind: elementKind, at: elementIndexPath) + updateParallaxHeaderAttributes(attributes) + + return attributes } open override func layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { From 1febfba4034835c5d5a60543fb0480c1414cbf37 Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 17:56:04 +0900 Subject: [PATCH 10/13] Use guard to unwrap. --- Classes/CSStickyHeaderFlowLayout.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 8997ef9..3ae6712 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -58,15 +58,15 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } open override func layoutAttributesForSupplementaryView(ofKind elementKind: String, at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { - - var attributes = - super.layoutAttributesForSupplementaryView(ofKind: elementKind, - at: indexPath) - - if ((attributes == nil) && elementKind == CSStickyHeaderParallaxHeader) { - attributes = CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: indexPath) + guard let attributes = super.layoutAttributesForSupplementaryView(ofKind: elementKind, at: indexPath) else { + + if elementKind == CSStickyHeaderParallaxHeader { + return CSStickyHeaderFlowLayoutAttributes(forSupplementaryViewOfKind: CSStickyHeaderParallaxHeader, with: indexPath) + } else { + return nil + } } - + return attributes } From cfc5fc4ebd6cec2e8bece65b5be02c80adf35c50 Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 18:00:23 +0900 Subject: [PATCH 11/13] Use guard to unwrap. --- Classes/CSStickyHeaderFlowLayout.swift | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 3ae6712..721a65f 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -72,18 +72,14 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - - if collectionView?.dataSource == nil { return nil } - - var retVal = [IndexPath : UICollectionViewLayoutAttributes]() - let adjustedRect = rect.offsetBy(dx: 0, dy: -parallaxHeaderReferenceSize.height) - var parallaxHeaderOnScreen = false + + guard let _ = collectionView, let originalAttributes = super.layoutAttributesForElements(in: adjustedRect) else { return nil } - guard let originalAttributes = super.layoutAttributesForElements(in: adjustedRect) - else { return nil } + var retVal = [IndexPath: UICollectionViewLayoutAttributes]() + var parallaxHeaderOnScreen = false - var allItems = originalAttributes.flatMap { + let allItems = originalAttributes.flatMap { $0.copy() as? UICollectionViewLayoutAttributes } @@ -154,7 +150,7 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { } open override var collectionViewContentSize : CGSize { - guard self.collectionView?.superview != nil else { + guard let _ = self.collectionView?.superview else { return .zero } From 5dffd29a3edfe317e24efbcda69797d8b860ecd8 Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 23 Sep 2016 18:09:45 +0900 Subject: [PATCH 12/13] - Rename updateHeaderAttributes to getAdjustedHeaderAttributesForLastCell for distinguishing usage. - Dictionary might be nil, unwrap lastCells before get adjusted attribute then getAdjustedHeaderAttributesForLastCell. --- Classes/CSStickyHeaderFlowLayout.swift | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Classes/CSStickyHeaderFlowLayout.swift b/Classes/CSStickyHeaderFlowLayout.swift index 721a65f..363c43f 100644 --- a/Classes/CSStickyHeaderFlowLayout.swift +++ b/Classes/CSStickyHeaderFlowLayout.swift @@ -127,8 +127,11 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { if !disableStickyHeaders { visibleHeaders = visibleHeaders.flatMap { (header) in - self.updateHeaderAttributes(header, - lastCellAttributes: lastCells[header.indexPath.section]) + guard let lastCell = lastCells[header.indexPath.section] else { + return nil + } + + return self.getAdjustedHeaderAttributesForLastCell(header, lastCellAttributes: lastCell) } } @@ -162,14 +165,14 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { return true } - fileprivate func updateHeaderAttributes(_ attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes?) -> UICollectionViewLayoutAttributes? { - - guard let lastCellAttributes = lastCellAttributes, let collectionView = self.collectionView else { + // MARK: Private Methods + + fileprivate func getAdjustedHeaderAttributesForLastCell(_ attributes: UICollectionViewLayoutAttributes, lastCellAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes? { + guard let collectionView = self.collectionView, let newAttributes = attributes.copy() as? UICollectionViewLayoutAttributes else { return nil } let currentBounds = collectionView.bounds - let newAttributes = attributes.copy() as? UICollectionViewLayoutAttributes var origin = attributes.frame.origin let sectionMaxY = lastCellAttributes.frame.maxY - attributes.frame.size.height @@ -181,8 +184,8 @@ open class CSStickyHeaderFlowLayout: UICollectionViewFlowLayout { origin.y = min(max(y, attributes.frame.origin.y), sectionMaxY) - newAttributes?.isHidden = false - newAttributes?.frame = CGRect(origin: origin, size: attributes.frame.size) + newAttributes.isHidden = false + newAttributes.frame = CGRect(origin: origin, size: attributes.frame.size) return newAttributes } From 26b149685bb3929d12a7056f898d3e1d39f18f0f Mon Sep 17 00:00:00 2001 From: chrene Date: Mon, 24 Oct 2016 13:11:58 +0200 Subject: [PATCH 13/13] Set iOS minimum version to 8.0 --- .../CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj index c2b42a5..05139c7 100644 --- a/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj +++ b/Project/CSStickyHeaderFlowLayoutDemo.xcodeproj/project.pbxproj @@ -403,7 +403,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -440,7 +440,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; };

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