├── GTScrollNavigationBarExample ├── Pods │ ├── Headers │ │ ├── Private │ │ │ ├── KIF │ │ │ │ ├── KIF.h │ │ │ │ ├── KIFTypist.h │ │ │ │ ├── KIFTestActor.h │ │ │ │ ├── KIFTestCase.h │ │ │ │ ├── KIFUIObject.h │ │ │ │ ├── IOHIDEvent+KIF.h │ │ │ │ ├── KIFUITestActor.h │ │ │ │ ├── LoadableCategory.h │ │ │ │ ├── UIView-Debugging.h │ │ │ │ ├── KIFSystemTestActor.h │ │ │ │ ├── KIFUIViewTestActor.h │ │ │ │ ├── UIAutomationHelper.h │ │ │ │ ├── CALayer-KIFAdditions.h │ │ │ │ ├── KIFTestStepValidation.h │ │ │ │ ├── NSBundle-KIFAdditions.h │ │ │ │ ├── NSError-KIFAdditions.h │ │ │ │ ├── NSString+KIFAdditions.h │ │ │ │ ├── UIEvent+KIFAdditions.h │ │ │ │ ├── UIScreen+KIFAdditions.h │ │ │ │ ├── UITouch-KIFAdditions.h │ │ │ │ ├── UIView-KIFAdditions.h │ │ │ │ ├── UIWindow-KIFAdditions.h │ │ │ │ ├── CGGeometry-KIFAdditions.h │ │ │ │ ├── KIFAccessibilityEnabler.h │ │ │ │ ├── XCTestCase-KIFAdditions.h │ │ │ │ ├── CAAnimation+KIFAdditions.h │ │ │ │ ├── NSException-KIFAdditions.h │ │ │ │ ├── NSFileManager-KIFAdditions.h │ │ │ │ ├── NSPredicate+KIFAdditions.h │ │ │ │ ├── UIApplication-KIFAdditions.h │ │ │ │ ├── UIScrollView-KIFAdditions.h │ │ │ │ ├── UITableView-KIFAdditions.h │ │ │ │ ├── KIFUITestActor-ConditionalTests.h │ │ │ │ └── UIAccessibilityElement-KIFAdditions.h │ │ │ ├── Expecta │ │ │ │ ├── Expecta.h │ │ │ │ ├── EXPDefines.h │ │ │ │ ├── EXPExpect.h │ │ │ │ ├── EXPMatcher.h │ │ │ │ ├── EXPFloatTuple.h │ │ │ │ ├── ExpectaObject.h │ │ │ │ ├── EXPDoubleTuple.h │ │ │ │ ├── EXPMatchers.h │ │ │ │ ├── ExpectaSupport.h │ │ │ │ ├── NSValue+Expecta.h │ │ │ │ ├── NSObject+Expecta.h │ │ │ │ ├── EXPUnsupportedObject.h │ │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ │ ├── EXPMatcherHelpers.h │ │ │ │ ├── EXPMatchers+beNil.h │ │ │ │ ├── EXPMatchers+equal.h │ │ │ │ ├── EXPMatchers+match.h │ │ │ │ ├── EXPMatchers+raise.h │ │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ │ ├── EXPMatchers+beginWith.h │ │ │ │ ├── EXPMatchers+conformTo.h │ │ │ │ ├── EXPMatchers+contain.h │ │ │ │ ├── EXPMatchers+endWith.h │ │ │ │ ├── EXPMatchers+respondTo.h │ │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ │ ├── EXPMatchers+postNotification.h │ │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ │ └── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ ├── Specta │ │ │ │ ├── Specta.h │ │ │ │ ├── SPTSpec.h │ │ │ │ ├── SPTCallSite.h │ │ │ │ ├── SPTExample.h │ │ │ │ ├── SpectaDSL.h │ │ │ │ ├── SpectaTypes.h │ │ │ │ ├── SPTTestSuite.h │ │ │ │ ├── SpectaUtility.h │ │ │ │ ├── SPTExampleGroup.h │ │ │ │ ├── XCTest+Private.h │ │ │ │ ├── SPTCompiledExample.h │ │ │ │ ├── XCTestCase+Specta.h │ │ │ │ ├── SPTSharedExampleGroups.h │ │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ │ └── SPTExcludeGlobalBeforeAfterEach.h │ │ │ └── GTScrollNavigationBar │ │ │ │ └── GTScrollNavigationBar.h │ │ └── Public │ │ │ ├── KIF │ │ │ ├── KIF.h │ │ │ ├── KIFTypist.h │ │ │ ├── KIFTestActor.h │ │ │ ├── KIFTestCase.h │ │ │ ├── KIFUIObject.h │ │ │ ├── IOHIDEvent+KIF.h │ │ │ ├── KIFUITestActor.h │ │ │ ├── UIView-Debugging.h │ │ │ ├── KIFSystemTestActor.h │ │ │ ├── KIFUIViewTestActor.h │ │ │ ├── UIAutomationHelper.h │ │ │ ├── UIView-KIFAdditions.h │ │ │ ├── CALayer-KIFAdditions.h │ │ │ ├── KIFTestStepValidation.h │ │ │ ├── NSBundle-KIFAdditions.h │ │ │ ├── NSError-KIFAdditions.h │ │ │ ├── UITouch-KIFAdditions.h │ │ │ ├── UIWindow-KIFAdditions.h │ │ │ ├── CGGeometry-KIFAdditions.h │ │ │ ├── KIFAccessibilityEnabler.h │ │ │ ├── NSException-KIFAdditions.h │ │ │ ├── UITableView-KIFAdditions.h │ │ │ ├── XCTestCase-KIFAdditions.h │ │ │ ├── NSFileManager-KIFAdditions.h │ │ │ ├── UIApplication-KIFAdditions.h │ │ │ ├── UIScrollView-KIFAdditions.h │ │ │ ├── KIFUITestActor-ConditionalTests.h │ │ │ └── UIAccessibilityElement-KIFAdditions.h │ │ │ ├── Expecta │ │ │ ├── Expecta.h │ │ │ ├── EXPDefines.h │ │ │ ├── EXPExpect.h │ │ │ ├── EXPMatcher.h │ │ │ ├── EXPFloatTuple.h │ │ │ ├── ExpectaObject.h │ │ │ ├── EXPDoubleTuple.h │ │ │ ├── EXPMatchers.h │ │ │ ├── ExpectaSupport.h │ │ │ ├── NSObject+Expecta.h │ │ │ ├── NSValue+Expecta.h │ │ │ ├── EXPUnsupportedObject.h │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ ├── EXPMatcherHelpers.h │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ ├── EXPMatchers+beNil.h │ │ │ ├── EXPMatchers+contain.h │ │ │ ├── EXPMatchers+endWith.h │ │ │ ├── EXPMatchers+equal.h │ │ │ ├── EXPMatchers+match.h │ │ │ ├── EXPMatchers+raise.h │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ ├── EXPMatchers+beginWith.h │ │ │ ├── EXPMatchers+conformTo.h │ │ │ ├── EXPMatchers+respondTo.h │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ ├── EXPMatchers+postNotification.h │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ └── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ ├── Specta │ │ │ ├── Specta.h │ │ │ ├── SPTSpec.h │ │ │ ├── SpectaDSL.h │ │ │ ├── SPTCallSite.h │ │ │ ├── SPTExample.h │ │ │ ├── SpectaTypes.h │ │ │ ├── SPTTestSuite.h │ │ │ ├── SpectaUtility.h │ │ │ ├── XCTest+Private.h │ │ │ ├── SPTExampleGroup.h │ │ │ ├── SPTCompiledExample.h │ │ │ ├── XCTestCase+Specta.h │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ ├── SPTSharedExampleGroups.h │ │ │ └── SPTExcludeGlobalBeforeAfterEach.h │ │ │ └── GTScrollNavigationBar │ │ │ └── GTScrollNavigationBar.h │ ├── Target Support Files │ │ ├── Specta │ │ │ ├── Specta-prefix.pch │ │ │ ├── Specta-dummy.m │ │ │ └── Specta.xcconfig │ │ ├── Expecta │ │ │ ├── Expecta-prefix.pch │ │ │ ├── Expecta-dummy.m │ │ │ └── Expecta.xcconfig │ │ ├── GTScrollNavigationBar │ │ │ ├── GTScrollNavigationBar-prefix.pch │ │ │ ├── GTScrollNavigationBar-dummy.m │ │ │ └── GTScrollNavigationBar.xcconfig │ │ ├── KIF │ │ │ ├── KIF-prefix.pch │ │ │ ├── KIF-dummy.m │ │ │ └── KIF.xcconfig │ │ ├── Pods-GTScrollNavigationBarTests │ │ │ ├── Pods-GTScrollNavigationBarTests-dummy.m │ │ │ ├── Pods-GTScrollNavigationBarTests.debug.xcconfig │ │ │ └── Pods-GTScrollNavigationBarTests.release.xcconfig │ │ └── Pods-GTScrollNavigationBarExample │ │ │ ├── Pods-GTScrollNavigationBarExample-dummy.m │ │ │ ├── Pods-GTScrollNavigationBarExample.debug.xcconfig │ │ │ ├── Pods-GTScrollNavigationBarExample.release.xcconfig │ │ │ ├── Pods-GTScrollNavigationBarExample-acknowledgements.markdown │ │ │ └── Pods-GTScrollNavigationBarExample-acknowledgements.plist │ ├── Expecta │ │ ├── Expecta │ │ │ ├── Matchers │ │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ │ ├── EXPMatchers+endWith.h │ │ │ │ ├── EXPMatchers+match.h │ │ │ │ ├── EXPMatchers+respondTo.h │ │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ │ ├── EXPMatchers+conformTo.h │ │ │ │ ├── EXPMatchers+beNil.h │ │ │ │ ├── EXPMatchers+raise.h │ │ │ │ ├── EXPMatcherHelpers.h │ │ │ │ ├── EXPMatchers+beginWith.h │ │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ │ ├── EXPMatchers+postNotification.h │ │ │ │ ├── EXPMatchers+equal.h │ │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ │ ├── EXPMatchers+contain.h │ │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ │ ├── EXPMatcherHelpers.m │ │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ │ ├── EXPMatchers+beNil.m │ │ │ │ ├── EXPMatchers+beLessThan.m │ │ │ │ ├── EXPMatchers+beIdenticalTo.m │ │ │ │ ├── EXPMatchers+beGreaterThan.m │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.m │ │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.m │ │ │ │ ├── EXPMatchers+beFalsy.m │ │ │ │ ├── EXPMatchers+beTruthy.m │ │ │ │ ├── EXPMatchers.h │ │ │ │ ├── EXPMatchers+respondTo.m │ │ │ │ ├── EXPMatchers+beSubclassOf.m │ │ │ │ ├── EXPMatchers+conformTo.m │ │ │ │ ├── EXPMatchers+beKindOf.m │ │ │ │ ├── EXPMatchers+raise.m │ │ │ │ ├── EXPMatchers+beInstanceOf.m │ │ │ │ ├── EXPMatchers+beInTheRangeOf.m │ │ │ │ ├── EXPMatchers+contain.m │ │ │ │ ├── EXPMatchers+match.m │ │ │ │ ├── EXPMatchers+raiseWithReason.m │ │ │ │ ├── EXPMatchers+equal.m │ │ │ │ ├── EXPMatchers+haveCountOf.m │ │ │ │ ├── EXPMatchers+beCloseTo.m │ │ │ │ ├── EXPMatchers+endWith.m │ │ │ │ ├── EXPMatchers+beginWith.m │ │ │ │ └── EXPMatchers+beSupersetOf.m │ │ │ ├── NSValue+Expecta.h │ │ │ ├── EXPUnsupportedObject.h │ │ │ ├── NSObject+Expecta.h │ │ │ ├── ExpectaObject.m │ │ │ ├── EXPFloatTuple.h │ │ │ ├── EXPDoubleTuple.h │ │ │ ├── EXPDefines.h │ │ │ ├── EXPMatcher.h │ │ │ ├── Expecta.h │ │ │ ├── EXPUnsupportedObject.m │ │ │ ├── NSValue+Expecta.m │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ ├── ExpectaObject.h │ │ │ ├── EXPBlockDefinedMatcher.m │ │ │ ├── EXPDoubleTuple.m │ │ │ ├── EXPFloatTuple.m │ │ │ ├── EXPExpect.h │ │ │ └── ExpectaSupport.h │ │ └── LICENSE │ ├── Specta │ │ ├── Specta │ │ │ └── Specta │ │ │ │ ├── XCTestCase+Specta.h │ │ │ │ ├── SpectaTypes.h │ │ │ │ ├── SPTCallSite.h │ │ │ │ ├── SPTCallSite.m │ │ │ │ ├── SPTExample.m │ │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ │ ├── SPTCompiledExample.m │ │ │ │ ├── SPTExcludeGlobalBeforeAfterEach.h │ │ │ │ ├── Specta.h │ │ │ │ ├── SPTExample.h │ │ │ │ ├── SPTSharedExampleGroups.h │ │ │ │ ├── SPTCompiledExample.h │ │ │ │ ├── SPTTestSuite.h │ │ │ │ ├── SPTTestSuite.m │ │ │ │ ├── SPTSpec.h │ │ │ │ ├── SpectaUtility.h │ │ │ │ ├── XCTest+Private.h │ │ │ │ ├── SPTExampleGroup.h │ │ │ │ ├── XCTestCase+Specta.m │ │ │ │ ├── SPTSharedExampleGroups.m │ │ │ │ └── SpectaUtility.m │ │ └── LICENSE │ ├── KIF │ │ ├── Classes │ │ │ ├── IOHIDEvent+KIF.h │ │ │ ├── KIFAccessibilityEnabler.h │ │ │ ├── UIAutomationHelper.h │ │ │ ├── KIFUIObject.h │ │ │ ├── KIF.h │ │ │ ├── KIFUIObject.m │ │ │ ├── KIFTypist.h │ │ │ ├── KIFTestStepValidation.m │ │ │ ├── KIFTestStepValidation.h │ │ │ └── KIFTestCase.h │ │ ├── Additions │ │ │ ├── NSBundle-KIFAdditions.h │ │ │ ├── CAAnimation+KIFAdditions.h │ │ │ ├── XCTestCase-KIFAdditions.h │ │ │ ├── UIScreen+KIFAdditions.h │ │ │ ├── NSString+KIFAdditions.h │ │ │ ├── UIScreen+KIFAdditions.m │ │ │ ├── NSException-KIFAdditions.h │ │ │ ├── CGGeometry-KIFAdditions.m │ │ │ ├── NSPredicate+KIFAdditions.h │ │ │ ├── UIWindow-KIFAdditions.m │ │ │ ├── NSError-KIFAdditions.h │ │ │ ├── UIWindow-KIFAdditions.h │ │ │ ├── UIEvent+KIFAdditions.h │ │ │ ├── UIScrollView-KIFAdditions.h │ │ │ ├── UITableView-KIFAdditions.h │ │ │ ├── NSFileManager-KIFAdditions.h │ │ │ ├── NSBundle-KIFAdditions.m │ │ │ ├── UITouch-KIFAdditions.h │ │ │ ├── CAAnimation+KIFAdditions.m │ │ │ ├── NSString+KIFAdditions.m │ │ │ ├── CGGeometry-KIFAdditions.h │ │ │ ├── UIView-Debugging.h │ │ │ ├── LoadableCategory.h │ │ │ ├── NSException-KIFAdditions.m │ │ │ ├── CALayer-KIFAdditions.h │ │ │ ├── NSError-KIFAdditions.m │ │ │ ├── UIScrollView-KIFAdditions.m │ │ │ ├── NSFileManager-KIFAdditions.m │ │ │ ├── NSPredicate+KIFAdditions.m │ │ │ ├── UIEvent+KIFAdditions.m │ │ │ └── CALayer-KIFAdditions.m │ │ └── LICENSE │ ├── Local Podspecs │ │ └── GTScrollNavigationBar.podspec.json │ └── Manifest.lock ├── GTScrollNavigationBarExample │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── DemoWebViewController.h │ ├── main.m │ ├── GTScrollNavigationBarExample-Prefix.pch │ ├── DemoTableViewController.h │ ├── AppDelegate.h │ ├── Images.xcassets │ │ ├── LaunchImage.launchimage │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── GTScrollNavigationBarExample-Info.plist │ ├── DemoWebViewController.m │ └── AppDelegate.m ├── GTScrollNavigationBarExample.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── GTScrollNavigationBarExample.xcworkspace │ └── contents.xcworkspacedata ├── Podfile ├── Podfile.lock └── GTScrollNavigationBarTests │ └── Info.plist ├── .slather.yml ├── .gitignore ├── GTScrollNavigationBar.podspec ├── .travis.yml ├── GTScrollNavigationBar └── GTScrollNavigationBar.h ├── LICENSE └── README.md /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIF.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIF.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIF.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIF.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFTypist.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTypist.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFTypist.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTypist.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestCase.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFUIObject.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUIObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/Specta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestCase.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFUIObject.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUIObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/Specta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDefines.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPExpect.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPExpect.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPMatcher.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/IOHIDEvent+KIF.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/IOHIDEvent+KIF.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFUITestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUITestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSpec.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDefines.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPExpect.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPExpect.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPMatcher.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/IOHIDEvent+KIF.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/IOHIDEvent+KIF.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFUITestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUITestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSpec.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SpectaDSL.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaDSL.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPFloatTuple.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/LoadableCategory.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/LoadableCategory.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIView-Debugging.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIView-Debugging.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCallSite.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExample.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SpectaDSL.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaDSL.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaTypes.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPFloatTuple.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIView-Debugging.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIView-Debugging.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCallSite.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExample.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaTypes.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDoubleTuple.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/ExpectaSupport.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaSupport.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSValue+Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFSystemTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFSystemTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFUIViewTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUIViewTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIAutomationHelper.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/UIAutomationHelper.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTTestSuite.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaUtility.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDoubleTuple.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/ExpectaSupport.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaSupport.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSObject+Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSValue+Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFSystemTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFSystemTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFUIViewTestActor.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUIViewTestActor.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIAutomationHelper.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/UIAutomationHelper.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTTestSuite.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaUtility.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTest+Private.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSObject+Expecta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/CALayer-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/CALayer-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFTestStepValidation.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestStepValidation.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSBundle-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSBundle-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSError-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSError-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSString+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSString+KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIEvent+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIEvent+KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIScreen+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIScreen+KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UITouch-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UITouch-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIWindow-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIWindow-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExampleGroup.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTest+Private.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/CALayer-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/CALayer-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFTestStepValidation.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFTestStepValidation.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/NSBundle-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSBundle-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/NSError-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSError-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UITouch-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UITouch-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIWindow-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIWindow-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExampleGroup.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPUnsupportedObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/CGGeometry-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/CGGeometry-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFAccessibilityEnabler.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFAccessibilityEnabler.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/XCTestCase-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/XCTestCase-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCompiledExample.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTestCase+Specta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPUnsupportedObject.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/CGGeometry-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/CGGeometry-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFAccessibilityEnabler.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFAccessibilityEnabler.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/NSException-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSException-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UITableView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UITableView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/XCTestCase-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/XCTestCase-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCompiledExample.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTestCase+Specta.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPBlockDefinedMatcher.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+match.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/CAAnimation+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/CAAnimation+KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSException-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSException-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSFileManager-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSFileManager-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/NSPredicate+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSPredicate+KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIApplication-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIApplication-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIScrollView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIScrollView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UITableView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UITableView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPBlockDefinedMatcher.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+match.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/NSFileManager-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/NSFileManager-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIApplication-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIApplication-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIScrollView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIScrollView-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSharedExampleGroups.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSharedExampleGroups.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/KIFUITestActor-ConditionalTests.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUITestActor-ConditionalTests.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/KIFUITestActor-ConditionalTests.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Classes/KIFUITestActor-ConditionalTests.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Specta/Specta-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Expecta/Expecta-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beFalsy, (void)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beTruthy, (void)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/KIF/UIAccessibilityElement-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIAccessibilityElement-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/KIF/UIAccessibilityElement-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../KIF/Additions/UIAccessibilityElement-KIFAdditions.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(endWith, (id expected)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/GTScrollNavigationBar/GTScrollNavigationBar.h: -------------------------------------------------------------------------------- 1 | ../../../../../GTScrollNavigationBar/GTScrollNavigationBar.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/GTScrollNavigationBar/GTScrollNavigationBar.h: -------------------------------------------------------------------------------- 1 | ../../../../../GTScrollNavigationBar/GTScrollNavigationBar.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(match, (NSString *expected)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(respondTo, (SEL expected)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h -------------------------------------------------------------------------------- /.slather.yml: -------------------------------------------------------------------------------- 1 | coverage_service: coveralls 2 | xcodeproj: GTScrollNavigationBarExample/GTScrollNavigationBarExample.xcodeproj 3 | source_directory: GTScrollNavigationBar -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beSupersetOf, (id subset)); 4 | 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(conformTo, (Protocol *expected)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/GTScrollNavigationBar/GTScrollNavigationBar-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/KIF/KIF-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beNil, (void)); 4 | EXPMatcherInterface(beNull, (void)); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/KIF/KIF-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_KIF : NSObject 3 | @end 4 | @implementation PodsDummy_KIF 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(raise, (NSString *expectedExceptionName)); 4 | #define raiseAny() raise(nil) 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | BOOL EXPIsValuePointer(NSValue *value); 4 | BOOL EXPIsNumberFloat(NSNumber *number); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beginWith, (id expected)); 4 | EXPMatcherInterface(startWith, (id expected)); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Specta/Specta-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Specta : NSObject 3 | @end 4 | @implementation PodsDummy_Specta 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beKindOf, (Class expected)); 4 | EXPMatcherInterface(beAKindOf, (Class expected)); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSValue (Expecta) 4 | 5 | @property (nonatomic) const char *_EXP_objCType; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Expecta/Expecta-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Expecta : NSObject 3 | @end 4 | @implementation PodsDummy_Expecta 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)); 4 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface XCTestCase (Specta) 4 | 5 | - (void)spt_handleException:(NSException *)exception; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beSubclassOf, (Class expected)); 4 | EXPMatcherInterface(beASubclassOf, (Class expected)); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(postNotification, (id expectedNotification)); 4 | EXPMatcherInterface(notify, (id expectedNotification)); 5 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | @class SPTSpec; 2 | 3 | typedef void (^SPTVoidBlock)(); 4 | typedef void (^SPTSpecBlock)(SPTSpec *spec); 5 | typedef void (^SPTDictionaryBlock)(NSDictionary *dictionary); 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/GTScrollNavigationBar/GTScrollNavigationBar-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_GTScrollNavigationBar : NSObject 3 | @end 4 | @implementation PodsDummy_GTScrollNavigationBar 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_equal, (id expected)); 4 | EXPMatcherInterface(equal, (id expected)); // to aid code completion 5 | #define equal(...) _equal(EXPObjectify((__VA_ARGS__))) 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beLessThan, (id expected)); 4 | EXPMatcherInterface(beLessThan, (id expected)); 5 | 6 | #define beLessThan(expected) _beLessThan(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_contain, (id expected)); 4 | EXPMatcherInterface(contain, (id expected)); // to aid code completion 5 | #define contain(expected) _contain(EXPObjectify((expected))) 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beGreaterThan, (id expected)); 4 | EXPMatcherInterface(beGreaterThan, (id expected)); 5 | 6 | #define beGreaterThan(expected) _beGreaterThan(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarTests/Pods-GTScrollNavigationBarTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_GTScrollNavigationBarTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_GTScrollNavigationBarTests 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarExample/Pods-GTScrollNavigationBarExample-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_GTScrollNavigationBarExample : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_GTScrollNavigationBarExample 5 | @end 6 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/IOHIDEvent+KIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // IOHIDEvent+KIF.h 3 | // KIF 4 | // 5 | // Created by Thomas Bonnin on 7/6/15. 6 | // 7 | // 8 | 9 | typedef struct __IOHIDEvent * IOHIDEventRef; 10 | IOHIDEventRef kif_IOHIDEventWithTouches(NSArray *touches) CF_RETURNS_RETAINED; 11 | 12 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beLessThanOrEqualTo, (id expected)); 4 | EXPMatcherInterface(beLessThanOrEqualTo, (id expected)); 5 | 6 | #define beLessThanOrEqualTo(expected) _beLessThanOrEqualTo(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSBundle-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (KIFAdditions) 12 | 13 | + (NSBundle *)KIFTestBundle; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatcherHelpers.h" 2 | 3 | BOOL EXPIsValuePointer(NSValue *value) { 4 | return [value objCType][0] == @encode(void *)[0]; 5 | } 6 | 7 | BOOL EXPIsNumberFloat(NSNumber *number) { 8 | return strcmp([number objCType], @encode(float)) == 0; 9 | } 10 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beGreaterThanOrEqualTo, (id expected)); 4 | EXPMatcherInterface(beGreaterThanOrEqualTo, (id expected)); 5 | 6 | #define beGreaterThanOrEqualTo(expected) _beGreaterThanOrEqualTo(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beInstanceOf, (Class expected)); 4 | EXPMatcherInterface(beAnInstanceOf, (Class expected)); 5 | EXPMatcherInterface(beMemberOf, (Class expected)); 6 | EXPMatcherInterface(beAMemberOf, (Class expected)); 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CAAnimation+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAAnimation+KIFAdditions.h 3 | // Pods 4 | // 5 | // Created by Justin Martin on 6/6/16. 6 | // 7 | 8 | #import 9 | 10 | 11 | @interface CAAnimation (KIFAdditions) 12 | 13 | - (double)KIF_completionTime; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | profile 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | 20 | #CocoaPods 21 | #Pods 22 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface EXPUnsupportedObject : NSObject { 4 | NSString *_type; 5 | } 6 | 7 | @property (nonatomic, retain) NSString *type; 8 | 9 | - (instancetype)initWithType:(NSString *)type NS_DESIGNATED_INITIALIZER; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/XCTestCase-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // XCTestCase-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Tony DiPasquale on 12/9/13. 6 | // 7 | // 8 | 9 | #import 10 | #import "KIFTestActor.h" 11 | 12 | @interface XCTestCase (KIFAdditions) 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIScreen+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScreen+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Steven King on 25/02/2016. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UIScreen (KIFAdditions) 12 | 13 | @property (nonatomic, readonly) CGFloat majorSwipeDisplacement; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFAccessibilityEnabler.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIFAccessibilityEnabler.h 3 | // KIF 4 | // 5 | // Created by Timothy Clem on 10/11/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * Provides way to enable the Accessibility Inspector. 13 | */ 14 | FOUNDATION_EXTERN void KIFEnableAccessibility(void); 15 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/DemoWebViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoWebViewController.h 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 23/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DemoWebViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSString+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 1/28/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #pragma mark - NSString 12 | @interface NSString (KIFAdditions) 13 | 14 | - (BOOL)KIF_isEqualToStringOrAttributedString:(id)aString; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIScreen+KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIScreen+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Steven King on 25/02/2016. 6 | // 7 | // 8 | 9 | #import "UIScreen+KIFAdditions.h" 10 | 11 | @implementation UIScreen (KIFAdditions) 12 | 13 | - (CGFloat)majorSwipeDisplacement { 14 | return self.bounds.size.width * 0.625; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSObject (Expecta) 4 | 5 | - (void)recordFailureWithDescription:(NSString *)description 6 | inFile:(NSString *)filename 7 | atLine:(NSUInteger)lineNumber 8 | expected:(BOOL)expected; 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/ExpectaObject.m: -------------------------------------------------------------------------------- 1 | #import "ExpectaObject.h" 2 | 3 | @implementation Expecta 4 | 5 | static NSTimeInterval _asynchronousTestTimeout = 1.0; 6 | 7 | + (NSTimeInterval)asynchronousTestTimeout { 8 | return _asynchronousTestTimeout; 9 | } 10 | 11 | + (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout { 12 | _asynchronousTestTimeout = timeout; 13 | } 14 | 15 | @end -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface EXPFloatTuple : NSObject { 4 | float *_values; 5 | size_t _size; 6 | } 7 | 8 | @property (nonatomic, assign) float *values; 9 | @property (nonatomic, assign) size_t size; 10 | 11 | - (instancetype)initWithFloatValues:(float *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface EXPDoubleTuple : NSObject { 4 | double *_values; 5 | size_t _size; 6 | } 7 | 8 | @property (nonatomic, assign) double *values; 9 | @property (nonatomic, assign) size_t size; 10 | 11 | - (instancetype)initWithDoubleValues:(double *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beCloseToWithin, (id expected, id within)); 4 | EXPMatcherInterface(beCloseToWithin, (id expected, id within)); 5 | 6 | #define beCloseTo(expected) _beCloseToWithin(EXPObjectify((expected)), nil) 7 | #define beCloseToWithin(expected, range) _beCloseToWithin(EXPObjectify((expected)), EXPObjectify((range))) 8 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSException-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSException-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Tony DiPasquale on 12/20/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface NSException (KIFAdditions) 12 | 13 | + (NSException *)failureInFile:(NSString *)file atLine:(NSInteger)line withDescription:(NSString *)formatString, ...; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/UIAutomationHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIAutomationHelper.h 3 | // KIF 4 | // 5 | // Created by Joe Masilotti on 12/1/14. 6 | // 7 | // 8 | 9 | #import 10 | 11 | 12 | @class KIFTestActor; 13 | 14 | @interface UIAutomationHelper : NSObject 15 | 16 | + (BOOL)acknowledgeSystemAlert; 17 | 18 | + (void)deactivateAppForDuration:(NSNumber *)duration; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface SPTCallSite : NSObject 4 | 5 | @property (nonatomic, copy, readonly) NSString *file; 6 | @property (nonatomic, readonly) NSUInteger line; 7 | 8 | + (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line; 9 | 10 | - (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); 4 | EXPMatcherInterface(beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); 5 | 6 | #define beInTheRangeOf(expectedLowerBound, expectedUpperBound) _beInTheRangeOf(EXPObjectify((expectedLowerBound)), EXPObjectify((expectedUpperBound))) 7 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CGGeometry-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // CGGeometry-KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/22/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import "CGGeometry-KIFAdditions.h" 11 | 12 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beIdenticalTo, (void *expected)); 4 | EXPMatcherInterface(beIdenticalTo, (void *expected)); // to aid code completion 5 | 6 | #if __has_feature(objc_arc) 7 | #define beIdenticalTo(expected) _beIdenticalTo((__bridge void*)expected) 8 | #else 9 | #define beIdenticalTo(expected) _beIdenticalTo(expected) 10 | #endif 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSPredicate+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSPredicate+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 2/3/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface NSPredicate (KIFAdditions) 12 | 13 | @property NSString *kifPredicateDescription; 14 | 15 | - (NSArray *)flatten; 16 | - (NSCompoundPredicate *)minusSubpredicatesFrom:(NSPredicate *)otherPredicate; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXPDefines.h 3 | // Expecta 4 | // 5 | // Created by Luke Redpath on 26/03/2012. 6 | // Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. 7 | // 8 | 9 | #ifndef Expecta_EXPDefines_h 10 | #define Expecta_EXPDefines_h 11 | 12 | typedef void (^EXPBasicBlock)(); 13 | typedef id (^EXPIdBlock)(); 14 | typedef BOOL (^EXPBoolBlock)(); 15 | typedef NSString *(^EXPStringBlock)(); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/cocoapods/specs.git' 2 | 3 | platform :ios, '8.0' 4 | 5 | project 'GTScrollNavigationBarExample' 6 | 7 | def install_pods 8 | pod 'GTScrollNavigationBar', :path => '../' 9 | end 10 | 11 | target :GTScrollNavigationBarExample do 12 | install_pods 13 | end 14 | 15 | target :GTScrollNavigationBarTests do 16 | install_pods 17 | pod 'KIF', '~> 3.5' 18 | pod 'Specta', '~> 1.0' 19 | pod 'Expecta', '~> 1.0' 20 | end 21 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFUIObject.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIFUIObject.h 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 1/26/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface KIFUIObject : NSObject 12 | 13 | @property (nonatomic, weak, readonly) UIView *view; 14 | @property (nonatomic, weak, readonly) UIAccessibilityElement *element; 15 | 16 | - (instancetype)initWithElement:(UIAccessibilityElement *)element view:(UIView *)view; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTCallSite.m: -------------------------------------------------------------------------------- 1 | #import "SPTCallSite.h" 2 | 3 | @implementation SPTCallSite 4 | 5 | + (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line { 6 | return [[self alloc] initWithFile:file line:line]; 7 | } 8 | 9 | - (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line { 10 | self = [super init]; 11 | if (self) { 12 | _file = file; 13 | _line = line; 14 | } 15 | return self; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 21/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/GTScrollNavigationBarExample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_3_0 10 | #warning "This project uses features only available in iOS SDK 3.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIWindow-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow-KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/20/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import "UIWindow-KIFAdditions.h" 11 | 12 | 13 | //@implementation UIWindow (KIFAdditions) 14 | // 15 | //@end 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/DemoTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoTableViewController.h 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 21/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DemoTableViewController : UITableViewController 12 | 13 | @property (assign, nonatomic) BOOL hasSection; 14 | @property (assign, nonatomic) BOOL hasRefreshControl; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSError-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSError+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface NSError (KIFAdditions) 12 | 13 | + (instancetype)KIFErrorWithUnderlyingError:(NSError *)underlyingError format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3); 14 | + (instancetype)KIFErrorWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTExample.m: -------------------------------------------------------------------------------- 1 | #import "SPTExample.h" 2 | 3 | @implementation SPTExample 4 | 5 | - (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { 6 | self = [super init]; 7 | if (self) { 8 | self.name = name; 9 | self.callSite = callSite; 10 | self.block = block; 11 | self.focused = focused; 12 | self.pending = block == nil; 13 | } 14 | return self; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(haveCountOf, (NSUInteger expected)); 4 | EXPMatcherInterface(haveCount, (NSUInteger expected)); 5 | EXPMatcherInterface(haveACountOf, (NSUInteger expected)); 6 | EXPMatcherInterface(haveLength, (NSUInteger expected)); 7 | EXPMatcherInterface(haveLengthOf, (NSUInteger expected)); 8 | EXPMatcherInterface(haveALengthOf, (NSUInteger expected)); 9 | 10 | #define beEmpty() haveCountOf(0) 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIWindow-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/20/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | 13 | @interface UIWindow (KIFAdditions) 14 | 15 | - (UIResponder *)firstResponder; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXPMatcher.h 3 | // Expecta 4 | // 5 | // Created by Luke Redpath on 26/03/2012. 6 | // Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol EXPMatcher 12 | 13 | - (BOOL)matches:(id)actual; 14 | 15 | @optional 16 | - (BOOL)meetsPrerequesiteFor:(id)actual; 17 | - (NSString *)failureMessageForTo:(id)actual; 18 | - (NSString *)failureMessageForNotTo:(id)actual; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Specta Team. All rights reserved. 3 | */ 4 | #import 5 | 6 | // This protocol is used for whitelisting classes for global beforeEach and afterEach blocks. 7 | // If you want a class to participate in those just add this protocol to a category and it will be 8 | // included. 9 | @protocol SPTGlobalBeforeAfterEach 10 | 11 | @optional 12 | + (void)beforeEach; 13 | + (void)afterEach; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIEvent+KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIEvent+KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Thomas on 3/1/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | // Exposes methods of UITouchesEvent so that the compiler doesn't complain 12 | @interface UIEvent (KIFAdditionsPrivateHeaders) 13 | - (void)_addTouch:(UITouch *)touch forDelayedDelivery:(BOOL)arg2; 14 | - (void)_clearTouches; 15 | @end 16 | 17 | @interface UIEvent (KIFAdditions) 18 | - (void)kif_setEventWithTouches:(NSArray *)touches; 19 | @end 20 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTCompiledExample.m: -------------------------------------------------------------------------------- 1 | #import "SPTCompiledExample.h" 2 | 3 | @implementation SPTCompiledExample 4 | 5 | - (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused { 6 | self = [super init]; 7 | if (self) { 8 | self.name = name; 9 | self.testCaseName = testCaseName; 10 | self.block = block; 11 | self.pending = pending; 12 | self.focused = focused; 13 | } 14 | return self; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Specta Team. All rights reserved. 3 | */ 4 | #import 5 | 6 | // This protocol was used for blacklisting classes for global beforeEach and afterEach blocks. 7 | // Now, instead, classes are whitelisted by implementing the SPTGlobalBeforeAfterEach protocol. 8 | __deprecated_msg("Please whitelist classes instead with the SPTGlobalBeforeAfterEach protocol") 9 | @protocol SPTExcludeGlobalBeforeAfterEach 10 | @end 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | //! Project version number for Expecta. 4 | FOUNDATION_EXPORT double ExpectaVersionNumber; 5 | 6 | //! Project version string for Expecta. 7 | FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | // Enable shorthand by default 14 | #define expect(...) EXP_expect((__VA_ARGS__)) 15 | #define failure(...) EXP_failure((__VA_ARGS__)) 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 21/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | @property (strong, nonatomic) UINavigationController *navController; 15 | @property (strong, nonatomic) UIViewController* viewController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIScrollView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/22/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | 13 | @interface UIScrollView (KIFAdditions) 14 | 15 | - (void)scrollViewToVisible:(UIView *)view animated:(BOOL)animated; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPUnsupportedObject.m: -------------------------------------------------------------------------------- 1 | #import "EXPUnsupportedObject.h" 2 | 3 | #pragma clang diagnostic push 4 | #pragma clang diagnostic ignored "-Wobjc-designated-initializers" 5 | @implementation EXPUnsupportedObject 6 | #pragma clang diagnostic pop 7 | 8 | @synthesize type=_type; 9 | 10 | - (instancetype)initWithType:(NSString *)type { 11 | self = [super init]; 12 | if(self) { 13 | self.type = type; 14 | } 15 | return self; 16 | } 17 | 18 | - (void)dealloc { 19 | self.type = nil; 20 | [super dealloc]; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | //! Project version number for Specta. 5 | FOUNDATION_EXPORT double SpectaVersionNumber; 6 | 7 | //! Project version string for Specta. 8 | FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; 9 | 10 | // In this header, you should import all the public headers of your framework using statements like #import 11 | 12 | #import 13 | #import 14 | #import 15 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UITableView-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Hilton Campbell on 4/12/14. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | @interface UITableView (KIFAdditions) 13 | 14 | - (BOOL)dragCell:(UITableViewCell *)cell toIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SpectaTypes.h" 3 | 4 | @class SPTCallSite; 5 | 6 | @interface SPTExample : NSObject 7 | 8 | @property (nonatomic, copy) NSString *name; 9 | @property (nonatomic, retain) SPTCallSite *callSite; 10 | @property (nonatomic, copy) SPTVoidBlock block; 11 | 12 | @property (nonatomic) BOOL pending; 13 | @property (nonatomic, getter=isFocused) BOOL focused; 14 | 15 | - (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @class _XCTestCaseImplementation; 6 | 7 | @class SPTExampleGroup; 8 | 9 | @interface SPTSharedExampleGroups : XCTestCase 10 | 11 | + (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup; 12 | + (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup; 13 | 14 | - (void)sharedExampleGroups; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIF.h 3 | // KIF 4 | // 5 | // Created by Jim Puls on 12/21/12. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import "KIFTestActor.h" 11 | #import "KIFTestCase.h" 12 | #import "KIFSystemTestActor.h" 13 | #import "KIFUITestActor.h" 14 | #import "KIFUITestActor-ConditionalTests.h" 15 | 16 | #import "KIFUIViewTestActor.h" 17 | #import "KIFUIObject.h" 18 | 19 | #import "XCTestCase-KIFAdditions.h" 20 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSFileManager-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileManager-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Michael Thole on 6/1/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | 13 | @interface NSFileManager (KIFAdditions) 14 | 15 | - (NSString *)createUserDirectory:(NSSearchPathDirectory)searchPath; 16 | - (BOOL)recursivelyCreateDirectory:(NSString *)path; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beNil.h" 2 | 3 | EXPMatcherImplementationBegin(beNil, (void)) { 4 | match(^BOOL{ 5 | return actual == nil; 6 | }); 7 | 8 | failureMessageForTo(^NSString *{ 9 | return [NSString stringWithFormat:@"expected: nil/null, got: %@", EXPDescribeObject(actual)]; 10 | }); 11 | 12 | failureMessageForNotTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: not nil/null, got: %@", EXPDescribeObject(actual)]; 14 | }); 15 | } 16 | EXPMatcherImplementationEnd 17 | 18 | EXPMatcherAliasImplementation(beNull, beNil, (void)); 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBar.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "GTScrollNavigationBar" 3 | s.version = "0.4" 4 | s.summary = "A scrollable UINavigationBar that follows a UIScrollView" 5 | s.homepage = "https://github.com/luugiathuy/GTScrollNavigationBar" 6 | s.license = 'BSD' 7 | s.author = { "Luu Gia Thuy" => "luugiathuy@gmail.com" } 8 | s.social_media_url = "http://twitter.com/luugiathuy" 9 | s.platform = :ios, "8.0" 10 | s.requires_arc = true 11 | s.source = { :git => "https://github.com/luugiathuy/GTScrollNavigationBar.git", :tag => s.version.to_s } 12 | s.source_files = 'GTScrollNavigationBar/*' 13 | end 14 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFUIObject.m: -------------------------------------------------------------------------------- 1 | // 2 | // KIFUIObject.m 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 1/26/15. 6 | // 7 | // 8 | 9 | #import "KIFUIObject.h" 10 | 11 | 12 | @implementation KIFUIObject 13 | 14 | - (instancetype)initWithElement:(UIAccessibilityElement *)element view:(UIView *)view; 15 | { 16 | self = [super init]; 17 | if (self) { 18 | _element = element; 19 | _view = view; 20 | } 21 | return self; 22 | } 23 | 24 | - (NSString *)description; 25 | { 26 | return [NSString stringWithFormat:@"<%@;\n| element=%@;\n| | view=%@>", [super description], self.element, self.view]; 27 | } 28 | @end 29 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SpectaTypes.h" 3 | 4 | @interface SPTCompiledExample : NSObject 5 | 6 | @property (nonatomic, copy) NSString *name; 7 | @property (nonatomic, copy) NSString *testCaseName; 8 | @property (nonatomic, copy) SPTSpecBlock block; 9 | 10 | @property (nonatomic) BOOL pending; 11 | @property (nonatomic, getter=isFocused) BOOL focused; 12 | 13 | @property (nonatomic) SEL testMethodSelector; 14 | 15 | - (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSBundle-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import "NSBundle-KIFAdditions.h" 10 | #import "KIFTestCase.h" 11 | #import "LoadableCategory.h" 12 | 13 | MAKE_CATEGORIES_LOADABLE(NSBundle_KIFAdditions) 14 | 15 | @implementation NSBundle (KIFAdditions) 16 | 17 | + (NSBundle *)KIFTestBundle 18 | { 19 | static NSBundle *bundle; 20 | static dispatch_once_t onceToken; 21 | dispatch_once(&onceToken, ^{ 22 | bundle = [self bundleForClass:[KIFTestCase class]]; 23 | }); 24 | return bundle; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/NSValue+Expecta.m: -------------------------------------------------------------------------------- 1 | #import "NSValue+Expecta.h" 2 | #import 3 | #import "Expecta.h" 4 | 5 | EXPFixCategoriesBug(NSValue_Expecta); 6 | 7 | @implementation NSValue (Expecta) 8 | 9 | static char _EXP_typeKey; 10 | 11 | - (const char *)_EXP_objCType { 12 | return [(NSString *)objc_getAssociatedObject(self, &_EXP_typeKey) cStringUsingEncoding:NSASCIIStringEncoding]; 13 | } 14 | 15 | - (void)set_EXP_objCType:(const char *)_EXP_objCType { 16 | objc_setAssociatedObject(self, &_EXP_typeKey, 17 | @(_EXP_objCType), 18 | OBJC_ASSOCIATION_COPY_NONATOMIC); 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class 4 | SPTExample 5 | , SPTExampleGroup 6 | ; 7 | 8 | @interface SPTTestSuite : NSObject 9 | 10 | @property (nonatomic, strong) SPTExampleGroup *rootGroup; 11 | @property (nonatomic, strong) NSMutableArray *groupStack; 12 | @property (nonatomic, strong) NSArray *compiledExamples; 13 | @property (nonatomic, copy) NSString *fileName; 14 | @property (nonatomic) NSUInteger lineNumber; 15 | @property (nonatomic, getter = isDisabled) BOOL disabled; 16 | @property (nonatomic) BOOL hasFocusedExamples; 17 | 18 | - (SPTExampleGroup *)currentGroup; 19 | - (void)compile; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UITouch-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITouch-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/20/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | 13 | @interface UITouch (KIFAdditions) 14 | 15 | - (id)initInView:(UIView *)view; 16 | - (id)initAtPoint:(CGPoint)point inView:(UIView *)view; 17 | 18 | - (void)setLocationInWindow:(CGPoint)location; 19 | - (void)setPhaseAndUpdateTimestamp:(UITouchPhase)phase; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Local Podspecs/GTScrollNavigationBar.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GTScrollNavigationBar", 3 | "version": "0.4", 4 | "summary": "A scrollable UINavigationBar that follows a UIScrollView", 5 | "homepage": "https://github.com/luugiathuy/GTScrollNavigationBar", 6 | "license": "BSD", 7 | "authors": { 8 | "Luu Gia Thuy": "luugiathuy@gmail.com" 9 | }, 10 | "social_media_url": "http://twitter.com/luugiathuy", 11 | "platforms": { 12 | "ios": "8.0" 13 | }, 14 | "requires_arc": true, 15 | "source": { 16 | "git": "https://github.com/luugiathuy/GTScrollNavigationBar.git", 17 | "tag": "0.4" 18 | }, 19 | "source_files": "GTScrollNavigationBar/*" 20 | } 21 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFTypist.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIFTypist.h 3 | // KIF 4 | // 5 | // Created by Pete Hodgson on 8/12/12. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | 11 | @interface KIFTypist : NSObject 12 | 13 | + (void)registerForNotifications; 14 | + (BOOL)keyboardHidden; 15 | + (BOOL)enterCharacter:(NSString *)characterString; 16 | 17 | + (NSTimeInterval)keystrokeDelay; 18 | + (void)setKeystrokeDelay:(NSTimeInterval)delay; 19 | 20 | + (BOOL)hasHardwareKeyboard; 21 | + (BOOL)hasKeyInputResponder; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | osx_image: xcode8.3 2 | language: objective-c 3 | before_install: 4 | - gem install cocoapods xcpretty obcd slather --no-document 5 | podfile: GTScrollNavigationBarExample/Podfile 6 | env: 7 | - LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8 8 | script: 9 | - set -o pipefail && xcodebuild -workspace GTScrollNavigationBarExample/GTScrollNavigationBarExample.xcworkspace 10 | -scheme GTScrollNavigationBarExample -sdk iphonesimulator -destination "platform=iOS Simulator,name=iPhone 6s,OS=9.3" 11 | GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES clean test | xcpretty -c 12 | - pod lib lint --quick 13 | - obcd --path GTScrollNavigationBar find HeaderStyle 14 | after_success: slather 15 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CAAnimation+KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAAnimation+KIFAdditions.m 3 | // Pods 4 | // 5 | // Created by Justin Martin on 6/6/16. 6 | // 7 | 8 | #import "CAAnimation+KIFAdditions.h" 9 | 10 | 11 | @implementation CAAnimation (KIFAdditions) 12 | 13 | - (double)KIF_completionTime; 14 | { 15 | if (self.repeatDuration > 0) { 16 | return self.beginTime + self.repeatDuration; 17 | } else if (self.repeatCount == HUGE_VALF) { 18 | return HUGE_VALF; 19 | } else if (self.repeatCount > 0) { 20 | return self.beginTime + (self.repeatCount * self.duration); 21 | } else { 22 | return self.beginTime + self.duration; 23 | } 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSString+KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 1/28/16. 6 | // 7 | // 8 | 9 | #import "NSString+KIFAdditions.h" 10 | 11 | #pragma mark - NSString 12 | @implementation NSString (KIFAdditions) 13 | 14 | - (BOOL)KIF_isEqualToStringOrAttributedString:(id)aString; 15 | { 16 | // Somtimes Accessibility Elements will return an AXAttributedString. 17 | // This compares the raw backing string against a vanilla NSString, ignoring any attributes. 18 | if ([aString respondsToSelector:@selector(string)]) { 19 | return [self isEqualToString:[(id)aString string]]; 20 | } 21 | return [self isEqualToString:aString]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/LICENSE: -------------------------------------------------------------------------------- 1 | KIF 2 | Copyright 2011-2016 Square, Inc. 3 | A full list of contributors is available at https://github.com/square/KIF/contributors 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Expecta (1.0.5) 3 | - GTScrollNavigationBar (0.4) 4 | - KIF (3.5.1): 5 | - KIF/Core (= 3.5.1) 6 | - KIF/Core (3.5.1) 7 | - Specta (1.0.6) 8 | 9 | DEPENDENCIES: 10 | - Expecta (~> 1.0) 11 | - GTScrollNavigationBar (from `../`) 12 | - KIF (~> 3.5) 13 | - Specta (~> 1.0) 14 | 15 | EXTERNAL SOURCES: 16 | GTScrollNavigationBar: 17 | :path: "../" 18 | 19 | SPEC CHECKSUMS: 20 | Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe 21 | GTScrollNavigationBar: 17e80b99c4250c92c82f31cd5e052a99422c2195 22 | KIF: '082eb65279e51c3092923802849eb796a04982ab' 23 | Specta: f506f3a8361de16bc0dcf3b17b75e269072ba465 24 | 25 | PODFILE CHECKSUM: 5e348aa9c22661b8136aeee501ccfa2e24651fee 26 | 27 | COCOAPODS: 1.1.1 28 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/GTScrollNavigationBar/GTScrollNavigationBar.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/GTScrollNavigationBar 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Expecta (1.0.5) 3 | - GTScrollNavigationBar (0.4) 4 | - KIF (3.5.1): 5 | - KIF/Core (= 3.5.1) 6 | - KIF/Core (3.5.1) 7 | - Specta (1.0.6) 8 | 9 | DEPENDENCIES: 10 | - Expecta (~> 1.0) 11 | - GTScrollNavigationBar (from `../`) 12 | - KIF (~> 3.5) 13 | - Specta (~> 1.0) 14 | 15 | EXTERNAL SOURCES: 16 | GTScrollNavigationBar: 17 | :path: "../" 18 | 19 | SPEC CHECKSUMS: 20 | Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe 21 | GTScrollNavigationBar: 17e80b99c4250c92c82f31cd5e052a99422c2195 22 | KIF: '082eb65279e51c3092923802849eb796a04982ab' 23 | Specta: f506f3a8361de16bc0dcf3b17b75e269072ba465 24 | 25 | PODFILE CHECKSUM: 5e348aa9c22661b8136aeee501ccfa2e24651fee 26 | 27 | COCOAPODS: 1.1.1 28 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CGGeometry-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CGGeometry-KIFAdditions.h 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/22/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import 11 | 12 | CG_INLINE CGPoint CGPointCenteredInRect(CGRect bounds) { 13 | return CGPointMake(bounds.origin.x + bounds.size.width * 0.5f, bounds.origin.y + bounds.size.height * 0.5f); 14 | } 15 | 16 | CG_INLINE CGPoint CGPointMidPoint(CGPoint point1, CGPoint point2) { 17 | return CGPointMake((point1.x + point2.x) / 2.0f, (point1.y + point2.y) / 2.0f); 18 | } 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIView-Debugging.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Debugging.h 3 | // KIF 4 | // 5 | // Created by Graeme Arthur on 02/05/15. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface UIView (Debugging) 12 | /*! 13 | @abstract Prints the view hiererchy, starting from the top window(s), along with accessibility information, which is more related to KIF than the usual information given by the 'description' method. 14 | */ 15 | +(void)printViewHierarchy; 16 | 17 | /*! 18 | @abstract Prints the view hiererchy, starting from this view, along with accessibility information, which is more related to KIF than the usual information given by the 'description' method. 19 | */ 20 | -(void)printViewHierarchy; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFTestStepValidation.m: -------------------------------------------------------------------------------- 1 | // 2 | // KIFTestStepValidation.m 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import "KIFTestStepValidation.h" 10 | 11 | @implementation _MockKIFTestActorDelegate 12 | 13 | - (void)failWithException:(NSException *)exception stopTest:(BOOL)stop 14 | { 15 | [self failWithExceptions:@[exception] stopTest:stop]; 16 | } 17 | 18 | - (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop 19 | { 20 | self.failed = YES; 21 | self.exceptions = exceptions; 22 | self.stopped = stop; 23 | if (stop) { 24 | [[exceptions objectAtIndex:0] raise]; 25 | } 26 | } 27 | 28 | + (instancetype)mockDelegate 29 | { 30 | return [[self alloc] init]; 31 | } 32 | 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beLessThan.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beLessThan, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] == NSOrderedAscending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/LoadableCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // LoadableCategory.h 3 | // KIF 4 | // 5 | // Created by Karl Stenerud on 7/16/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | /** Make all categories in the current file loadable without using -load-all. 11 | * 12 | * Normally, compilers will skip linking files that contain only categories. 13 | * Adding a call to this macro adds a dummy class, which causes the linker 14 | * to add the file. 15 | * 16 | * @param UNIQUE_NAME A globally unique name. 17 | */ 18 | #define MAKE_CATEGORIES_LOADABLE(UNIQUE_NAME) @interface FORCELOAD_##UNIQUE_NAME : NSObject @end @implementation FORCELOAD_##UNIQUE_NAME @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXPRuntimeMatcher.h 3 | // Expecta 4 | // 5 | // Created by Luke Redpath on 26/03/2012. 6 | // Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EXPMatcher.h" 11 | #import "EXPDefines.h" 12 | 13 | @interface EXPBlockDefinedMatcher : NSObject { 14 | EXPBoolBlock prerequisiteBlock; 15 | EXPBoolBlock matchBlock; 16 | EXPStringBlock failureMessageForToBlock; 17 | EXPStringBlock failureMessageForNotToBlock; 18 | } 19 | 20 | @property(nonatomic, copy) EXPBoolBlock prerequisiteBlock; 21 | @property(nonatomic, copy) EXPBoolBlock matchBlock; 22 | @property(nonatomic, copy) EXPStringBlock failureMessageForToBlock; 23 | @property(nonatomic, copy) EXPStringBlock failureMessageForNotToBlock; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+equal.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beIdenticalTo, (void *expected)) { 5 | match(^BOOL{ 6 | if(actual == expected) { 7 | return YES; 8 | } else if([actual isKindOfClass:[NSValue class]] && EXPIsValuePointer((NSValue *)actual)) { 9 | if([(NSValue *)actual pointerValue] == expected) { 10 | return YES; 11 | } 12 | } 13 | return NO; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: <%p>, got: <%p>", expected, actual]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: not <%p>, got: <%p>", expected, actual]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beGreaterThan.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beGreaterThan, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] == NSOrderedDescending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTTestSuite.m: -------------------------------------------------------------------------------- 1 | #import "SPTTestSuite.h" 2 | #import "SPTExampleGroup.h" 3 | #import "SPTCompiledExample.h" 4 | 5 | @implementation SPTTestSuite 6 | 7 | - (id)init { 8 | self = [super init]; 9 | if (self) { 10 | self.rootGroup = [[SPTExampleGroup alloc] init]; 11 | self.rootGroup.root = self.rootGroup; 12 | self.groupStack = [NSMutableArray arrayWithObject:self.rootGroup]; 13 | } 14 | return self; 15 | } 16 | 17 | - (SPTExampleGroup *)currentGroup { 18 | return [self.groupStack lastObject]; 19 | } 20 | 21 | - (void)compile { 22 | self.compiledExamples = [self.rootGroup compileExamplesWithStack:@[]]; 23 | for (SPTCompiledExample *example in self.compiledExamples) { 24 | if (example.focused) { 25 | self.hasFocusedExamples = YES; 26 | break; 27 | } 28 | } 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Specta/Specta.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Specta 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Specta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 6 | OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beLessThanOrEqualTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beLessThanOrEqualTo, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] != NSOrderedDescending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Expecta/Expecta.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Expecta 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 6 | OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/KIF/KIF.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/KIF 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/KIF" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 5 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "IOKit" -framework "QuartzCore" -framework "XCTest" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beGreaterThanOrEqualTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beGreaterThanOrEqualTo, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] != NSOrderedAscending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSException-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSException-KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Tony DiPasquale on 12/20/13. 6 | // 7 | // 8 | 9 | #import "NSException-KIFAdditions.h" 10 | 11 | @implementation NSException (KIFAdditions) 12 | 13 | + (NSException *)failureInFile:(NSString *)file atLine:(NSInteger)line withDescription:(NSString *)formatString, ... 14 | { 15 | va_list argumentList; 16 | va_start(argumentList, formatString); 17 | 18 | NSString *reason = [[NSString alloc] initWithFormat:formatString arguments:argumentList]; 19 | 20 | va_end(argumentList); 21 | 22 | return [NSException exceptionWithName:@"KIFFailureException" 23 | reason: reason 24 | userInfo:@{@"FilenameKey": file, 25 | @"LineNumberKey": @(line)}]; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @class 5 | SPTTestSuite 6 | , SPTCompiledExample 7 | ; 8 | 9 | @interface SPTSpec : XCTestCase 10 | 11 | @property (strong) XCTestCaseRun *spt_run; 12 | @property (nonatomic) BOOL spt_pending; 13 | @property (nonatomic) BOOL spt_skipped; 14 | 15 | + (BOOL)spt_isDisabled; 16 | + (void)spt_setDisabled:(BOOL)disabled; 17 | + (BOOL)spt_focusedExamplesExist; 18 | + (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example; 19 | + (SPTTestSuite *)spt_testSuite; 20 | + (void)spt_setCurrentTestSuite; 21 | + (void)spt_unsetCurrentTestSuite; 22 | + (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber; 23 | 24 | - (void)spec; 25 | - (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example; 26 | - (void)spt_runExample:(SPTCompiledExample *)example; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /GTScrollNavigationBar/GTScrollNavigationBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // GTScrollNavigationBar.h 3 | // GTScrollNavigationBar 4 | // 5 | // Created by Luu Gia Thuy on 21/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, GTScrollNavigationBarState) { 12 | GTScrollNavigationBarStateNone, 13 | GTScrollNavigationBarStateScrollingDown, 14 | GTScrollNavigationBarStateScrollingUp 15 | }; 16 | 17 | @interface GTScrollNavigationBar : UINavigationBar 18 | 19 | @property (strong, nonatomic) UIScrollView *scrollView; 20 | @property (assign, nonatomic) GTScrollNavigationBarState scrollState; 21 | 22 | - (void)resetToDefaultPositionWithAnimation:(BOOL)animated; 23 | 24 | @end 25 | 26 | @interface UINavigationController (GTScrollNavigationBarAdditions) 27 | 28 | @property(strong, nonatomic, readonly) GTScrollNavigationBar *scrollNavigationBar; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | extern NSString * const spt_kCurrentTestSuiteKey; 4 | extern NSString * const spt_kCurrentSpecKey; 5 | 6 | #define SPTCurrentTestSuite [[NSThread mainThread] threadDictionary][spt_kCurrentTestSuiteKey] 7 | #define SPTCurrentSpec [[NSThread mainThread] threadDictionary][spt_kCurrentSpecKey] 8 | #define SPTCurrentGroup [SPTCurrentTestSuite currentGroup] 9 | #define SPTGroupStack [SPTCurrentTestSuite groupStack] 10 | 11 | #define SPTReturnUnlessBlockOrNil(block) if ((block) && !SPTIsBlock((block))) return; 12 | #define SPTIsBlock(obj) [(obj) isKindOfClass:NSClassFromString(@"NSBlock")] 13 | 14 | BOOL spt_isSpecClass(Class aClass); 15 | NSString *spt_underscorize(NSString *string); 16 | NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)); 17 | NSArray *spt_shuffle(NSArray *array); 18 | unsigned int spt_seed(); 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beFalsy.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(beFalsy, (void)) { 5 | match(^BOOL{ 6 | if([actual isKindOfClass:[NSNumber class]]) { 7 | return ![(NSNumber *)actual boolValue]; 8 | } else if([actual isKindOfClass:[NSValue class]]) { 9 | if(EXPIsValuePointer((NSValue *)actual)) { 10 | return ![(NSValue *)actual pointerValue]; 11 | } 12 | } 13 | return !actual; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: a falsy value, got: %@, which is truthy", EXPDescribeObject(actual)]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: a non-falsy value, got: %@, which is falsy", EXPDescribeObject(actual)]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beTruthy.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(beTruthy, (void)) { 5 | match(^BOOL{ 6 | if([actual isKindOfClass:[NSNumber class]]) { 7 | return !![(NSNumber *)actual boolValue]; 8 | } else if([actual isKindOfClass:[NSValue class]]) { 9 | if(EXPIsValuePointer((NSValue *)actual)) { 10 | return !![(NSValue *)actual pointerValue]; 11 | } 12 | } 13 | return !!actual; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: a truthy value, got: %@, which is falsy", EXPDescribeObject(actual)]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: a non-truthy value, got: %@, which is truthy", EXPDescribeObject(actual)]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarExample/Pods-GTScrollNavigationBarExample.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GTScrollNavigationBar" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" -isystem "${PODS_ROOT}/Headers/Public/KIF" -isystem "${PODS_ROOT}/Headers/Public/Specta" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"GTScrollNavigationBar" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarExample/Pods-GTScrollNavigationBarExample.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/GTScrollNavigationBar" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" -isystem "${PODS_ROOT}/Headers/Public/KIF" -isystem "${PODS_ROOT}/Headers/Public/Specta" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"GTScrollNavigationBar" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers.h: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beNil.h" 2 | #import "EXPMatchers+equal.h" 3 | #import "EXPMatchers+beInstanceOf.h" 4 | #import "EXPMatchers+beKindOf.h" 5 | #import "EXPMatchers+beSubclassOf.h" 6 | #import "EXPMatchers+conformTo.h" 7 | #import "EXPMatchers+beTruthy.h" 8 | #import "EXPMatchers+beFalsy.h" 9 | #import "EXPMatchers+contain.h" 10 | #import "EXPMatchers+beSupersetOf.h" 11 | #import "EXPMatchers+haveCountOf.h" 12 | #import "EXPMatchers+beIdenticalTo.h" 13 | #import "EXPMatchers+beGreaterThan.h" 14 | #import "EXPMatchers+beGreaterThanOrEqualTo.h" 15 | #import "EXPMatchers+beLessThan.h" 16 | #import "EXPMatchers+beLessThanOrEqualTo.h" 17 | #import "EXPMatchers+beInTheRangeOf.h" 18 | #import "EXPMatchers+beCloseTo.h" 19 | #import "EXPMatchers+raise.h" 20 | #import "EXPMatchers+raiseWithReason.h" 21 | #import "EXPMatchers+respondTo.h" 22 | #import "EXPMatchers+postNotification.h" 23 | #import "EXPMatchers+beginWith.h" 24 | #import "EXPMatchers+endWith.h" 25 | #import "EXPMatchers+match.h" 26 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 4 | 5 | @interface XCTestObservationCenter (SPTTestSuspention) 6 | 7 | - (void)_suspendObservationForBlock:(void (^)(void))block; 8 | 9 | @end 10 | 11 | #else 12 | 13 | @interface XCTestObservationCenter : NSObject 14 | 15 | + (id)sharedObservationCenter; 16 | - (void)_suspendObservationForBlock:(void (^)(void))block; 17 | 18 | @end 19 | 20 | @protocol XCTestObservation 21 | @end 22 | 23 | 24 | #endif 25 | 26 | @interface _XCTestDriverTestObserver : NSObject 27 | 28 | - (void)stopObserving; 29 | - (void)startObserving; 30 | 31 | @end 32 | 33 | @interface _XCTestCaseImplementation : NSObject 34 | @end 35 | 36 | @interface XCTestCase () 37 | 38 | - (_XCTestCaseImplementation *)internalImplementation; 39 | - (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value)) 4 | #define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ __typeof__((actual)) strongActual = (actual); return EXPObjectify(strongActual); }) 5 | #define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments) 6 | #define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments) 7 | #define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd 8 | #define EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) 9 | 10 | #define EXP_failure(message) EXPFail(self, __LINE__, __FILE__, message) 11 | 12 | 13 | @interface Expecta : NSObject 14 | 15 | + (NSTimeInterval)asynchronousTestTimeout; 16 | + (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+respondTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(respondTo, (SEL expected)) { 5 | BOOL actualIsNil = (actual == nil); 6 | BOOL expectedIsNull = (expected == NULL); 7 | 8 | prerequisite (^BOOL { 9 | return !(actualIsNil || expectedIsNull); 10 | }); 11 | 12 | match(^BOOL { 13 | return [actual respondsToSelector:expected]; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | if (actualIsNil) return @"the object is nil/null"; 18 | if (expectedIsNull) return @"the selector is null"; 19 | return [NSString stringWithFormat:@"expected: %@ to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; 20 | }); 21 | 22 | failureMessageForNotTo(^NSString *{ 23 | if (actualIsNil) return @"the object is nil/null"; 24 | if (expectedIsNull) return @"the selector is null"; 25 | return [NSString stringWithFormat:@"expected: %@ not to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; 26 | }); 27 | } 28 | EXPMatcherImplementationEnd 29 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CALayer-KIFAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayer-KIFAdditions.h 3 | // Pods 4 | // 5 | // Created by Radu Ciobanu on 28/01/2016. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | // 10 | 11 | #import 12 | 13 | @interface CALayer (KIFAdditions) 14 | 15 | /** 16 | * @method hasAnimations 17 | * @abstract Traverses self's hierarchy of layers and checks whether any 18 | * visible sublayers or self have ongoing anymations. 19 | * @return YES if an animated layer has been found, NO otherwise. 20 | */ 21 | - (BOOL)hasAnimations; 22 | 23 | /*! 24 | @method performBlockOnDescendentLayers: 25 | @abstract Calls a block on the layer itself and on all its descendent layers. 26 | @param block The block that will be called on the layers. Stop the traversation 27 | of the layers by assigning YES to the stop-parameter of the block. 28 | */ 29 | - (void)performBlockOnDescendentLayers:(void (^)(CALayer *layer, BOOL *stop))block; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2014 Specta Team. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2015 Specta Team - https://github.com/specta 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beSubclassOf.h" 2 | #import "NSValue+Expecta.h" 3 | #import 4 | 5 | EXPMatcherImplementationBegin(beSubclassOf, (Class expected)) { 6 | __block BOOL actualIsClass = YES; 7 | 8 | prerequisite(^BOOL { 9 | actualIsClass = class_isMetaClass(object_getClass(actual)); 10 | return actualIsClass; 11 | }); 12 | 13 | match(^BOOL{ 14 | return [actual isSubclassOfClass:expected]; 15 | }); 16 | 17 | failureMessageForTo(^NSString *{ 18 | if(!actualIsClass) return @"the actual value is not a Class"; 19 | return [NSString stringWithFormat:@"expected: a subclass of %@, got: a class %@, which is not a subclass of %@", [expected class], actual, [expected class]]; 20 | }); 21 | 22 | failureMessageForNotTo(^NSString *{ 23 | if(!actualIsClass) return @"the actual value is not a Class"; 24 | return [NSString stringWithFormat:@"expected: not a subclass of %@, got: a class %@, which is a subclass of %@", [expected class], actual, [expected class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beASubclassOf, beSubclassOf, (Class expected)); 30 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+conformTo.h" 2 | #import "NSValue+Expecta.h" 3 | #import 4 | 5 | EXPMatcherImplementationBegin(conformTo, (Protocol *expected)) { 6 | BOOL actualIsNil = (actual == nil); 7 | BOOL expectedIsNil = (expected == nil); 8 | 9 | prerequisite(^BOOL{ 10 | return !(actualIsNil || expectedIsNil); 11 | }); 12 | 13 | match(^BOOL{ 14 | return [actual conformsToProtocol:expected]; 15 | }); 16 | 17 | failureMessageForTo(^NSString *{ 18 | if(actualIsNil) return @"the object is nil/null"; 19 | if(expectedIsNil) return @"the protocol is nil/null"; 20 | 21 | NSString *name = NSStringFromProtocol(expected); 22 | return [NSString stringWithFormat:@"expected: %@ to conform to %@", actual, name]; 23 | }); 24 | 25 | failureMessageForNotTo(^NSString *{ 26 | if(actualIsNil) return @"the object is nil/null"; 27 | if(expectedIsNil) return @"the protocol is nil/null"; 28 | 29 | NSString *name = NSStringFromProtocol(expected); 30 | return [NSString stringWithFormat:@"expected: %@ not to conform to %@", actual, name]; 31 | }); 32 | } 33 | EXPMatcherImplementationEnd 34 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beKindOf.h" 2 | 3 | EXPMatcherImplementationBegin(beKindOf, (Class expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return !(actualIsNil || expectedIsNil); 9 | }); 10 | 11 | match(^BOOL{ 12 | return [actual isKindOfClass:expected]; 13 | }); 14 | 15 | failureMessageForTo(^NSString *{ 16 | if(actualIsNil) return @"the actual value is nil/null"; 17 | if(expectedIsNil) return @"the expected value is nil/null"; 18 | return [NSString stringWithFormat:@"expected: a kind of %@, got: an instance of %@, which is not a kind of %@", [expected class], [actual class], [expected class]]; 19 | }); 20 | 21 | failureMessageForNotTo(^NSString *{ 22 | if(actualIsNil) return @"the actual value is nil/null"; 23 | if(expectedIsNil) return @"the expected value is nil/null"; 24 | return [NSString stringWithFormat:@"expected: not a kind of %@, got: an instance of %@, which is a kind of %@", [expected class], [actual class], [expected class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beAKindOf, beKindOf, (Class expected)); 30 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+raise.h" 2 | #import "EXPDefines.h" 3 | 4 | EXPMatcherImplementationBegin(raise, (NSString *expectedExceptionName)) { 5 | __block NSException *exceptionCaught = nil; 6 | 7 | match(^BOOL{ 8 | BOOL expectedExceptionCaught = NO; 9 | @try { 10 | ((EXPBasicBlock)actual)(); 11 | } @catch(NSException *e) { 12 | exceptionCaught = e; 13 | expectedExceptionCaught = (expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]; 14 | } 15 | return expectedExceptionCaught; 16 | }); 17 | 18 | failureMessageForTo(^NSString *{ 19 | return [NSString stringWithFormat:@"expected: %@, got: %@", 20 | expectedExceptionName ? expectedExceptionName : @"any exception", 21 | exceptionCaught ? [exceptionCaught name] : @"no exception"]; 22 | }); 23 | 24 | failureMessageForNotTo(^NSString *{ 25 | return [NSString stringWithFormat:@"expected: %@, got: %@", 26 | expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", 27 | exceptionCaught ? [exceptionCaught name] : @"no exception"]; 28 | }); 29 | } 30 | EXPMatcherImplementationEnd 31 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSError-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSError+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import "NSError-KIFAdditions.h" 10 | #import "LoadableCategory.h" 11 | #import "KIFTestActor.h" 12 | 13 | MAKE_CATEGORIES_LOADABLE(NSError_KIFAdditions) 14 | 15 | @implementation NSError (KIFAdditions) 16 | 17 | + (instancetype)KIFErrorWithFormat:(NSString *)format, ... 18 | { 19 | va_list args; 20 | va_start(args, format); 21 | NSString *description = [[NSString alloc] initWithFormat:format arguments:args]; 22 | va_end(args); 23 | 24 | return [self errorWithDomain:@"KIFTest" code:KIFTestStepResultFailure userInfo:@{NSLocalizedDescriptionKey: description}]; 25 | } 26 | 27 | + (instancetype)KIFErrorWithUnderlyingError:(NSError *)underlyingError format:(NSString *)format, ... 28 | { 29 | va_list args; 30 | va_start(args, format); 31 | NSString *description = [[NSString alloc] initWithFormat:format arguments:args]; 32 | va_end(args); 33 | 34 | NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:description, NSLocalizedDescriptionKey, underlyingError, NSUnderlyingErrorKey, nil]; 35 | 36 | return [self errorWithDomain:@"KIFTest" code:KIFTestStepResultFailure userInfo:userInfo]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beInstanceOf.h" 2 | 3 | EXPMatcherImplementationBegin(beInstanceOf, (Class expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return !(actualIsNil || expectedIsNil); 9 | }); 10 | 11 | match(^BOOL{ 12 | return [actual isMemberOfClass:expected]; 13 | }); 14 | 15 | failureMessageForTo(^NSString *{ 16 | if(actualIsNil) return @"the actual value is nil/null"; 17 | if(expectedIsNil) return @"the expected value is nil/null"; 18 | return [NSString stringWithFormat:@"expected: an instance of %@, got: an instance of %@", [expected class], [actual class]]; 19 | }); 20 | 21 | failureMessageForNotTo(^NSString *{ 22 | if(actualIsNil) return @"the actual value is nil/null"; 23 | if(expectedIsNil) return @"the expected value is nil/null"; 24 | return [NSString stringWithFormat:@"expected: not an instance of %@, got: an instance of %@", [expected class], [actual class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beAnInstanceOf, beInstanceOf, (Class expected)); 30 | EXPMatcherAliasImplementation(beMemberOf, beInstanceOf, (Class expected)); 31 | EXPMatcherAliasImplementation(beAMemberOf, beInstanceOf, (Class expected)); 32 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarTests/Pods-GTScrollNavigationBarTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 5 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Expecta" "$PODS_CONFIGURATION_BUILD_DIR/GTScrollNavigationBar" "$PODS_CONFIGURATION_BUILD_DIR/KIF" "$PODS_CONFIGURATION_BUILD_DIR/Specta" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" -isystem "${PODS_ROOT}/Headers/Public/KIF" -isystem "${PODS_ROOT}/Headers/Public/Specta" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"GTScrollNavigationBar" -l"KIF" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "IOKit" -framework "QuartzCore" -framework "XCTest" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarTests/Pods-GTScrollNavigationBarTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" "${PODS_ROOT}/Headers/Public/KIF" "${PODS_ROOT}/Headers/Public/Specta" 5 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Expecta" "$PODS_CONFIGURATION_BUILD_DIR/GTScrollNavigationBar" "$PODS_CONFIGURATION_BUILD_DIR/KIF" "$PODS_CONFIGURATION_BUILD_DIR/Specta" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/GTScrollNavigationBar" -isystem "${PODS_ROOT}/Headers/Public/KIF" -isystem "${PODS_ROOT}/Headers/Public/Specta" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -l"GTScrollNavigationBar" -l"KIF" -l"Specta" -framework "CoreGraphics" -framework "Foundation" -framework "IOKit" -framework "QuartzCore" -framework "XCTest" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXPRuntimeMatcher.m 3 | // Expecta 4 | // 5 | // Created by Luke Redpath on 26/03/2012. 6 | // Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. 7 | // 8 | 9 | #import "EXPBlockDefinedMatcher.h" 10 | 11 | @implementation EXPBlockDefinedMatcher 12 | 13 | - (void)dealloc 14 | { 15 | self.prerequisiteBlock = nil; 16 | self.matchBlock = nil; 17 | self.failureMessageForToBlock = nil; 18 | self.failureMessageForNotToBlock = nil; 19 | 20 | [super dealloc]; 21 | } 22 | 23 | @synthesize prerequisiteBlock; 24 | @synthesize matchBlock; 25 | @synthesize failureMessageForToBlock; 26 | @synthesize failureMessageForNotToBlock; 27 | 28 | - (BOOL)meetsPrerequesiteFor:(id)actual 29 | { 30 | if (self.prerequisiteBlock) { 31 | return self.prerequisiteBlock(); 32 | } 33 | return YES; 34 | } 35 | 36 | - (BOOL)matches:(id)actual 37 | { 38 | if (self.matchBlock) { 39 | return self.matchBlock(); 40 | } 41 | return YES; 42 | } 43 | 44 | - (NSString *)failureMessageForTo:(id)actual 45 | { 46 | if (self.failureMessageForToBlock) { 47 | return self.failureMessageForToBlock(); 48 | } 49 | return nil; 50 | } 51 | 52 | - (NSString *)failureMessageForNotTo:(id)actual 53 | { 54 | if (self.failureMessageForNotToBlock) { 55 | return self.failureMessageForNotToBlock(); 56 | } 57 | return nil; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/GTScrollNavigationBarExample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | Launch Screen 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beInTheRangeOf.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | NSComparisonResult compareLowerBound = [expectedLowerBound compare: actual]; 8 | NSComparisonResult compareUpperBound = [expectedUpperBound compare: actual]; 9 | if (compareLowerBound == NSOrderedSame) { 10 | return YES; 11 | } 12 | if (compareUpperBound == NSOrderedSame) { 13 | return YES; 14 | } 15 | if ((compareLowerBound == NSOrderedAscending) && (compareUpperBound == NSOrderedDescending)) { 16 | return YES; 17 | } 18 | } 19 | return NO; 20 | }); 21 | 22 | failureMessageForTo(^NSString *{ 23 | return [NSString stringWithFormat:@"expected: %@ to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; 24 | }); 25 | 26 | failureMessageForNotTo(^NSString *{ 27 | return [NSString stringWithFormat:@"expected: %@ not to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; 28 | }); 29 | } 30 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Luu Gia Thuy 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, this 11 | list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | * Neither the name of the {organization} nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPDoubleTuple.m: -------------------------------------------------------------------------------- 1 | #import "EXPDoubleTuple.h" 2 | 3 | #pragma clang diagnostic push 4 | #pragma clang diagnostic ignored "-Wobjc-designated-initializers" 5 | @implementation EXPDoubleTuple 6 | #pragma clang diagnostic pop 7 | 8 | @synthesize values = _values, size = _size; 9 | 10 | - (instancetype)initWithDoubleValues:(double *)values size:(size_t)size { 11 | if ((self = [super init])) { 12 | self.values = malloc(sizeof(double) * size); 13 | memcpy(self.values, values, sizeof(double) * size); 14 | self.size = size; 15 | } 16 | return self; 17 | } 18 | 19 | - (void)dealloc { 20 | free(self.values); 21 | [super dealloc]; 22 | } 23 | 24 | - (BOOL)isEqual:(id)object { 25 | if (![object isKindOfClass:[EXPDoubleTuple class]]) return NO; 26 | EXPDoubleTuple *other = (EXPDoubleTuple *)object; 27 | if (self.size == other.size) { 28 | for (int i = 0; i < self.size; ++i) { 29 | if (self.values[i] != other.values[i]) return NO; 30 | } 31 | return YES; 32 | } 33 | return NO; 34 | } 35 | 36 | - (NSString *)description { 37 | if (self.size == 2) { 38 | return [NSString stringWithFormat:@"Double tuple: {%f, %f}", self.values[0], self.values[1]]; 39 | } else if (self.size == 4) { 40 | return [NSString stringWithFormat:@"Double tuple: {%f, %f, %f, %f}", self.values[0], self.values[1], self.values[2], self.values[3]]; 41 | } 42 | return [NSString stringWithFormat:@"Double tuple of unexpected size %zd, sadly", self.size]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFTestStepValidation.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIFTestStepValidation.h 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 7/27/13. 6 | // 7 | // 8 | 9 | #import 10 | #import "KIFTestCase.h" 11 | 12 | #define __KIFFail XCTFail 13 | #define __KIFAssertEqual XCTAssertEqual 14 | #define __KIFAssertEqualObjects XCTAssertEqualObjects 15 | 16 | #define KIFExpectFailure(stmt) \ 17 | {\ 18 | _MockKIFTestActorDelegate *mockDelegate = [_MockKIFTestActorDelegate mockDelegate];\ 19 | {\ 20 | _MockKIFTestActorDelegate *self = mockDelegate;\ 21 | @try { stmt; }\ 22 | @catch (NSException *exception) { }\ 23 | }\ 24 | if (!mockDelegate.failed) {\ 25 | __KIFFail(@"%s should have failed.", #stmt);\ 26 | }\ 27 | } 28 | 29 | #define KIFExpectFailureWithCount(stmt, cnt) \ 30 | {\ 31 | _MockKIFTestActorDelegate *mockDelegate = [_MockKIFTestActorDelegate mockDelegate];\ 32 | {\ 33 | _MockKIFTestActorDelegate *self = mockDelegate;\ 34 | @try { stmt; }\ 35 | @catch (NSException *exception) { }\ 36 | }\ 37 | if (!mockDelegate.failed) {\ 38 | __KIFFail(@"%s should have failed.", #stmt);\ 39 | }\ 40 | __KIFAssertEqual((NSUInteger)cnt, mockDelegate.exceptions.count, @"Expected a different number of exceptions.");\ 41 | } 42 | 43 | 44 | @interface _MockKIFTestActorDelegate : NSObject 45 | @property (nonatomic, assign) BOOL failed; 46 | @property (nonatomic, strong) NSArray *exceptions; 47 | @property (nonatomic, assign) BOOL stopped; 48 | 49 | + (instancetype)mockDelegate; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "SpectaTypes.h" 4 | 5 | @class SPTExample; 6 | @class SPTCallSite; 7 | 8 | @interface SPTExampleGroup : NSObject 9 | 10 | @property (nonatomic, copy) NSString *name; 11 | @property (nonatomic, weak) SPTExampleGroup *root; 12 | @property (nonatomic, weak) SPTExampleGroup *parent; 13 | @property (nonatomic, strong) NSMutableArray *children; 14 | @property (nonatomic, strong) NSMutableArray *beforeAllArray; 15 | @property (nonatomic, strong) NSMutableArray *afterAllArray; 16 | @property (nonatomic, strong) NSMutableArray *beforeEachArray; 17 | @property (nonatomic, strong) NSMutableArray *afterEachArray; 18 | @property (nonatomic, strong) NSMutableDictionary *sharedExamples; 19 | @property (nonatomic) unsigned int exampleCount; 20 | @property (nonatomic) unsigned int ranExampleCount; 21 | @property (nonatomic) unsigned int pendingExampleCount; 22 | @property (nonatomic, getter=isFocused) BOOL focused; 23 | 24 | - (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root; 25 | 26 | - (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused; 27 | - (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; 28 | 29 | - (void)addBeforeAllBlock:(SPTVoidBlock)block; 30 | - (void)addAfterAllBlock:(SPTVoidBlock)block; 31 | - (void)addBeforeEachBlock:(SPTVoidBlock)block; 32 | - (void)addAfterEachBlock:(SPTVoidBlock)block; 33 | 34 | - (NSArray *)compileExamplesWithStack:(NSArray *)stack; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+contain.h" 2 | 3 | EXPMatcherImplementationBegin(_contain, (id expected)) { 4 | BOOL actualIsCompatible = [actual isKindOfClass:[NSString class]] || [actual conformsToProtocol:@protocol(NSFastEnumeration)]; 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return actualIsCompatible && !expectedIsNil; 9 | }); 10 | 11 | match(^BOOL{ 12 | if(actualIsCompatible) { 13 | if([actual isKindOfClass:[NSString class]]) { 14 | return [(NSString *)actual rangeOfString:[expected description]].location != NSNotFound; 15 | } else { 16 | for (id object in actual) { 17 | if ([object isEqual:expected]) { 18 | return YES; 19 | } 20 | } 21 | } 22 | } 23 | return NO; 24 | }); 25 | 26 | failureMessageForTo(^NSString *{ 27 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; 28 | if(expectedIsNil) return @"the expected value is nil/null"; 29 | return [NSString stringWithFormat:@"expected %@ to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 30 | }); 31 | 32 | failureMessageForNotTo(^NSString *{ 33 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; 34 | if(expectedIsNil) return @"the expected value is nil/null"; 35 | return [NSString stringWithFormat:@"expected %@ not to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 36 | }); 37 | } 38 | EXPMatcherImplementationEnd 39 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/EXPFloatTuple.m: -------------------------------------------------------------------------------- 1 | #import "EXPFloatTuple.h" 2 | 3 | #pragma clang diagnostic push 4 | #pragma clang diagnostic ignored "-Wobjc-designated-initializers" 5 | @implementation EXPFloatTuple 6 | #pragma clang diagnostic pop 7 | 8 | @synthesize values = _values, size = _size; 9 | 10 | - (instancetype)initWithFloatValues:(float *)values size:(size_t)size { 11 | if ((self = [super init])) { 12 | self.values = malloc(sizeof(float) * size); 13 | memcpy(self.values, values, sizeof(float) * size); 14 | self.size = size; 15 | } 16 | return self; 17 | } 18 | 19 | - (void)dealloc { 20 | free(self.values); 21 | [super dealloc]; 22 | } 23 | 24 | - (BOOL)isEqual:(id)object { 25 | if (![object isKindOfClass:[EXPFloatTuple class]]) return NO; 26 | EXPFloatTuple *other = (EXPFloatTuple *)object; 27 | if (self.size == other.size) { 28 | for (int i = 0; i < self.size; ++i) { 29 | if (self.values[i] != other.values[i]) return NO; 30 | } 31 | return YES; 32 | } 33 | return NO; 34 | } 35 | 36 | - (NSUInteger)hash 37 | { 38 | NSUInteger prime = 31; 39 | NSUInteger hash = 0; 40 | for (int i=0; i 2 | #import "EXPMatcher.h" 3 | #import "EXPDefines.h" 4 | 5 | @interface EXPExpect : NSObject { 6 | EXPIdBlock _actualBlock; 7 | id _testCase; 8 | int _lineNumber; 9 | char *_fileName; 10 | BOOL _negative; 11 | BOOL _asynchronous; 12 | NSTimeInterval _timeout; 13 | } 14 | 15 | @property(nonatomic, copy) EXPIdBlock actualBlock; 16 | @property(nonatomic, readonly) id actual; 17 | @property(nonatomic, assign) id testCase; 18 | @property(nonatomic) int lineNumber; 19 | @property(nonatomic) const char *fileName; 20 | @property(nonatomic) BOOL negative; 21 | @property(nonatomic) BOOL asynchronous; 22 | @property(nonatomic) NSTimeInterval timeout; 23 | 24 | @property(nonatomic, readonly) EXPExpect *to; 25 | @property(nonatomic, readonly) EXPExpect *toNot; 26 | @property(nonatomic, readonly) EXPExpect *notTo; 27 | @property(nonatomic, readonly) EXPExpect *will; 28 | @property(nonatomic, readonly) EXPExpect *willNot; 29 | @property(nonatomic, readonly) EXPExpect *(^after)(NSTimeInterval timeInterval); 30 | 31 | - (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName NS_DESIGNATED_INITIALIZER; 32 | + (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName; 33 | 34 | - (void)applyMatcher:(id)matcher; 35 | - (void)applyMatcher:(id)matcher to:(NSObject **)actual; 36 | 37 | @end 38 | 39 | @interface EXPDynamicPredicateMatcher : NSObject { 40 | EXPExpect *_expectation; 41 | SEL _selector; 42 | } 43 | - (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector NS_DESIGNATED_INITIALIZER; 44 | @property (nonatomic, readonly, copy) void (^dispatch)(void); 45 | @end 46 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+raiseWithReason.h" 2 | #import "EXPDefines.h" 3 | 4 | EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) { 5 | __block NSException *exceptionCaught = nil; 6 | 7 | match(^BOOL{ 8 | BOOL expectedExceptionCaught = NO; 9 | @try { 10 | ((EXPBasicBlock)actual)(); 11 | } @catch(NSException *e) { 12 | exceptionCaught = e; 13 | expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) && 14 | ((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason]))); 15 | } 16 | return expectedExceptionCaught; 17 | }); 18 | 19 | failureMessageForTo(^NSString *{ 20 | return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", 21 | expectedExceptionName ?: @"any exception", 22 | expectedReason ?: @"any reason", 23 | exceptionCaught ? [exceptionCaught name] : @"no exception", 24 | exceptionCaught ? [exceptionCaught reason] : @""]; 25 | }); 26 | 27 | failureMessageForNotTo(^NSString *{ 28 | return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", 29 | expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", 30 | expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason", 31 | exceptionCaught ? [exceptionCaught name] : @"no exception", 32 | exceptionCaught ? [exceptionCaught reason] : @"no reason"]; 33 | }); 34 | } 35 | EXPMatcherImplementationEnd 36 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarExample/Pods-GTScrollNavigationBarExample-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## GTScrollNavigationBar 5 | 6 | Copyright (c) 2013, Luu Gia Thuy 7 | All rights reserved. 8 | 9 | Redistribution and use in source and binary forms, with or without modification, 10 | are permitted provided that the following conditions are met: 11 | 12 | * Redistributions of source code must retain the above copyright notice, this 13 | list of conditions and the following disclaimer. 14 | 15 | * Redistributions in binary form must reproduce the above copyright notice, this 16 | list of conditions and the following disclaimer in the documentation and/or 17 | other materials provided with the distribution. 18 | 19 | * Neither the name of the {organization} nor the names of its 20 | contributors may be used to endorse or promote products derived from 21 | this software without specific prior written permission. 22 | 23 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 24 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 27 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 30 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | 34 | Generated by CocoaPods - https://cocoapods.org 35 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIScrollView-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView-KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Eric Firestone on 5/22/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import "UIScrollView-KIFAdditions.h" 11 | #import "LoadableCategory.h" 12 | #import "UIApplication-KIFAdditions.h" 13 | #import "UIView-KIFAdditions.h" 14 | 15 | 16 | MAKE_CATEGORIES_LOADABLE(UIScrollView_KIFAdditions) 17 | 18 | 19 | @implementation UIScrollView (KIFAdditions) 20 | 21 | - (void)scrollViewToVisible:(UIView *)view animated:(BOOL)animated; 22 | { 23 | CGRect viewFrame = [self convertRect:view.bounds fromView:view]; 24 | CGPoint contentOffset = self.contentOffset; 25 | 26 | if (CGRectGetMaxX(viewFrame) > self.contentOffset.x + CGRectGetWidth(self.bounds)) { 27 | contentOffset.x = MIN(CGRectGetMaxX(viewFrame) - CGRectGetWidth(self.bounds), CGRectGetMinX(viewFrame)); 28 | } else if (CGRectGetMinX(viewFrame) < self.contentOffset.x) { 29 | contentOffset.x = MAX(CGRectGetMaxX(viewFrame) - CGRectGetWidth(self.bounds), CGRectGetMinX(viewFrame)); 30 | } 31 | 32 | if (CGRectGetMaxY(viewFrame) > self.contentOffset.y + CGRectGetHeight(self.bounds)) { 33 | contentOffset.y = MIN(CGRectGetMaxY(viewFrame) - CGRectGetHeight(self.bounds), CGRectGetMinY(viewFrame)); 34 | } else if (CGRectGetMinY(viewFrame) < self.contentOffset.y) { 35 | contentOffset.y = MAX(CGRectGetMaxY(viewFrame) - CGRectGetHeight(self.bounds), CGRectGetMinY(viewFrame)); 36 | } 37 | 38 | if (!CGPointEqualToPoint(contentOffset, self.contentOffset)) { 39 | [self setContentOffset:contentOffset animated:animated]; 40 | KIFRunLoopRunInModeRelativeToAnimationSpeed(kCFRunLoopDefaultMode, 0.2, false); 41 | } 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+equal.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_equal, (id expected)) { 5 | match(^BOOL{ 6 | if((actual == expected) || [actual isEqual:expected]) { 7 | return YES; 8 | } else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) { 9 | if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) { 10 | NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]]; 11 | NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]]; 12 | return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber]; 13 | } 14 | else { 15 | if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) { 16 | return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue]; 17 | } 18 | } 19 | } 20 | return NO; 21 | }); 22 | 23 | failureMessageForTo(^NSString *{ 24 | NSString *expectedDescription = EXPDescribeObject(expected); 25 | NSString *actualDescription = EXPDescribeObject(actual); 26 | 27 | if (![expectedDescription isEqualToString:actualDescription]) { 28 | return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; 29 | } else { 30 | return [NSString stringWithFormat:@"expected (%@): %@, got (%@): %@", NSStringFromClass([expected class]), EXPDescribeObject(expected), NSStringFromClass([actual class]), EXPDescribeObject(actual)]; 31 | } 32 | }); 33 | 34 | failureMessageForNotTo(^NSString *{ 35 | return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; 36 | }); 37 | } 38 | EXPMatcherImplementationEnd 39 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+haveCountOf.h" 2 | 3 | EXPMatcherImplementationBegin(haveCountOf, (NSUInteger expected)) { 4 | BOOL actualIsStringy = [actual isKindOfClass:[NSString class]] || [actual isKindOfClass:[NSAttributedString class]]; 5 | BOOL actualIsCompatible = actualIsStringy || [actual respondsToSelector:@selector(count)]; 6 | 7 | prerequisite(^BOOL{ 8 | return actualIsCompatible; 9 | }); 10 | 11 | NSUInteger (^count)(id) = ^(id actual) { 12 | if(actualIsStringy) { 13 | return [actual length]; 14 | } else { 15 | return [actual count]; 16 | } 17 | }; 18 | 19 | match(^BOOL{ 20 | if(actualIsCompatible) { 21 | return count(actual) == expected; 22 | } 23 | return NO; 24 | }); 25 | 26 | failureMessageForTo(^NSString *{ 27 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; 28 | return [NSString stringWithFormat:@"expected %@ to have a count of %zi but got %zi", EXPDescribeObject(actual), expected, count(actual)]; 29 | }); 30 | 31 | failureMessageForNotTo(^NSString *{ 32 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; 33 | return [NSString stringWithFormat:@"expected %@ not to have a count of %zi", EXPDescribeObject(actual), expected]; 34 | }); 35 | } 36 | EXPMatcherImplementationEnd 37 | 38 | EXPMatcherAliasImplementation(haveCount, haveCountOf, (NSUInteger expected)); 39 | EXPMatcherAliasImplementation(haveACountOf, haveCountOf, (NSUInteger expected)); 40 | EXPMatcherAliasImplementation(haveLength, haveCountOf, (NSUInteger expected)); 41 | EXPMatcherAliasImplementation(haveLengthOf, haveCountOf, (NSUInteger expected)); 42 | EXPMatcherAliasImplementation(haveALengthOf, haveCountOf, (NSUInteger expected)); 43 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beCloseTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) { 5 | prerequisite(^BOOL{ 6 | return [actual isKindOfClass:[NSNumber class]] && 7 | [expected isKindOfClass:[NSNumber class]] && 8 | ([within isKindOfClass:[NSNumber class]] || (within == nil)); 9 | }); 10 | 11 | match(^BOOL{ 12 | double actualValue = [actual doubleValue]; 13 | double expectedValue = [expected doubleValue]; 14 | 15 | if (within != nil) { 16 | double withinValue = [within doubleValue]; 17 | double lowerBound = expectedValue - withinValue; 18 | double upperBound = expectedValue + withinValue; 19 | return (actualValue >= lowerBound) && (actualValue <= upperBound); 20 | } else { 21 | double diff = fabs(actualValue - expectedValue); 22 | actualValue = fabs(actualValue); 23 | expectedValue = fabs(expectedValue); 24 | double largest = (expectedValue > actualValue) ? expectedValue : actualValue; 25 | return (diff <= largest * FLT_EPSILON); 26 | } 27 | }); 28 | 29 | failureMessageForTo(^NSString *{ 30 | if (within) { 31 | return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@", 32 | EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; 33 | } else { 34 | return [NSString stringWithFormat:@"expected %@ to be close to %@", 35 | EXPDescribeObject(actual), EXPDescribeObject(expected)]; 36 | } 37 | }); 38 | 39 | failureMessageForNotTo(^NSString *{ 40 | if (within) { 41 | return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@", 42 | EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; 43 | } else { 44 | return [NSString stringWithFormat:@"expected %@ not to be close to %@", 45 | EXPDescribeObject(actual), EXPDescribeObject(expected)]; 46 | } 47 | }); 48 | } 49 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSFileManager-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileManager-KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Michael Thole on 6/1/11. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | #import "NSFileManager-KIFAdditions.h" 11 | #import "LoadableCategory.h" 12 | 13 | 14 | MAKE_CATEGORIES_LOADABLE(NSFileManager_KIFAdditions) 15 | 16 | 17 | @implementation NSFileManager (KIFAdditions) 18 | 19 | #pragma mark Public Methods 20 | 21 | - (NSString *)createUserDirectory:(NSSearchPathDirectory)searchPath; 22 | { 23 | NSArray *paths = NSSearchPathForDirectoriesInDomains(searchPath, NSUserDomainMask, YES); 24 | if (!paths.count) { 25 | return nil; 26 | } 27 | 28 | NSString *rootDirectory = paths[0]; 29 | 30 | BOOL isDir; 31 | BOOL created = NO; 32 | if ([self fileExistsAtPath:rootDirectory isDirectory:&isDir] && isDir) { 33 | created = YES; 34 | } else { 35 | created = [self recursivelyCreateDirectory:rootDirectory]; 36 | } 37 | 38 | return created ? rootDirectory : nil; 39 | } 40 | 41 | - (BOOL)recursivelyCreateDirectory:(NSString *)path; 42 | { 43 | BOOL isDir = NO; 44 | BOOL isParentADir = NO; 45 | NSString *parentDir = nil; 46 | 47 | if (![self fileExistsAtPath:path isDirectory:&isDir]) { 48 | // if file doesn't exist, first create parent 49 | parentDir = [path stringByDeletingLastPathComponent]; 50 | 51 | if (!parentDir.length || [parentDir isEqualToString:@"/"]) { 52 | isParentADir = YES; 53 | } else { 54 | isParentADir = [self recursivelyCreateDirectory:parentDir]; 55 | } 56 | 57 | if (isParentADir) { 58 | isDir = [self createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; 59 | } else { 60 | return NO; 61 | } 62 | } 63 | 64 | return isDir; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/DemoWebViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DemoWebViewController.m 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 23/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import "DemoWebViewController.h" 10 | #import "GTScrollNavigationBar.h" 11 | 12 | @interface DemoWebViewController () 13 | 14 | @property (strong, nonatomic) UIWebView* webView; 15 | 16 | @end 17 | 18 | @implementation DemoWebViewController 19 | 20 | #pragma mark - view lifecycle 21 | - (void)loadView 22 | { 23 | [super loadView]; 24 | 25 | float viewWidth = CGRectGetWidth(self.view.frame); 26 | float viewHeight = CGRectGetHeight(self.view.frame); 27 | 28 | self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, viewWidth, viewHeight)]; 29 | self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 30 | self.webView.delegate = self; 31 | self.webView.scrollView.delegate = self; 32 | // [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://twitter.com/luugiathuy"]]]; 33 | [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]]; 34 | [self.view addSubview:self.webView]; 35 | } 36 | 37 | - (void)viewWillAppear:(BOOL)animated 38 | { 39 | [super viewWillAppear:animated]; 40 | } 41 | 42 | - (void)viewWillDisappear:(BOOL)animated 43 | { 44 | [super viewWillDisappear:animated]; 45 | self.navigationController.scrollNavigationBar.scrollView = nil; 46 | } 47 | 48 | - (void)didReceiveMemoryWarning 49 | { 50 | [super didReceiveMemoryWarning]; 51 | // Dispose of any resources that can be recreated. 52 | } 53 | 54 | #pragma mark - UIWebViewDelegate 55 | - (void)webViewDidFinishLoad:(UIWebView *)webView 56 | { 57 | self.navigationController.scrollNavigationBar.scrollView = self.webView.scrollView; 58 | } 59 | 60 | - (void)webViewDidStartLoad:(UIWebView *)webView 61 | { 62 | [self.navigationController.scrollNavigationBar resetToDefaultPositionWithAnimation:NO]; 63 | } 64 | 65 | #pragma mark - UIScrollViewDelegate 66 | - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView 67 | { 68 | [self.navigationController.scrollNavigationBar resetToDefaultPositionWithAnimation:NO]; 69 | } 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/NSPredicate+KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSPredicate+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Alex Odawa on 2/3/15. 6 | // 7 | // 8 | 9 | #import 10 | #import "NSPredicate+KIFAdditions.h" 11 | 12 | @implementation NSPredicate (KIFAdditions) 13 | 14 | - (NSArray *)flatten 15 | { 16 | NSMutableArray *result = [[NSMutableArray alloc] init]; 17 | 18 | if ([self isKindOfClass:[NSCompoundPredicate class]]) { 19 | for (NSPredicate *predicate in ((NSCompoundPredicate *)self).subpredicates) { 20 | [result addObjectsFromArray:[predicate flatten]]; 21 | } 22 | } else { 23 | [result addObject:self]; 24 | } 25 | 26 | return result; 27 | } 28 | 29 | - (NSCompoundPredicate *)minusSubpredicatesFrom:(NSPredicate *)otherPredicate; 30 | { 31 | if (self == otherPredicate) { 32 | return nil; 33 | } 34 | NSMutableSet *subpredicates = [NSMutableSet setWithArray:[self flatten]]; 35 | NSMutableSet *otherSubpredicates = [NSMutableSet setWithArray:[otherPredicate flatten]]; 36 | [subpredicates minusSet:otherSubpredicates]; 37 | return [[NSCompoundPredicate alloc] initWithType:NSAndPredicateType 38 | subpredicates:[subpredicates allObjects]]; 39 | } 40 | 41 | - (void)setKifPredicateDescription:(NSString *)description; 42 | { 43 | NSString *desc = description.copy; 44 | objc_setAssociatedObject(self, @selector(kifPredicateDescription), desc, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 45 | } 46 | 47 | - (NSString *)kifPredicateDescription; 48 | { 49 | id object = objc_getAssociatedObject(self, @selector(kifPredicateDescription)); 50 | if (object) { 51 | return object; 52 | } 53 | // Compound predicates containing subpredicates with the kifPredicateDescription set should still get our pretty formatting. 54 | if ([self isKindOfClass:[NSCompoundPredicate class]]) { 55 | NSArray *subpredicates = [self flatten]; 56 | NSString *description = @""; 57 | 58 | for (NSPredicate *predicate in subpredicates) { 59 | if (description.length > 0) { 60 | description = [description stringByAppendingString:@", "]; 61 | } 62 | description = [description stringByAppendingString:predicate.kifPredicateDescription]; 63 | } 64 | if (description.length > 0) { 65 | return description; 66 | } 67 | } 68 | 69 | return self.description; 70 | } 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GTScrollNavigationBar 2 | 3 | [![CocoaPods Version](https://img.shields.io/cocoapods/v/GTScrollNavigationBar.svg)](http://cocoadocs.org/docsets/GTScrollNavigationBar) [![Build Status](https://travis-ci.org/luugiathuy/GTScrollNavigationBar.svg?branch=master)](https://travis-ci.org/luugiathuy/GTScrollNavigationBar) [![Coverage Status](https://coveralls.io/repos/luugiathuy/GTScrollNavigationBar/badge.svg?branch=master&service=github)](https://coveralls.io/github/luugiathuy/GTScrollNavigationBar?branch=master) 4 | 5 | A lightweight scrollable UINavigationBar that follows a UIScrollView. This project was inspired by the navigation bar functionality seen in the Chrome, Facebook and Instagram iOS apps. 6 | 7 | ![GTScrollNavigationBar Screenshot 1](http://luugiathuy.com/images/GTScrollNavigationBar1.png) ![GTScrollNavigationBar Screenshot 2](http://luugiathuy.com/images/GTScrollNavigationBar2.png) 8 | 9 | ## Installation 10 | 11 | ### CocoaPods 12 | 13 | Add pod `GTScrollNavigationBar` to your Podfile. 14 | 15 | ### Manually 16 | 17 | Add the `GTScrollNavigationBar` folder to your project. `GTScrollNavigationBar` uses ARC, so if you have a project that doesn't use ARC, add the `-fobjc-arc` compiler flag to the `GTScrollNavigationBar` files. 18 | 19 | ## Usage 20 | 21 | Set up the navigation controller to use `GTScrollNavigationBar`: 22 | 23 | ```objective-c 24 | #import "GTScrollNavigationBar.h" 25 | 26 | self.navController = [[UINavigationController alloc] initWithNavigationBarClass:[GTScrollNavigationBar class] 27 | toolbarClass:nil]; 28 | [self.navController setViewControllers:@[self.mainViewController] animated:NO]; 29 | ``` 30 | 31 | In your view controller which has a `UIScrollView`, e.g. `UITableViewController`, set the UIScrollView object to the `GTScrollNavigationBar` in `viewWillAppear:` or `viewDidAppear:` by: 32 | 33 | ```objective-c 34 | self.navigationController.scrollNavigationBar.scrollView = self.tableView; 35 | ``` 36 | 37 | To unfollow the scrollView, simply set `scrollView` property to `nil` 38 | 39 | ```objective-c 40 | self.navigationController.scrollNavigationBar.scrollView = nil; 41 | ``` 42 | 43 | Implement `scrollViewDidScrollToTop:` in the view controller to reset the navigation bar's position 44 | 45 | ```objective-c 46 | - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView 47 | { 48 | [self.navigationController.scrollNavigationBar resetToDefaultPositionWithAnimation:NO]; 49 | } 50 | ``` 51 | 52 | ## Contact 53 | 54 | [@luugiathuy](http://twitter.com/luugiathuy) 55 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/XCTestCase+Specta.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "XCTestCase+Specta.h" 3 | #import "SPTSpec.h" 4 | #import "SPTExample.h" 5 | #import "SPTSharedExampleGroups.h" 6 | #import "SpectaUtility.h" 7 | #import "XCTest+Private.h" 8 | 9 | @interface XCTestCase (xct_allSubclasses) 10 | 11 | - (NSArray *)allSubclasses; 12 | - (void)_dequeueFailures; 13 | 14 | @end 15 | 16 | @implementation XCTestCase (Specta) 17 | 18 | + (void)load { 19 | Method allSubclasses = class_getClassMethod(self, @selector(allSubclasses)); 20 | Method allSubclasses_swizzle = class_getClassMethod(self , @selector(spt_allSubclasses_swizzle)); 21 | method_exchangeImplementations(allSubclasses, allSubclasses_swizzle); 22 | 23 | Method dequeueFailures = class_getInstanceMethod(self, @selector(_dequeueFailures)); 24 | Method dequeueFailures_swizzle = class_getInstanceMethod(self, @selector(spt_dequeueFailures)); 25 | method_exchangeImplementations(dequeueFailures, dequeueFailures_swizzle); 26 | } 27 | 28 | + (NSArray *)spt_allSubclasses_swizzle { 29 | NSArray *subclasses = [self spt_allSubclasses_swizzle]; // call original 30 | NSMutableArray *filtered = [NSMutableArray arrayWithCapacity:[subclasses count]]; 31 | // exclude SPTSpec base class and all subclasses of SPTSharedExampleGroups 32 | for (id subclass in subclasses) { 33 | if (subclass != [SPTSpec class] && ![subclass isKindOfClass:[SPTSharedExampleGroups class]]) { 34 | [filtered addObject:subclass]; 35 | } 36 | } 37 | return spt_shuffle(filtered); 38 | } 39 | 40 | - (void)spt_dequeueFailures { 41 | void(^dequeueFailures)() = ^() { 42 | [self spt_dequeueFailures]; 43 | }; 44 | 45 | BOOL isMainThread = [NSThread isMainThread]; 46 | BOOL isSpectaTest = [self isKindOfClass:[SPTSpec class]]; 47 | 48 | if (!isSpectaTest || isMainThread) { 49 | dequeueFailures(); 50 | } else { 51 | dispatch_sync(dispatch_get_main_queue(), dequeueFailures); 52 | } 53 | } 54 | 55 | - (void)spt_handleException:(NSException *)exception { 56 | NSString *description = [exception reason]; 57 | if ([exception userInfo]) { 58 | id line = [exception userInfo][@"line"]; 59 | id file = [exception userInfo][@"file"]; 60 | if ([line isKindOfClass:[NSNumber class]] && [file isKindOfClass:[NSString class]]) { 61 | [self recordFailureWithDescription:description inFile:file atLine:[line unsignedIntegerValue] expected:YES]; 62 | return; 63 | } 64 | } 65 | [self _recordUnexpectedFailureWithDescription:description exception:exception]; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Classes/KIFTestCase.h: -------------------------------------------------------------------------------- 1 | // 2 | // KIFTestCase.h 3 | // KIF 4 | // 5 | // Created by Brian Nickel on 12/14/12. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | 10 | /*! 11 | * @abstract @c KIFTestCase subclasses @c XCTestCase to add setup and teardown steps that can be used to execute KIF test steps. 12 | * @discussion This class provides four new methods: @c beforeAll and @c afterAll which run once before and after all tests and @c beforeEach and @c afterEach which run before and after every test. @c beforeEach and @c afterEach are guaranteed to run in the same instance as each test, but @c beforeAll and @c afterAll are not. As such, @c beforeEach can be used to set up instance variables while @c beforeAll can only be used to set up static variables. 13 | */ 14 | #import 15 | #import "XCTestCase-KIFAdditions.h" 16 | @interface KIFTestCase : XCTestCase 17 | 18 | /*! 19 | * @abstract This method runs once before executing the first test in the class. 20 | * @discussion This should be used for navigating to the starting point in the app where all tests will start from. Because this method is not guaranteed to run in the same instance as tests, it should not be used for setting up instance variables but can be used for setting up static variables. 21 | */ 22 | - (void)beforeAll; 23 | 24 | /*! 25 | * @abstract This method runs before each test. 26 | * @discussion This should be used for any common tasks required before each test. Because this method is guaranteed to run in the same instance as tests, it can be used for setting up instance variables. 27 | */ 28 | - (void)beforeEach; 29 | 30 | /*! 31 | * @abstract This method runs after each test. 32 | * @discussion This should be used for restoring the app to the state it was in before the test. This could include conditional logic to recover from failed tests. 33 | */ 34 | - (void)afterEach; 35 | 36 | /*! 37 | * @abstract This method runs once after executing the last test in the class. 38 | * @discussion This should be used for navigating back to the initial state of the app, where it was before @c beforeAll. This should also be used for tearing down any static methods created by @c beforeAll. 39 | */ 40 | - (void)afterAll; 41 | 42 | /*! 43 | * @discussion When @c YES, rather than failing the test and advancing on the first failure, KIF will stop executing tests and begin spinning the run loop. This provides an opportunity for inspecting the state of the app when the failure occurred. 44 | */ 45 | @property (nonatomic, assign) BOOL stopTestsOnFirstBigFailure; 46 | 47 | @end 48 | 49 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/UIEvent+KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIEvent+KIFAdditions.m 3 | // KIF 4 | // 5 | // Created by Thomas on 3/1/15. 6 | // 7 | // 8 | 9 | #import "UIEvent+KIFAdditions.h" 10 | #import "LoadableCategory.h" 11 | #import "IOHIDEvent+KIF.h" 12 | 13 | MAKE_CATEGORIES_LOADABLE(UIEvent_KIFAdditions) 14 | 15 | // 16 | // GSEvent is an undeclared object. We don't need to use it ourselves but some 17 | // Apple APIs (UIScrollView in particular) require the x and y fields to be present. 18 | // 19 | @interface KIFGSEventProxy : NSObject 20 | { 21 | @public 22 | unsigned int flags; 23 | unsigned int type; 24 | unsigned int ignored1; 25 | float x1; 26 | float y1; 27 | float x2; 28 | float y2; 29 | unsigned int ignored2[10]; 30 | unsigned int ignored3[7]; 31 | float sizeX; 32 | float sizeY; 33 | float x3; 34 | float y3; 35 | unsigned int ignored4[3]; 36 | } 37 | @end 38 | 39 | @implementation KIFGSEventProxy 40 | @end 41 | 42 | typedef struct __GSEvent * GSEventRef; 43 | 44 | @interface UIEvent (KIFAdditionsMorePrivateHeaders) 45 | - (void)_setGSEvent:(GSEventRef)event; 46 | - (void)_setHIDEvent:(IOHIDEventRef)event; 47 | - (void)_setTimestamp:(NSTimeInterval)timestemp; 48 | @end 49 | 50 | @implementation UIEvent (KIFAdditions) 51 | 52 | - (void)kif_setEventWithTouches:(NSArray *)touches 53 | { 54 | NSOperatingSystemVersion iOS8 = {8, 0, 0}; 55 | if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] 56 | && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS8]) { 57 | [self kif_setIOHIDEventWithTouches:touches]; 58 | } else { 59 | [self kif_setGSEventWithTouches:touches]; 60 | } 61 | } 62 | 63 | - (void)kif_setGSEventWithTouches:(NSArray *)touches 64 | { 65 | UITouch *touch = touches[0]; 66 | CGPoint location = [touch locationInView:touch.window]; 67 | KIFGSEventProxy *gsEventProxy = [[KIFGSEventProxy alloc] init]; 68 | gsEventProxy->x1 = location.x; 69 | gsEventProxy->y1 = location.y; 70 | gsEventProxy->x2 = location.x; 71 | gsEventProxy->y2 = location.y; 72 | gsEventProxy->x3 = location.x; 73 | gsEventProxy->y3 = location.y; 74 | gsEventProxy->sizeX = 1.0; 75 | gsEventProxy->sizeY = 1.0; 76 | gsEventProxy->flags = ([touch phase] == UITouchPhaseEnded) ? 0x1010180 : 0x3010180; 77 | gsEventProxy->type = 3001; 78 | 79 | [self _setGSEvent:(GSEventRef)gsEventProxy]; 80 | 81 | [self _setTimestamp:(((UITouch*)touches[0]).timestamp)]; 82 | } 83 | 84 | - (void)kif_setIOHIDEventWithTouches:(NSArray *)touches 85 | { 86 | IOHIDEventRef event = kif_IOHIDEventWithTouches(touches); 87 | [self _setHIDEvent:event]; 88 | CFRelease(event); 89 | } 90 | 91 | @end 92 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m: -------------------------------------------------------------------------------- 1 | #import "SPTSharedExampleGroups.h" 2 | #import "SPTExampleGroup.h" 3 | #import "SPTSpec.h" 4 | #import "SpectaUtility.h" 5 | #import 6 | 7 | NSMutableDictionary *globalSharedExampleGroups = nil; 8 | BOOL initialized = NO; 9 | 10 | @implementation SPTSharedExampleGroups 11 | 12 | + (void)initialize { 13 | Class SPTSharedExampleGroupsClass = [SPTSharedExampleGroups class]; 14 | if ([self class] == SPTSharedExampleGroupsClass) { 15 | if (!initialized) { 16 | initialized = YES; 17 | globalSharedExampleGroups = [[NSMutableDictionary alloc] init]; 18 | 19 | Class *classes = NULL; 20 | int numClasses = objc_getClassList(NULL, 0); 21 | 22 | if (numClasses > 0) { 23 | classes = (Class *)malloc(sizeof(Class) * numClasses); 24 | numClasses = objc_getClassList(classes, numClasses); 25 | 26 | Class klass, superClass; 27 | for(uint i = 0; i < numClasses; i++) { 28 | klass = classes[i]; 29 | superClass = class_getSuperclass(klass); 30 | if (superClass == SPTSharedExampleGroupsClass) { 31 | [[[klass alloc] init] sharedExampleGroups]; 32 | } 33 | } 34 | 35 | free(classes); 36 | } 37 | } 38 | } 39 | } 40 | 41 | + (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup { 42 | (exampleGroup == nil ? globalSharedExampleGroups : exampleGroup.sharedExamples)[name] = [block copy]; 43 | } 44 | 45 | + (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup { 46 | SPTDictionaryBlock sharedExampleGroup = nil; 47 | while (exampleGroup != nil) { 48 | if ((sharedExampleGroup = exampleGroup.sharedExamples[name])) { 49 | return sharedExampleGroup; 50 | } 51 | exampleGroup = exampleGroup.parent; 52 | } 53 | return globalSharedExampleGroups[name]; 54 | } 55 | 56 | - (void)sharedExampleGroups {} 57 | 58 | - (void)spt_handleException:(NSException *)exception { 59 | [SPTCurrentSpec spt_handleException:exception]; 60 | } 61 | 62 | - (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected { 63 | [SPTCurrentSpec recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected]; 64 | } 65 | 66 | - (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception { 67 | [SPTCurrentSpec _recordUnexpectedFailureWithDescription:description exception:exception]; 68 | } 69 | 70 | - (_XCTestCaseImplementation *)internalImplementation { 71 | return [SPTCurrentSpec internalImplementation]; 72 | } 73 | 74 | @end 75 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/KIF/Additions/CALayer-KIFAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // CALayer-KIFAdditions.m 3 | // Pods 4 | // 5 | // Created by Radu Ciobanu on 28/01/2016. 6 | // Licensed to Square, Inc. under one or more contributor license agreements. 7 | // See the LICENSE file distributed with this work for the terms under 8 | // which Square, Inc. licenses this file to you. 9 | // 10 | 11 | #import "CALayer-KIFAdditions.h" 12 | #import "CAAnimation+KIFAdditions.h" 13 | 14 | 15 | @implementation CALayer (KIFAdditions) 16 | 17 | - (float)KIF_absoluteSpeed 18 | { 19 | __block float speed = 1.0f; 20 | [self performBlockOnAncestorLayers:^(CALayer *layer) { 21 | speed = speed * layer.speed; 22 | }]; 23 | return speed; 24 | } 25 | 26 | - (BOOL)hasAnimations 27 | { 28 | __block BOOL result = NO; 29 | [self performBlockOnDescendentLayers:^(CALayer *layer, BOOL *stop) { 30 | // explicitly exclude _UIParallaxMotionEffect as it is used in alertviews, and we don't want every alertview to be paused) 31 | BOOL hasAnimation = layer.animationKeys.count != 0 && ![layer.animationKeys isEqualToArray:@[@"_UIParallaxMotionEffect"]]; 32 | if (hasAnimation && !layer.hidden) { 33 | double currentTime = CACurrentMediaTime() * [layer KIF_absoluteSpeed]; 34 | 35 | [layer.animationKeys enumerateObjectsUsingBlock:^(NSString *animationKey, NSUInteger idx, BOOL *innerStop) { 36 | CAAnimation *animation = [layer animationForKey:animationKey]; 37 | double beginTime = [animation beginTime]; 38 | double completionTime = [animation KIF_completionTime]; 39 | 40 | // Ignore infinitely repeating animations 41 | if (currentTime >= beginTime && completionTime != HUGE_VALF && currentTime < completionTime) { 42 | result = YES; 43 | *innerStop = YES; 44 | *stop = YES; 45 | } 46 | }]; 47 | } 48 | }]; 49 | return result; 50 | } 51 | 52 | - (void)performBlockOnDescendentLayers:(void (^)(CALayer *layer, BOOL *stop))block 53 | { 54 | BOOL stop = NO; 55 | [self performBlockOnDescendentLayers:block stop:&stop]; 56 | } 57 | 58 | - (void)performBlockOnDescendentLayers:(void (^)(CALayer *, BOOL *))block stop:(BOOL *)stop 59 | { 60 | block(self, stop); 61 | if (*stop) { 62 | return; 63 | } 64 | 65 | for (CALayer *layer in self.sublayers) { 66 | [layer performBlockOnDescendentLayers:block stop:stop]; 67 | if (*stop) { 68 | return; 69 | } 70 | } 71 | } 72 | 73 | - (void)performBlockOnAncestorLayers:(void (^)(CALayer *))block; 74 | { 75 | block(self); 76 | 77 | if (self.superlayer != nil) { 78 | [self.superlayer performBlockOnAncestorLayers:block]; 79 | } 80 | } 81 | 82 | @end 83 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+endWith.h" 2 | 3 | EXPMatcherImplementationBegin(endWith, (id expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same 7 | BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) 8 | || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) 9 | || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); 10 | 11 | prerequisite(^BOOL { 12 | return actualAndExpectedAreCompatible; 13 | }); 14 | 15 | match(^BOOL { 16 | if ([actual isKindOfClass:[NSString class]]) { 17 | return [actual hasSuffix:expected]; 18 | } else if ([actual isKindOfClass:[NSArray class]]) { 19 | if ([expected count] > [actual count] || [expected count] == 0) { 20 | return NO; 21 | } 22 | NSArray *subArray = [actual subarrayWithRange:NSMakeRange([actual count] - [expected count], [expected count])]; 23 | return [subArray isEqualToArray:expected]; 24 | } else { 25 | if ([expected count] > [actual count] || [expected count] == 0) { 26 | return NO; 27 | } 28 | 29 | NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange([actual count] - [expected count], [expected count]) copyItems:NO]; 30 | return [subset isEqualToOrderedSet:expected]; 31 | } 32 | }); 33 | 34 | failureMessageForTo(^NSString *{ 35 | if (actualIsNil) return @"the object is nil/null"; 36 | if (expectedIsNil) return @"the expected value is nil/null"; 37 | if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; 38 | return [NSString stringWithFormat:@"expected: %@ to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 39 | }); 40 | 41 | failureMessageForNotTo(^NSString *{ 42 | if (actualIsNil) return @"the object is nil/null"; 43 | if (expectedIsNil) return @"the expected value is nil/null"; 44 | if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; 45 | 46 | return [NSString stringWithFormat:@"expected: %@ not to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 47 | }); 48 | } 49 | EXPMatcherImplementationEnd 50 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/GTScrollNavigationBarExample/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // GTScrollNavigationBarExample 4 | // 5 | // Created by Luu Gia Thuy on 21/12/13. 6 | // Copyright (c) 2013 Luu Gia Thuy. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "DemoTableViewController.h" 11 | #import "GTScrollNavigationBar.h" 12 | 13 | @implementation AppDelegate 14 | 15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 16 | { 17 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 18 | // Override point for customization after application launch. 19 | self.window.backgroundColor = [UIColor whiteColor]; 20 | self.viewController = [[DemoTableViewController alloc] initWithStyle:UITableViewStylePlain]; 21 | self.navController = [[UINavigationController alloc] initWithNavigationBarClass:[GTScrollNavigationBar class] toolbarClass:nil]; 22 | [self.navController setViewControllers:@[self.viewController] animated:NO]; 23 | self.window.rootViewController = self.navController; 24 | [self.window makeKeyAndVisible]; 25 | return YES; 26 | } 27 | 28 | - (void)applicationWillResignActive:(UIApplication *)application 29 | { 30 | // 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. 31 | // 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. 32 | } 33 | 34 | - (void)applicationDidEnterBackground:(UIApplication *)application 35 | { 36 | // 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. 37 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 38 | } 39 | 40 | - (void)applicationWillEnterForeground:(UIApplication *)application 41 | { 42 | // 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. 43 | } 44 | 45 | - (void)applicationDidBecomeActive:(UIApplication *)application 46 | { 47 | // 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. 48 | } 49 | 50 | - (void)applicationWillTerminate:(UIApplication *)application 51 | { 52 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Target Support Files/Pods-GTScrollNavigationBarExample/Pods-GTScrollNavigationBarExample-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2013, Luu Gia Thuy 18 | All rights reserved. 19 | 20 | Redistribution and use in source and binary forms, with or without modification, 21 | are permitted provided that the following conditions are met: 22 | 23 | * Redistributions of source code must retain the above copyright notice, this 24 | list of conditions and the following disclaimer. 25 | 26 | * Redistributions in binary form must reproduce the above copyright notice, this 27 | list of conditions and the following disclaimer in the documentation and/or 28 | other materials provided with the distribution. 29 | 30 | * Neither the name of the {organization} nor the names of its 31 | contributors may be used to endorse or promote products derived from 32 | this software without specific prior written permission. 33 | 34 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 35 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 36 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 37 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 38 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 39 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 40 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 41 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 42 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 43 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 44 | 45 | License 46 | BSD 47 | Title 48 | GTScrollNavigationBar 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | FooterText 54 | Generated by CocoaPods - https://cocoapods.org 55 | Title 56 | 57 | Type 58 | PSGroupSpecifier 59 | 60 | 61 | StringsTable 62 | Acknowledgements 63 | Title 64 | Acknowledgements 65 | 66 | 67 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beginWith.h" 2 | 3 | EXPMatcherImplementationBegin(beginWith, (id expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same 7 | BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) 8 | || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) 9 | || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); 10 | 11 | prerequisite(^BOOL { 12 | return actualAndExpectedAreCompatible; 13 | }); 14 | 15 | match(^BOOL { 16 | if ([actual isKindOfClass:[NSString class]]) { 17 | return [actual hasPrefix:expected]; 18 | } else if ([actual isKindOfClass:[NSArray class]]) { 19 | if ([expected count] > [actual count] || [expected count] == 0) { 20 | return NO; 21 | } 22 | NSArray *subArray = [actual subarrayWithRange:NSMakeRange(0, [expected count])]; 23 | return [subArray isEqualToArray:expected]; 24 | } else { 25 | if ([expected count] > [actual count] || [expected count] == 0) { 26 | return NO; 27 | } 28 | 29 | NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange(0, [expected count]) copyItems:NO]; 30 | return [subset isEqualToOrderedSet:expected]; 31 | } 32 | }); 33 | 34 | failureMessageForTo(^NSString *{ 35 | if (actualIsNil) return @"the object is nil/null"; 36 | if (expectedIsNil) return @"the expected value is nil/null"; 37 | if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; 38 | return [NSString stringWithFormat:@"expected: %@ to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 39 | }); 40 | 41 | failureMessageForNotTo(^NSString *{ 42 | if (actualIsNil) return @"the object is nil/null"; 43 | if (expectedIsNil) return @"the expected value is nil/null"; 44 | if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; 45 | 46 | return [NSString stringWithFormat:@"expected: %@ not to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 47 | }); 48 | } 49 | EXPMatcherImplementationEnd 50 | 51 | EXPMatcherAliasImplementation(startWith, beginWith, (id expected)); 52 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+contain.h" 2 | 3 | EXPMatcherImplementationBegin(beSupersetOf, (id subset)) { 4 | BOOL actualIsCompatible = [actual isKindOfClass:[NSDictionary class]] || [actual respondsToSelector:@selector(containsObject:)]; 5 | BOOL subsetIsNil = (subset == nil); 6 | 7 | // For some instances the isKindOfClass: method returns false, even though 8 | // they are both actually dictionaries. e.g. Comparing a NSCFDictionary and a 9 | // NSDictionary. 10 | // Or in cases when you compare NSMutableArray (which implementation is __NSArrayM:NSMutableArray:NSArray) 11 | // and NSArray (which implementation is __NSArrayI:NSArray) 12 | BOOL bothAreIdenticalCollectionClasses = ([actual isKindOfClass:[NSDictionary class]] && [subset isKindOfClass:[NSDictionary class]]) || 13 | ([actual isKindOfClass:[NSArray class]] && [subset isKindOfClass:[NSArray class]]) || 14 | ([actual isKindOfClass:[NSSet class]] && [subset isKindOfClass:[NSSet class]]) || 15 | ([actual isKindOfClass:[NSOrderedSet class]] && [subset isKindOfClass:[NSOrderedSet class]]); 16 | 17 | BOOL classMatches = bothAreIdenticalCollectionClasses || [subset isKindOfClass:[actual class]]; 18 | 19 | prerequisite(^BOOL{ 20 | return actualIsCompatible && !subsetIsNil && classMatches; 21 | }); 22 | 23 | match(^BOOL{ 24 | if(!actualIsCompatible) return NO; 25 | 26 | if([actual isKindOfClass:[NSDictionary class]]) { 27 | for (id key in subset) { 28 | id actualValue = [actual valueForKey:key]; 29 | id subsetValue = [subset valueForKey:key]; 30 | 31 | if (![subsetValue isEqual:actualValue]) return NO; 32 | } 33 | } else { 34 | for (id object in subset) { 35 | if (![actual containsObject:object]) return NO; 36 | } 37 | } 38 | 39 | return YES; 40 | }); 41 | 42 | failureMessageForTo(^NSString *{ 43 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; 44 | 45 | if(subsetIsNil) return @"the expected value is nil/null"; 46 | 47 | if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; 48 | 49 | return [NSString stringWithFormat:@"expected %@ to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; 50 | }); 51 | 52 | failureMessageForNotTo(^NSString *{ 53 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; 54 | 55 | if(subsetIsNil) return @"the expected value is nil/null"; 56 | 57 | if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; 58 | 59 | return [NSString stringWithFormat:@"expected %@ not to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; 60 | }); 61 | } 62 | EXPMatcherImplementationEnd 63 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Expecta/Expecta/ExpectaSupport.h: -------------------------------------------------------------------------------- 1 | #import "EXPExpect.h" 2 | #import "EXPBlockDefinedMatcher.h" 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | id _EXPObjectify(const char *type, ...); 9 | EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock); 10 | 11 | void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message); 12 | NSString *EXPDescribeObject(id obj); 13 | 14 | void EXP_prerequisite(EXPBoolBlock block); 15 | void EXP_match(EXPBoolBlock block); 16 | void EXP_failureMessageForTo(EXPStringBlock block); 17 | void EXP_failureMessageForNotTo(EXPStringBlock block); 18 | 19 | #if __has_feature(objc_arc) 20 | #define _EXP_release(x) 21 | #define _EXP_autorelease(x) (x) 22 | 23 | #else 24 | #define _EXP_release(x) [x release] 25 | #define _EXP_autorelease(x) [x autorelease] 26 | #endif 27 | 28 | // workaround for the categories bug: http://developer.apple.com/library/mac/#qa/qa1490/_index.html 29 | #define EXPFixCategoriesBug(name) \ 30 | __attribute__((constructor)) static void EXPFixCategoriesBug##name() {} 31 | 32 | #define _EXPMatcherInterface(matcherName, matcherArguments) \ 33 | @interface EXPExpect (matcherName##Matcher) \ 34 | @property (nonatomic, readonly) void(^ matcherName) matcherArguments; \ 35 | @end 36 | 37 | #define _EXPMatcherImplementationBegin(matcherName, matcherArguments) \ 38 | EXPFixCategoriesBug(EXPMatcher##matcherName##Matcher); \ 39 | @implementation EXPExpect (matcherName##Matcher) \ 40 | @dynamic matcherName;\ 41 | - (void(^) matcherArguments) matcherName { \ 42 | EXPBlockDefinedMatcher *matcher = [[EXPBlockDefinedMatcher alloc] init]; \ 43 | [[[NSThread currentThread] threadDictionary] setObject:matcher forKey:@"EXP_currentMatcher"]; \ 44 | __block id actual = self.actual; \ 45 | __block void (^prerequisite)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_prerequisite(block); }; \ 46 | __block void (^match)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_match(block); }; \ 47 | __block void (^failureMessageForTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForTo(block); }; \ 48 | __block void (^failureMessageForNotTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForNotTo(block); }; \ 49 | prerequisite(nil); match(nil); failureMessageForTo(nil); failureMessageForNotTo(nil); \ 50 | void (^matcherBlock) matcherArguments = [^ matcherArguments { \ 51 | { 52 | 53 | #define _EXPMatcherImplementationEnd \ 54 | } \ 55 | [self applyMatcher:matcher to:&actual]; \ 56 | [[[NSThread currentThread] threadDictionary] removeObjectForKey:@"EXP_currentMatcher"]; \ 57 | } copy]; \ 58 | _EXP_release(matcher); \ 59 | return _EXP_autorelease(matcherBlock); \ 60 | } \ 61 | @end 62 | 63 | #define _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) \ 64 | EXPFixCategoriesBug(EXPMatcher##newMatcherName##Matcher); \ 65 | @implementation EXPExpect (newMatcherName##Matcher) \ 66 | @dynamic newMatcherName;\ 67 | - (void(^) matcherArguments) newMatcherName { \ 68 | return [self oldMatcherName]; \ 69 | }\ 70 | @end 71 | 72 | #ifdef __cplusplus 73 | } 74 | #endif 75 | -------------------------------------------------------------------------------- /GTScrollNavigationBarExample/Pods/Specta/Specta/Specta/SpectaUtility.m: -------------------------------------------------------------------------------- 1 | #import "SpectaUtility.h" 2 | #import "SPTSpec.h" 3 | #import 4 | 5 | NSString * const spt_kCurrentTestSuiteKey = @"SPTCurrentTestSuite"; 6 | NSString * const spt_kCurrentSpecKey = @"SPTCurrentSpec"; 7 | 8 | static unsigned int seed = 0; 9 | 10 | BOOL spt_isSpecClass(Class aClass) { 11 | Class superclass = class_getSuperclass(aClass); 12 | while (superclass != Nil) { 13 | if (superclass == [SPTSpec class]) { 14 | return YES; 15 | } else { 16 | superclass = class_getSuperclass(superclass); 17 | } 18 | } 19 | return NO; 20 | } 21 | 22 | NSString *spt_underscorize(NSString *string) { 23 | static NSMutableCharacterSet *invalidCharSet; 24 | static dispatch_once_t onceToken; 25 | dispatch_once(&onceToken, ^{ 26 | invalidCharSet = [[NSMutableCharacterSet alloc] init]; 27 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet controlCharacterSet]]; 28 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet illegalCharacterSet]]; 29 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet newlineCharacterSet]]; 30 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet nonBaseCharacterSet]]; 31 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; 32 | [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]]; 33 | }); 34 | NSString *stripped = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 35 | stripped = [[stripped componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""]; 36 | 37 | NSArray *components = [stripped componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 38 | stripped = [[components objectsAtIndexes:[components indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 39 | return ![obj isEqualToString:@""]; 40 | }]] componentsJoinedByString:@"_"]; 41 | return stripped; 42 | } 43 | 44 | NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)) { 45 | NSMutableArray *mapped = [NSMutableArray arrayWithCapacity:[array count]]; 46 | [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 47 | [mapped addObject:block(obj, idx)]; 48 | }]; 49 | return mapped; 50 | } 51 | 52 | NSArray *spt_shuffle(NSArray *array) { 53 | if (![[[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SHUFFLE"] isEqualToString:@"1"]) { 54 | return array; 55 | } 56 | spt_seed(); 57 | NSMutableArray *shuffled = [array mutableCopy]; 58 | NSUInteger count = [shuffled count]; 59 | for (NSUInteger i = 0; i < count; i++) { 60 | NSUInteger r = random() % count; 61 | [shuffled exchangeObjectAtIndex:i withObjectAtIndex:r]; 62 | } 63 | return shuffled; 64 | } 65 | 66 | unsigned int spt_seed() { 67 | static dispatch_once_t onceToken; 68 | dispatch_once(&onceToken, ^{ 69 | NSString *envSeed = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SEED"]; 70 | if (envSeed) { 71 | sscanf([envSeed UTF8String], "%u", &seed); 72 | } else { 73 | seed = arc4random(); 74 | } 75 | srandom(seed); 76 | printf("Test Seed: %u\n", seed); 77 | }); 78 | return seed; 79 | } 80 | --------------------------------------------------------------------------------