├── GCXSteppedSlider └── Classes │ ├── .gitkeep │ ├── GCXSteppedSlider.h │ └── GCXSteppedSlider.m ├── _Pods.xcodeproj ├── Example ├── GCXSteppedSlider │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── example.imageset │ │ │ ├── example.png │ │ │ ├── example@2x.png │ │ │ ├── example@3x.png │ │ │ └── Contents.json │ │ ├── LaunchImage.launchimage │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── GCXViewController.h │ ├── GCXAppDelegate.h │ ├── GCXSteppedSlider-Prefix.pch │ ├── main.m │ ├── GCXSteppedSlider-Info.plist │ ├── Main.storyboard │ ├── GCXAppDelegate.m │ └── GCXViewController.m ├── Pods │ ├── Headers │ │ └── Private │ │ │ └── GCXSteppedSlider │ │ │ └── GCXSteppedSlider.h │ ├── Target Support Files │ │ ├── GCXSteppedSlider │ │ │ ├── GCXSteppedSlider-prefix.pch │ │ │ ├── GCXSteppedSlider.modulemap │ │ │ ├── GCXSteppedSlider-dummy.m │ │ │ ├── GCXSteppedSlider-umbrella.h │ │ │ ├── GCXSteppedSlider.xcconfig │ │ │ └── Info.plist │ │ └── Pods-GCXSteppedSlider_Example │ │ │ ├── Pods-GCXSteppedSlider_Example.modulemap │ │ │ ├── Pods-GCXSteppedSlider_Example-dummy.m │ │ │ ├── Pods-GCXSteppedSlider_Example-umbrella.h │ │ │ ├── Pods-GCXSteppedSlider_Example.debug.xcconfig │ │ │ ├── Pods-GCXSteppedSlider_Example.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-GCXSteppedSlider_Example-acknowledgements.markdown │ │ │ ├── Pods-GCXSteppedSlider_Example-acknowledgements.plist │ │ │ ├── Pods-GCXSteppedSlider_Example-frameworks.sh │ │ │ └── Pods-GCXSteppedSlider_Example-resources.sh │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── GCXSteppedSlider.podspec.json │ └── Pods.xcodeproj │ │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── GCXSteppedSlider.xcscheme │ │ └── project.pbxproj ├── Podfile ├── GCXSteppedSlider.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── GCXSteppedSlider-Example.xcscheme │ └── project.pbxproj ├── GCXSteppedSlider.xcworkspace │ └── contents.xcworkspacedata └── Podfile.lock ├── .gitignore ├── GCXSteppedSlider.podspec ├── LICENSE └── README.md /GCXSteppedSlider/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/GCXSteppedSlider/GCXSteppedSlider.h: -------------------------------------------------------------------------------- 1 | ../../../../../GCXSteppedSlider/Classes/GCXSteppedSlider.h -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'GCXSteppedSlider_Example' do 4 | pod 'GCXSteppedSlider', :path => '../' 5 | end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/GCXSteppedSlider-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Images.xcassets/example.imageset/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grandcentrix/GCXSteppedSlider/HEAD/Example/GCXSteppedSlider/Images.xcassets/example.imageset/example.png -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Images.xcassets/example.imageset/example@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grandcentrix/GCXSteppedSlider/HEAD/Example/GCXSteppedSlider/Images.xcassets/example.imageset/example@2x.png -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Images.xcassets/example.imageset/example@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grandcentrix/GCXSteppedSlider/HEAD/Example/GCXSteppedSlider/Images.xcassets/example.imageset/example@3x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/GCXSteppedSlider.modulemap: -------------------------------------------------------------------------------- 1 | framework module GCXSteppedSlider { 2 | umbrella header "GCXSteppedSlider-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/GCXSteppedSlider-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_GCXSteppedSlider : NSObject 3 | @end 4 | @implementation PodsDummy_GCXSteppedSlider 5 | @end 6 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_GCXSteppedSlider_Example { 2 | umbrella header "Pods-GCXSteppedSlider_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_GCXSteppedSlider_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_GCXSteppedSlider_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/GCXSteppedSlider-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "GCXSteppedSlider.h" 4 | 5 | FOUNDATION_EXPORT double GCXSteppedSliderVersionNumber; 6 | FOUNDATION_EXPORT const unsigned char GCXSteppedSliderVersionString[]; 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_GCXSteppedSlider_ExampleVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_GCXSteppedSlider_ExampleVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/GCXSteppedSlider.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GCXSteppedSlider" "${PODS_ROOT}/Headers/Public" 3 | PODS_ROOT = ${SRCROOT} 4 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // GCXViewController.h 3 | // GCXSteppedSlider 4 | // 5 | // Created by Timo Josten on 06/03/2016. 6 | // Copyright (c) 2016 Timo Josten. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface GCXViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // GCXAppDelegate.h 3 | // GCXSteppedSlider 4 | // 5 | // Created by Timo Josten on 06/03/2016. 6 | // Copyright (c) 2016 Timo Josten. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface GCXAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - GCXSteppedSlider (0.1.0): 3 | - Masonry 4 | - Masonry (1.0.1) 5 | 6 | DEPENDENCIES: 7 | - GCXSteppedSlider (from `../`) 8 | 9 | EXTERNAL SOURCES: 10 | GCXSteppedSlider: 11 | :path: ../ 12 | 13 | SPEC CHECKSUMS: 14 | GCXSteppedSlider: 953c8d9814dbf541a414f1dedf06e1cbd5ffb5eb 15 | Masonry: a1a931a0d08870ed8ae415a2ea5ea68ebcac77df 16 | 17 | COCOAPODS: 0.39.0 18 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - GCXSteppedSlider (0.1.0): 3 | - Masonry 4 | - Masonry (1.0.1) 5 | 6 | DEPENDENCIES: 7 | - GCXSteppedSlider (from `../`) 8 | 9 | EXTERNAL SOURCES: 10 | GCXSteppedSlider: 11 | :path: ../ 12 | 13 | SPEC CHECKSUMS: 14 | GCXSteppedSlider: 953c8d9814dbf541a414f1dedf06e1cbd5ffb5eb 15 | Masonry: a1a931a0d08870ed8ae415a2ea5ea68ebcac77df 16 | 17 | COCOAPODS: 0.39.0 18 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXSteppedSlider-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_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GCXSteppedSlider 4 | // 5 | // Created by Timo Josten on 06/03/2016. 6 | // Copyright (c) 2016 Timo Josten. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "GCXAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([GCXAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Images.xcassets/example.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "example.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "example@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "example@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/GCXSteppedSlider.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/Masonry.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "GCXSteppedSlider" -framework "Masonry" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-GCXSteppedSlider_Example 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/GCXSteppedSlider.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/Masonry.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "GCXSteppedSlider" -framework "Masonry" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-GCXSteppedSlider_Example 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Example/Pods 2 | 3 | # OS X 4 | .DS_Store 5 | 6 | # Xcode 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata/ 17 | *.xccheckout 18 | profile 19 | *.moved-aside 20 | DerivedData 21 | *.hmap 22 | *.ipa 23 | 24 | # Bundler 25 | .bundle 26 | 27 | Carthage 28 | # We recommend against adding the Pods directory to your .gitignore. However 29 | # you should judge for yourself, the pros and cons are mentioned at: 30 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 31 | # 32 | # Note: if you ignore the Pods directory, make sure to uncomment 33 | # `pod install` in .travis.yml 34 | # 35 | # Pods/ 36 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/GCXSteppedSlider.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GCXSteppedSlider", 3 | "version": "0.1.0", 4 | "summary": "A custom UISlider implementation with tappable intermediate steps.", 5 | "description": "A custom UISlider implementation with tappable intermediate steps.", 6 | "homepage": "https://github.com/grandcentrix/GCXSteppedSlider.git", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Timo Josten": "timo.josten@grandcentrix.net" 13 | }, 14 | "source": { 15 | "git": "https://github.com/grandcentrix/GCXSteppedSlider.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "source_files": "GCXSteppedSlider/Classes/**/*", 22 | "dependencies": { 23 | "Masonry": [ 24 | 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /GCXSteppedSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'GCXSteppedSlider' 3 | s.version = '0.3.0' 4 | s.summary = 'A custom UISlider implementation with tappable intermediate steps.' 5 | 6 | s.description = <<-DESC 7 | A custom UISlider implementation with tappable intermediate steps. 8 | DESC 9 | 10 | s.homepage = 'https://github.com/grandcentrix/GCXSteppedSlider.git' 11 | s.license = { :type => 'MIT', :file => 'LICENSE' } 12 | s.author = { 'Timo Josten' => 'timo.josten@grandcentrix.net' } 13 | s.source = { :git => 'https://github.com/grandcentrix/GCXSteppedSlider.git', :tag => s.version.to_s } 14 | 15 | s.ios.deployment_target = '8.0' 16 | 17 | s.source_files = 'GCXSteppedSlider/Classes/**/*' 18 | 19 | s.dependency 'Masonry' 20 | end 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GCXSteppedSlider/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 grandcentrix GmbH, Timo Josten 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 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/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 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/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 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "83.5x83.5", 66 | "scale" : "2x" 67 | } 68 | ], 69 | "info" : { 70 | "version" : 1, 71 | "author" : "xcode" 72 | } 73 | } -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXSteppedSlider-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 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // GCXAppDelegate.m 3 | // GCXSteppedSlider 4 | // 5 | // Created by Timo Josten on 06/03/2016. 6 | // Copyright (c) 2016 Timo Josten. All rights reserved. 7 | // 8 | 9 | #import "GCXAppDelegate.h" 10 | 11 | @implementation GCXAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | return YES; 17 | } 18 | 19 | - (void)applicationWillResignActive:(UIApplication *)application 20 | { 21 | // 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. 22 | // 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. 23 | } 24 | 25 | - (void)applicationDidEnterBackground:(UIApplication *)application 26 | { 27 | // 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. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | - (void)applicationWillEnterForeground:(UIApplication *)application 32 | { 33 | // 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. 34 | } 35 | 36 | - (void)applicationDidBecomeActive:(UIApplication *)application 37 | { 38 | // 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. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application 42 | { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GCXSteppedSlider 2 | A custom UISlider implementation with tappable intermediate steps. 3 | 4 | ![Demo](https://dropshare-gcx-de.s3-eu-central-1.amazonaws.com/Screen-Recording-2016-06-03-11-32-59-lQ6zu/Screen-Recording-2016-06-03-11-32-59.gif) 5 | 6 | ## Installation 7 | 8 | ### From CocoaPods 9 | 10 | ```ruby 11 | pod 'GCXSteppedSlider' 12 | ``` 13 | 14 | ## Usage 15 | 16 | (Find sample project with integration in `/Example`) 17 | 18 | `GCXSteppedSlider` is a custom UISlider implementation with intermediate steps that is nicely configurable. 19 | 20 | ```objective-c 21 | - (void)viewDidLoad { 22 | [super viewDidLoad]; 23 | 24 | NSArray* stepValues = @[@"First", @"Second", @(3), @(4), @(5)]; 25 | self.stepValues = stepValues; 26 | UIImage* stepImage = [UIImage imageNamed:@"example"]; 27 | GCXSteppedSlider* slider = [[GCXSteppedSlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 25.0) stepValues:stepValues initialStep:stepValues[2]]; 28 | slider.disabledStepValues = @[@(3)]; 29 | slider.delegate = self; 30 | slider.tintColor = [UIColor redColor]; 31 | slider.signatureColor = [UIColor grayColor]; 32 | [self.view addSubview:slider]; 33 | } 34 | 35 | # pragma mark 36 | 37 | - (UIImage*)steppedSlider:(GCXSteppedSlider *)slider stepImageForValue:(id)stepValue { 38 | return [UIImage imageNamed:@"example"]; 39 | } 40 | 41 | - (void)steppedSlider:(GCXSteppedSlider *)slider valueChanged:(id)selectedValue { 42 | NSLog(@"slider value: %@", selectedValue); 43 | } 44 | 45 | - (CGSize)steppedSlider:(GCXSteppedSlider *)slider sizeForStepImageOfValue:(id)stepValue { 46 | if ([slider.disabledStepValues indexOfObject:stepValue] != NSNotFound) { 47 | return CGSizeMake(5.0, 5.0); 48 | } else if ([stepValue isEqual:self.stepValues.firstObject]) { 49 | return CGSizeMake(25.0, 25.0); 50 | } else if ([stepValue isEqual:self.stepValues.lastObject]) { 51 | return CGSizeMake(25.0, 25.0); 52 | } 53 | return CGSizeMake(15.0, 15.0); 54 | } 55 | ``` 56 | 57 | ## Documentation 58 | 59 | * [GCXSteppedSlider.h](https://github.com/grandcentrix/GCXSteppedSlider/blob/master/GCXSteppedSlider/Classes/GCXSteppedSlider.h) 60 | 61 | ## Maintainer 62 | 63 | * [tjosten](https://github.com/tjosten/) 64 | 65 | Please file [Issues](https://github.com/grandcentrix/GCXSteppedSlider/issues/) and do not contact maintainers directly. Thank you! 66 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GCXSteppedSlider.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## GCXSteppedSlider 5 | 6 | Copyright (c) 2016 grandcentrix GmbH, Timo Josten 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | 27 | ## Masonry 28 | 29 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in 39 | all copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 47 | THE SOFTWARE. 48 | Generated by CocoaPods - http://cocoapods.org 49 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-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) 2016 grandcentrix GmbH, Timo Josten <timo.josten@grandcentrix.net> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | Title 38 | GCXSteppedSlider 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 45 | 46 | Permission is hereby granted, free of charge, to any person obtaining a copy 47 | of this software and associated documentation files (the "Software"), to deal 48 | in the Software without restriction, including without limitation the rights 49 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 50 | copies of the Software, and to permit persons to whom the Software is 51 | furnished to do so, subject to the following conditions: 52 | 53 | The above copyright notice and this permission notice shall be included in 54 | all copies or substantial portions of the Software. 55 | 56 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 57 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 58 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 59 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 60 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 61 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 62 | THE SOFTWARE. 63 | Title 64 | Masonry 65 | Type 66 | PSGroupSpecifier 67 | 68 | 69 | FooterText 70 | Generated by CocoaPods - http://cocoapods.org 71 | Title 72 | 73 | Type 74 | PSGroupSpecifier 75 | 76 | 77 | StringsTable 78 | Acknowledgements 79 | Title 80 | Acknowledgements 81 | 82 | 83 | -------------------------------------------------------------------------------- /GCXSteppedSlider/Classes/GCXSteppedSlider.h: -------------------------------------------------------------------------------- 1 | // 2 | // GCXSteppedSlider.h 3 | // 4 | // Created by Timo Josten on 02/06/16. 5 | // Copyright © 2016 grandcentrix. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class GCXSteppedSlider; 11 | 12 | @protocol GCXSteppedSliderDelegate 13 | 14 | @optional 15 | /** 16 | * Should be implemeneted by the delegate if it wants to be notified about value changes of the slider 17 | * 18 | * @param (GCXSteppedSlider*) slider instance 19 | * @param (id) selected value 20 | */ 21 | - (void)steppedSlider:(GCXSteppedSlider* __nonnull)slider valueChanged:(id __nullable)selectedValue; 22 | 23 | @optional 24 | /** 25 | * Should be implemeneted by the delegate if it wants to display labels below the stepImages of the slider 26 | * 27 | * @return (NSString*) text for label below the stepImage at stepValue 28 | * @param (GCXSteppedSlider*) slider instance 29 | * @param (id) stepValue which label text needs to be returned 30 | */ 31 | - (NSString* __nullable)steppedSlider:(GCXSteppedSlider* __nonnull)slider labelStringForValue:(id __nullable)stepValue; 32 | 33 | @optional 34 | /** 35 | * Should be implemeneted by the delegate if it wants to modify the value's label, e.g. for UIFont or UIColor changes 36 | * 37 | * @return (void) font to use for the value's label 38 | * @param (GCXSteppedSlider*) slider instance 39 | * @param (id) stepValue which label will be passed 40 | * @param (UILabel**) reference to label 41 | */ 42 | - (void)steppedSlider:(GCXSteppedSlider* __nonnull)slider label:(UILabel**)label forValue:(id __nullable)stepValue; 43 | 44 | @required 45 | /** 46 | * Must be implemeneted by the delegate and return the UIImage for the stepImage of the given stepValue 47 | * 48 | * @return (UIImage*) designated UIImage for the given stepValue 49 | * @param (GCXSteppedSlider*) slider instance 50 | * @param (id) stepValue which stepImage needs to be returned 51 | */ 52 | - (UIImage* __nullable)steppedSlider:(GCXSteppedSlider* __nonnull)slider stepImageForValue:(id __nullable)stepValue; 53 | 54 | @optional 55 | /** 56 | * Should be implemeneted by the delegate if it wants to control the stepImages size at the given stepValue 57 | * 58 | * @return (CGSize) designated size of stepImage at stepValue 59 | * @param (GCXSteppedSlider*) slider instance 60 | * @param (id) stepValue which stepImage's frame can be returned 61 | */ 62 | - (CGSize)steppedSlider:(GCXSteppedSlider* __nonnull)slider sizeForStepImageOfValue:(id __nullable)stepValue; 63 | 64 | @end 65 | 66 | @interface GCXSteppedSlider : UISlider 67 | 68 | /** 69 | * Signature color (track, step images) of the slider 70 | */ 71 | @property (nonatomic, strong, nullable) UIColor* signatureColor; 72 | 73 | /** 74 | * See 75 | */ 76 | @property (nonatomic, weak, nullable) id delegate; 77 | 78 | /** 79 | * Array of available, selectable values with this slider. May contain any objects. 80 | */ 81 | @property (nonatomic, strong, readonly, nonnull) NSArray* stepValues; 82 | 83 | /** 84 | * Array of disabled, non-selectable values with this slider. May contain any objects that exist in stepValues. 85 | */ 86 | @property (nonatomic, strong, nonnull) NSArray* disabledStepValues; 87 | 88 | /** 89 | * Designated initializer 90 | * 91 | * @param CGRect initial frame of slider 92 | * @param NSArray Array of available, selectable values with this slider. May contain any objects. 93 | * @param id initially selected value, must exist in stepValues 94 | */ 95 | - (instancetype __nonnull)initWithFrame:(CGRect)frame stepValues:(NSArray* __nonnull)stepValues initialStep:(id __nullable)initialStep; 96 | 97 | /** 98 | * Unavailable initializer 99 | */ 100 | - (instancetype __nonnull)initWithFrame:(CGRect)frame NS_UNAVAILABLE; 101 | 102 | /** 103 | * Unavailable initializer 104 | */ 105 | - (instancetype __nonnull)init NS_UNAVAILABLE; 106 | 107 | @end 108 | 109 | @interface GCXSteppedSliderImageView : UIImageView 110 | @end 111 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | 86 | if [[ "$CONFIGURATION" == "Debug" ]]; then 87 | install_framework "Pods-GCXSteppedSlider_Example/GCXSteppedSlider.framework" 88 | install_framework "Pods-GCXSteppedSlider_Example/Masonry.framework" 89 | fi 90 | if [[ "$CONFIGURATION" == "Release" ]]; then 91 | install_framework "Pods-GCXSteppedSlider_Example/GCXSteppedSlider.framework" 92 | install_framework "Pods-GCXSteppedSlider_Example/Masonry.framework" 93 | fi 94 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider/GCXViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // GCXViewController.m 3 | // GCXSteppedSlider 4 | // 5 | // Created by Timo Josten on 06/03/2016. 6 | // Copyright (c) 2016 Timo Josten. All rights reserved. 7 | // 8 | 9 | #import "GCXViewController.h" 10 | #import 11 | #import 12 | 13 | @interface GCXViewController () 14 | 15 | @property (nonatomic, weak, nullable) GCXSteppedSlider* slider; 16 | @property (nonatomic, strong, nullable) NSArray* values; 17 | 18 | @end 19 | 20 | @implementation GCXViewController 21 | 22 | - (void)viewDidLoad 23 | { 24 | [super viewDidLoad]; 25 | 26 | self.values = @[@"First", @"Second", @(3)]; 27 | 28 | GCXSteppedSlider* slider = [[GCXSteppedSlider alloc] initWithFrame:CGRectZero stepValues:self.values initialStep:self.values[1]]; 29 | //slider.disabledStepValues = @[self.values[2]]; 30 | slider.delegate = self; 31 | slider.tintColor = [UIColor redColor]; 32 | slider.signatureColor = [UIColor grayColor]; 33 | [self.view addSubview:slider]; 34 | self.slider = slider; 35 | 36 | { 37 | UIButton* button = [[UIButton alloc] initWithFrame:CGRectZero]; 38 | [button setTitle:@"Select Value #3" forState:UIControlStateNormal]; 39 | [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 40 | [button addTarget:self action:@selector(demoAction3:) forControlEvents:UIControlEventTouchUpInside]; 41 | [button sizeToFit]; 42 | button.center = CGPointMake(self.view.center.x, self.view.center.y); 43 | [self.view addSubview:button]; 44 | } 45 | 46 | { 47 | UIButton* button = [[UIButton alloc] initWithFrame:CGRectZero]; 48 | [button setTitle:@"Select Value #4" forState:UIControlStateNormal]; 49 | [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 50 | [button addTarget:self action:@selector(demoAction4:) forControlEvents:UIControlEventTouchUpInside]; 51 | [button sizeToFit]; 52 | button.center = CGPointMake(self.view.center.x, self.view.center.y + 30.0); 53 | [self.view addSubview:button]; 54 | } 55 | } 56 | 57 | - (void)updateViewConstraints { 58 | [self.slider mas_updateConstraints:^(MASConstraintMaker *make) { 59 | make.left.equalTo(self.view.mas_left).offset(10); 60 | make.right.equalTo(self.view.mas_right).offset(-10); 61 | make.top.equalTo(self.view.mas_top).offset(25); 62 | make.height.equalTo(@(200)); 63 | }]; 64 | 65 | [super updateViewConstraints]; 66 | } 67 | 68 | # pragma mark Demo 69 | 70 | - (void)demoAction3:(id)sender { 71 | [self.slider setValue:2 animated:NO]; 72 | } 73 | 74 | - (void)demoAction4:(id)sender { 75 | [self.slider setValue:3 animated:NO]; 76 | } 77 | 78 | # pragma mark 79 | 80 | - (void)steppedSlider:(GCXSteppedSlider *)slider label:(UILabel *__autoreleasing *)label forValue:(id)stepValue { 81 | [*label setTextColor:[UIColor redColor]]; 82 | } 83 | 84 | - (NSString*)steppedSlider:(GCXSteppedSlider *)slider labelStringForValue:(id)stepValue { 85 | return [NSString stringWithFormat:@"No. %lu", [self.values indexOfObject:stepValue]]; 86 | } 87 | 88 | - (UIImage*)steppedSlider:(GCXSteppedSlider *)slider stepImageForValue:(id)stepValue { 89 | return [UIImage imageNamed:@"example"]; 90 | } 91 | 92 | - (void)steppedSlider:(GCXSteppedSlider *)slider valueChanged:(id)selectedValue { 93 | NSLog(@"slider value: %@", selectedValue); 94 | } 95 | 96 | - (CGSize)steppedSlider:(GCXSteppedSlider *)slider sizeForStepImageOfValue:(id)stepValue { 97 | if (slider.disabledStepValues && [slider.disabledStepValues indexOfObject:stepValue] != NSNotFound) { 98 | return CGSizeMake(10.0, 10.0); 99 | } else if ([stepValue isEqual:self.values.firstObject]) { 100 | return CGSizeMake(10.0, 10.0); 101 | } else if ([stepValue isEqual:self.values.lastObject]) { 102 | return CGSizeMake(25.0, 25.0); 103 | } 104 | return CGSizeMake(15.0, 15.0); 105 | } 106 | 107 | @end 108 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider.xcodeproj/xcshareddata/xcschemes/GCXSteppedSlider-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | realpath() { 12 | DIRECTORY="$(cd "${1%/*}" && pwd)" 13 | FILENAME="${1##*/}" 14 | echo "$DIRECTORY/$FILENAME" 15 | } 16 | 17 | install_resource() 18 | { 19 | case $1 in 20 | *.storyboard) 21 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 22 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 23 | ;; 24 | *.xib) 25 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 26 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 27 | ;; 28 | *.framework) 29 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 30 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 31 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 32 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 33 | ;; 34 | *.xcdatamodel) 35 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 36 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 37 | ;; 38 | *.xcdatamodeld) 39 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 40 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 41 | ;; 42 | *.xcmappingmodel) 43 | echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" 44 | xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" 45 | ;; 46 | *.xcassets) 47 | ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") 48 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 49 | ;; 50 | /*) 51 | echo "$1" 52 | echo "$1" >> "$RESOURCES_TO_COPY" 53 | ;; 54 | *) 55 | echo "${PODS_ROOT}/$1" 56 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 57 | ;; 58 | esac 59 | } 60 | 61 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 62 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 63 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 64 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 65 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 66 | fi 67 | rm -f "$RESOURCES_TO_COPY" 68 | 69 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 70 | then 71 | case "${TARGETED_DEVICE_FAMILY}" in 72 | 1,2) 73 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 74 | ;; 75 | 1) 76 | TARGET_DEVICE_ARGS="--target-device iphone" 77 | ;; 78 | 2) 79 | TARGET_DEVICE_ARGS="--target-device ipad" 80 | ;; 81 | *) 82 | TARGET_DEVICE_ARGS="--target-device mac" 83 | ;; 84 | esac 85 | 86 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 87 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 88 | while read line; do 89 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 90 | XCASSET_FILES+=("$line") 91 | fi 92 | done <<<"$OTHER_XCASSETS" 93 | 94 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 95 | fi 96 | -------------------------------------------------------------------------------- /GCXSteppedSlider/Classes/GCXSteppedSlider.m: -------------------------------------------------------------------------------- 1 | // 2 | // GCXSteppedSlider.m 3 | // 4 | // Created by Timo Josten on 02/06/16. 5 | // Copyright © 2016 grandcentrix. All rights reserved. 6 | // 7 | 8 | #import "GCXSteppedSlider.h" 9 | #import 10 | #import 11 | 12 | @implementation GCXSteppedSliderImageView 13 | @end 14 | 15 | static CGSize GCXSteppedSliderImageViewDefaultStepSize; 16 | static CGFloat const GCXSteppedSliderStepLabelDefaultTopMargin = 15.0; 17 | 18 | @interface GCXSteppedSlider () 19 | 20 | @property (nonatomic, strong, nullable) id currentValue; 21 | @property (nonatomic, strong, nonnull) NSArray* stepValues; 22 | @property (nonatomic, assign) NSUInteger previousIndex; 23 | @property (nonatomic, weak, nullable) UIView* trackView; 24 | @property (nonatomic, strong, nullable) NSArray* stepImageViews; 25 | @property (nonatomic, strong, nullable) NSArray* stepImageSpacerViews; 26 | @property (nonatomic, strong, nullable) NSMutableDictionary* stepLabelViews; 27 | 28 | @end 29 | 30 | @implementation GCXSteppedSlider 31 | 32 | + (void)initialize { 33 | GCXSteppedSliderImageViewDefaultStepSize = CGSizeMake(15.0, 15.0); 34 | } 35 | 36 | - (instancetype __nonnull)initWithFrame:(CGRect)frame stepValues:(NSArray* __nonnull)stepValues initialStep:(id __nullable)initialStep { 37 | if (self = [super initWithFrame:frame]) { 38 | if (!stepValues) { 39 | stepValues = @[]; 40 | } 41 | self.stepValues = stepValues; 42 | self.stepLabelViews = [NSMutableDictionary dictionary]; 43 | 44 | NSUInteger numberOfSteps = self.stepValues.count - 1; 45 | self.maximumValue = numberOfSteps; 46 | self.minimumValue = 0; 47 | self.maximumTrackTintColor = [UIColor clearColor]; 48 | self.minimumTrackTintColor = [UIColor clearColor]; 49 | [self setMinimumTrackImage:[UIImage alloc] forState:UIControlStateNormal]; 50 | [self setMaximumTrackImage:[UIImage alloc] forState:UIControlStateNormal]; 51 | self.thumbTintColor = self.tintColor; 52 | self.continuous = YES; 53 | 54 | NSUInteger initialIndex = [self.stepValues indexOfObject:initialStep]; 55 | if (initialIndex != NSNotFound) { 56 | [self setValue:initialIndex animated:NO]; 57 | self.previousIndex = initialIndex; 58 | } 59 | 60 | NSMutableArray* stepImageViews = [NSMutableArray array]; 61 | NSMutableArray* stepImageSpacerViews = [NSMutableArray array]; 62 | for (NSUInteger i = 0; i < stepValues.count; i++) { 63 | GCXSteppedSliderImageView* stepImageView = [[GCXSteppedSliderImageView alloc] initWithImage:nil]; 64 | stepImageView.contentMode = UIViewContentModeScaleAspectFit; 65 | stepImageView.clipsToBounds = YES; 66 | stepImageView.mas_key = [NSString stringWithFormat:@"StepImageView %lu", i]; 67 | 68 | UIView* containerView = [[UIView alloc] initWithFrame:CGRectZero]; 69 | containerView.userInteractionEnabled = NO; 70 | containerView.clipsToBounds = YES; 71 | containerView.mas_key = [NSString stringWithFormat:@"ContainerView for StepImageView %lu", i]; 72 | [containerView addSubview:stepImageView]; 73 | 74 | [self addSubview:containerView]; 75 | [stepImageViews addObject:stepImageView]; 76 | 77 | if (i < stepValues.count - 1) { 78 | UIView* spacerView = [[UIView alloc] initWithFrame:CGRectZero]; 79 | [self addSubview:spacerView]; 80 | [stepImageSpacerViews addObject:spacerView]; 81 | } 82 | } 83 | 84 | self.stepImageViews = [stepImageViews copy]; 85 | self.stepImageSpacerViews = [stepImageSpacerViews copy]; 86 | 87 | UIView* trackView = [[UIView alloc] initWithFrame:CGRectZero]; 88 | [self addSubview:trackView]; 89 | [self sendSubviewToBack:trackView]; 90 | self.trackView = trackView; 91 | self.trackView.mas_key = @"TrackView"; 92 | 93 | [self addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; 94 | 95 | UITapGestureRecognizer* tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(trackTapped:)]; 96 | tapGestureRecognizer.numberOfTapsRequired = 1; 97 | tapGestureRecognizer.numberOfTouchesRequired = 1; 98 | [self addGestureRecognizer:tapGestureRecognizer]; 99 | 100 | self.clipsToBounds = YES; 101 | } 102 | 103 | return self; 104 | } 105 | 106 | # pragma mark Setters 107 | 108 | - (void)setTintColor:(UIColor *)tintColor { 109 | [super setTintColor:tintColor]; 110 | [self setThumbImage:[self thumbImageForState:UIControlStateNormal] forState:UIControlStateNormal]; // iOS 8 workaround for setting the tumbTintColor 111 | self.thumbTintColor = tintColor; 112 | } 113 | 114 | - (void)setSignatureColor:(UIColor *)signatureColor { 115 | if (!signatureColor) { 116 | signatureColor = self.tintColor; 117 | } 118 | 119 | for (GCXSteppedSliderImageView* view in self.stepImageViews) { 120 | view.tintColor = signatureColor; 121 | } 122 | 123 | self.trackView.backgroundColor = signatureColor; 124 | 125 | _signatureColor = signatureColor; 126 | } 127 | 128 | # pragma mark Internals 129 | 130 | - (void)setValue:(float)value animated:(BOOL)animated { 131 | NSUInteger index = [self indexFromValue:value]; 132 | [self selectIndex:index]; 133 | } 134 | 135 | - (void)willMoveToSuperview:(UIView *)newSuperview { 136 | [super willMoveToSuperview:newSuperview]; 137 | 138 | for (id value in self.stepValues) { 139 | NSUInteger index = [self.stepValues indexOfObject:value]; 140 | if (index < self.stepImageViews.count) { 141 | GCXSteppedSliderImageView* stepImageView = [self.stepImageViews objectAtIndex:index]; 142 | 143 | if (stepImageView.image == nil) { 144 | UIImage* image = nil; 145 | if ([self.delegate respondsToSelector:@selector(steppedSlider:stepImageForValue:)]) { 146 | image = [self.delegate steppedSlider:self stepImageForValue:value]; 147 | if (image) { 148 | image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 149 | stepImageView.image = image; 150 | } 151 | } 152 | } 153 | 154 | [self bringSubviewToFront:stepImageView.superview]; 155 | } 156 | } 157 | 158 | // set up labels if neccessary 159 | if ([self.delegate respondsToSelector:@selector(steppedSlider:labelStringForValue:)]) { 160 | for (id value in self.stepValues) { 161 | NSUInteger index = [self.stepValues indexOfObject:value]; 162 | NSString* labelString = [self.delegate steppedSlider:self labelStringForValue:value]; 163 | 164 | if (labelString.length) { 165 | NSNumber* labelIndex = @(index); 166 | UILabel* label = self.stepLabelViews[labelIndex]; 167 | 168 | if (!label) { 169 | label = [[UILabel alloc] initWithFrame:CGRectZero]; 170 | self.stepLabelViews[labelIndex] = label; 171 | 172 | label.numberOfLines = 0; 173 | label.lineBreakMode = NSLineBreakByWordWrapping; 174 | label.textAlignment = NSTextAlignmentCenter; 175 | 176 | if ([self.delegate respondsToSelector:@selector(steppedSlider:label:forValue:)]) { 177 | [self.delegate steppedSlider:self label:&label forValue:value]; 178 | } 179 | } 180 | 181 | label.text = labelString; 182 | [self addSubview:label]; 183 | } 184 | } 185 | 186 | } 187 | 188 | for (UIView* view in self.subviews) { 189 | if ([view isMemberOfClass:[UIImageView class]]) { 190 | [self bringSubviewToFront:view]; // bring thumb view to front 191 | } 192 | } 193 | 194 | [self setNeedsUpdateConstraints]; 195 | } 196 | 197 | - (void)updateConstraints { 198 | CGRect trackRect = [self trackRectForBounds:self.bounds]; 199 | CGRect thumbRect = [self thumbRectForBounds:self.bounds trackRect:trackRect value:0]; 200 | CGSize thumbSize = thumbRect.size; 201 | 202 | UIView* firstSpacerView = self.stepImageSpacerViews.firstObject; 203 | GCXSteppedSliderImageView* firstStepImageView = self.stepImageViews.firstObject; 204 | GCXSteppedSliderImageView* lastStepImageView = self.stepImageViews.lastObject; 205 | [firstSpacerView mas_updateConstraints:^(MASConstraintMaker *make) { 206 | make.width.greaterThanOrEqualTo(@(1)); 207 | make.left.equalTo(firstStepImageView.superview.mas_right).with.priority(1000); 208 | }]; 209 | 210 | UIView* lastSpacerView = self.stepImageSpacerViews.lastObject; 211 | [lastSpacerView mas_updateConstraints:^(MASConstraintMaker *make) { 212 | make.right.equalTo(lastStepImageView.superview.mas_left).with.priority(1000); 213 | }]; 214 | 215 | for (UIView* spacerView in self.stepImageSpacerViews) { 216 | NSUInteger index = [self.stepImageSpacerViews indexOfObject:spacerView]; 217 | [spacerView mas_updateConstraints:^(MASConstraintMaker *make) { 218 | if (index > 0) { 219 | make.width.equalTo(firstSpacerView.mas_width); 220 | } 221 | make.top.equalTo(self.mas_top); 222 | make.height.equalTo(@(1)); 223 | }]; 224 | } 225 | 226 | for (GCXSteppedSliderImageView* stepImageView in self.stepImageViews) { 227 | NSUInteger index = [self.stepImageViews indexOfObject:stepImageView]; 228 | 229 | [stepImageView.superview mas_updateConstraints:^(MASConstraintMaker *make) { 230 | 231 | [stepImageView mas_updateConstraints:^(MASConstraintMaker *make) { 232 | CGSize size = CGSizeZero; 233 | if ([self.delegate respondsToSelector:@selector(steppedSlider:sizeForStepImageOfValue:)]) { 234 | size = [self.delegate steppedSlider:self sizeForStepImageOfValue:[self.stepValues objectAtIndex:index]]; 235 | } else { 236 | size = GCXSteppedSliderImageViewDefaultStepSize; 237 | } 238 | make.width.equalTo(@(size.width)); 239 | make.height.equalTo(@(size.height)); 240 | make.centerX.equalTo(stepImageView.superview.mas_centerX); 241 | make.centerY.equalTo(stepImageView.superview.mas_centerY); 242 | }]; 243 | 244 | if (index == 0) { 245 | make.left.equalTo(self.mas_left).offset(-2); 246 | } else if (index == self.stepImageViews.count - 1) { 247 | make.right.equalTo(self.mas_right).offset(2); 248 | } else { 249 | UIView* leftSpacerView = [self.stepImageSpacerViews objectAtIndex:index - 1]; 250 | UIView* rightSpacerView = [self.stepImageSpacerViews objectAtIndex:index]; 251 | make.left.lessThanOrEqualTo(leftSpacerView.mas_right).with.priority(999); 252 | make.right.lessThanOrEqualTo(rightSpacerView.mas_left).with.priority(999); 253 | } 254 | 255 | make.centerY.equalTo(self.mas_centerY); 256 | 257 | make.width.equalTo(@(thumbSize.width)); 258 | make.height.equalTo(@(thumbSize.height)); 259 | 260 | if ([self.delegate respondsToSelector:@selector(steppedSlider:labelStringForValue:)]) { 261 | NSNumber* labelIndex = @(index); 262 | UILabel* label = self.stepLabelViews[labelIndex]; 263 | 264 | [label mas_updateConstraints:^(MASConstraintMaker *make) { 265 | make.width.lessThanOrEqualTo(self.mas_width).dividedBy(self.stepValues.count); 266 | 267 | if (labelIndex.integerValue == 0) { 268 | make.left.equalTo(self.mas_left); 269 | } else if (labelIndex.integerValue == self.stepLabelViews.count - 1) { 270 | make.right.equalTo(self.mas_right); 271 | } else { 272 | make.centerX.equalTo(stepImageView.superview.mas_centerX); 273 | } 274 | make.top.equalTo(self.trackView.mas_bottom).offset(25); 275 | }]; 276 | } 277 | }]; 278 | } 279 | 280 | [self.trackView mas_updateConstraints:^(MASConstraintMaker *make) { 281 | make.height.equalTo(@(2.0)); 282 | make.left.equalTo(firstStepImageView.superview.mas_centerX).with.priorityLow(); 283 | make.right.equalTo(lastStepImageView.superview.mas_centerX).with.priorityLow(); 284 | make.centerY.equalTo(firstSpacerView.superview.mas_centerY); 285 | }]; 286 | 287 | [super updateConstraints]; 288 | } 289 | 290 | - (void)trackTapped:(UITapGestureRecognizer*)gestureRecognizer { 291 | CGPoint touchPoint = [gestureRecognizer locationInView:self]; 292 | CGFloat width = self.frame.size.width; 293 | CGFloat value = touchPoint.x / width; 294 | NSUInteger index = (NSUInteger)(self.stepValues.count * value); 295 | [self selectIndex:index]; 296 | } 297 | 298 | - (NSUInteger)indexFromValue:(CGFloat)value { 299 | return (NSUInteger)(value + 0.5); 300 | } 301 | 302 | - (void)valueChanged:(GCXSteppedSlider*)slider { 303 | NSUInteger index = [self indexFromValue:slider.value]; 304 | [self selectIndex:index]; 305 | } 306 | 307 | - (void)selectIndex:(NSUInteger)index { 308 | id value = nil; 309 | if (index < self.stepValues.count) { 310 | value = self.stepValues[index]; 311 | } else { 312 | return; 313 | } 314 | 315 | if ([value isEqual:self.currentValue]) { 316 | return; 317 | } 318 | 319 | self.currentValue = value; 320 | 321 | if (self.disabledStepValues.count == 0 || [self.disabledStepValues indexOfObject:value] == NSNotFound) { 322 | [super setValue:index animated:NO]; 323 | if (self.delegate && [self.delegate respondsToSelector:@selector(steppedSlider:valueChanged:)]) { 324 | [self.delegate steppedSlider:self valueChanged:value]; 325 | } 326 | self.previousIndex = index; 327 | } else { 328 | [super setValue:self.previousIndex animated:NO]; 329 | } 330 | } 331 | 332 | @end 333 | -------------------------------------------------------------------------------- /Example/GCXSteppedSlider.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 11 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 12 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 13 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; }; 14 | 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; 15 | 6003F59E195388D20070C39A /* GCXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* GCXAppDelegate.m */; }; 16 | 6003F5A7195388D20070C39A /* GCXViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* GCXViewController.m */; }; 17 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; }; 18 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 19 | E25975DA1FD32AA9794315B0 /* Pods_GCXSteppedSlider_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21A10FB214C678B222785BD9 /* Pods_GCXSteppedSlider_Example.framework */; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXFileReference section */ 23 | 21A10FB214C678B222785BD9 /* Pods_GCXSteppedSlider_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GCXSteppedSlider_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 24 | 2A73B764DD8E0660DA1A4E61 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 25 | 6003F58A195388D20070C39A /* GCXSteppedSlider_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GCXSteppedSlider_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 27 | 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28 | 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 29 | 6003F595195388D20070C39A /* GCXSteppedSlider-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GCXSteppedSlider-Info.plist"; sourceTree = ""; }; 30 | 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 31 | 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32 | 6003F59B195388D20070C39A /* GCXSteppedSlider-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GCXSteppedSlider-Prefix.pch"; sourceTree = ""; }; 33 | 6003F59C195388D20070C39A /* GCXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCXAppDelegate.h; sourceTree = ""; }; 34 | 6003F59D195388D20070C39A /* GCXAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GCXAppDelegate.m; sourceTree = ""; }; 35 | 6003F5A5195388D20070C39A /* GCXViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCXViewController.h; sourceTree = ""; }; 36 | 6003F5A6195388D20070C39A /* GCXViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GCXViewController.m; sourceTree = ""; }; 37 | 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 38 | 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 39 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; 40 | AA3A5B2F2B59612165272D2D /* GCXSteppedSlider.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GCXSteppedSlider.podspec; path = ../GCXSteppedSlider.podspec; sourceTree = ""; }; 41 | BBAEDC532365B3E474C629CB /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 42 | C375187B7F85077F4A9410AA /* Pods-GCXSteppedSlider_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GCXSteppedSlider_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.debug.xcconfig"; sourceTree = ""; }; 43 | EB42C1A004713F1BDFD58421 /* Pods-GCXSteppedSlider_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GCXSteppedSlider_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.release.xcconfig"; sourceTree = ""; }; 44 | /* End PBXFileReference section */ 45 | 46 | /* Begin PBXFrameworksBuildPhase section */ 47 | 6003F587195388D20070C39A /* Frameworks */ = { 48 | isa = PBXFrameworksBuildPhase; 49 | buildActionMask = 2147483647; 50 | files = ( 51 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 52 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, 53 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, 54 | E25975DA1FD32AA9794315B0 /* Pods_GCXSteppedSlider_Example.framework in Frameworks */, 55 | ); 56 | runOnlyForDeploymentPostprocessing = 0; 57 | }; 58 | /* End PBXFrameworksBuildPhase section */ 59 | 60 | /* Begin PBXGroup section */ 61 | 6003F581195388D10070C39A = { 62 | isa = PBXGroup; 63 | children = ( 64 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 65 | 6003F593195388D20070C39A /* Example for GCXSteppedSlider */, 66 | 6003F58C195388D20070C39A /* Frameworks */, 67 | 6003F58B195388D20070C39A /* Products */, 68 | 73AD26B6032A99AD15291DEB /* Pods */, 69 | ); 70 | sourceTree = ""; 71 | }; 72 | 6003F58B195388D20070C39A /* Products */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 6003F58A195388D20070C39A /* GCXSteppedSlider_Example.app */, 76 | ); 77 | name = Products; 78 | sourceTree = ""; 79 | }; 80 | 6003F58C195388D20070C39A /* Frameworks */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 6003F58D195388D20070C39A /* Foundation.framework */, 84 | 6003F58F195388D20070C39A /* CoreGraphics.framework */, 85 | 6003F591195388D20070C39A /* UIKit.framework */, 86 | 6003F5AF195388D20070C39A /* XCTest.framework */, 87 | 21A10FB214C678B222785BD9 /* Pods_GCXSteppedSlider_Example.framework */, 88 | ); 89 | name = Frameworks; 90 | sourceTree = ""; 91 | }; 92 | 6003F593195388D20070C39A /* Example for GCXSteppedSlider */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | 6003F59C195388D20070C39A /* GCXAppDelegate.h */, 96 | 6003F59D195388D20070C39A /* GCXAppDelegate.m */, 97 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */, 98 | 6003F5A5195388D20070C39A /* GCXViewController.h */, 99 | 6003F5A6195388D20070C39A /* GCXViewController.m */, 100 | 6003F5A8195388D20070C39A /* Images.xcassets */, 101 | 6003F594195388D20070C39A /* Supporting Files */, 102 | ); 103 | name = "Example for GCXSteppedSlider"; 104 | path = GCXSteppedSlider; 105 | sourceTree = ""; 106 | }; 107 | 6003F594195388D20070C39A /* Supporting Files */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 6003F595195388D20070C39A /* GCXSteppedSlider-Info.plist */, 111 | 6003F596195388D20070C39A /* InfoPlist.strings */, 112 | 6003F599195388D20070C39A /* main.m */, 113 | 6003F59B195388D20070C39A /* GCXSteppedSlider-Prefix.pch */, 114 | ); 115 | name = "Supporting Files"; 116 | sourceTree = ""; 117 | }; 118 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | AA3A5B2F2B59612165272D2D /* GCXSteppedSlider.podspec */, 122 | 2A73B764DD8E0660DA1A4E61 /* README.md */, 123 | BBAEDC532365B3E474C629CB /* LICENSE */, 124 | ); 125 | name = "Podspec Metadata"; 126 | sourceTree = ""; 127 | }; 128 | 73AD26B6032A99AD15291DEB /* Pods */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | C375187B7F85077F4A9410AA /* Pods-GCXSteppedSlider_Example.debug.xcconfig */, 132 | EB42C1A004713F1BDFD58421 /* Pods-GCXSteppedSlider_Example.release.xcconfig */, 133 | ); 134 | name = Pods; 135 | sourceTree = ""; 136 | }; 137 | /* End PBXGroup section */ 138 | 139 | /* Begin PBXNativeTarget section */ 140 | 6003F589195388D20070C39A /* GCXSteppedSlider_Example */ = { 141 | isa = PBXNativeTarget; 142 | buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "GCXSteppedSlider_Example" */; 143 | buildPhases = ( 144 | 0EC34F439C37C915B468CB1B /* Check Pods Manifest.lock */, 145 | 6003F586195388D20070C39A /* Sources */, 146 | 6003F587195388D20070C39A /* Frameworks */, 147 | 6003F588195388D20070C39A /* Resources */, 148 | 53DB441852A13D6C3D01D120 /* Embed Pods Frameworks */, 149 | CBD3177C9072E047DAA37278 /* Copy Pods Resources */, 150 | ); 151 | buildRules = ( 152 | ); 153 | dependencies = ( 154 | ); 155 | name = GCXSteppedSlider_Example; 156 | productName = GCXSteppedSlider; 157 | productReference = 6003F58A195388D20070C39A /* GCXSteppedSlider_Example.app */; 158 | productType = "com.apple.product-type.application"; 159 | }; 160 | /* End PBXNativeTarget section */ 161 | 162 | /* Begin PBXProject section */ 163 | 6003F582195388D10070C39A /* Project object */ = { 164 | isa = PBXProject; 165 | attributes = { 166 | CLASSPREFIX = GCX; 167 | LastUpgradeCheck = 0720; 168 | ORGANIZATIONNAME = "Timo Josten"; 169 | }; 170 | buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "GCXSteppedSlider" */; 171 | compatibilityVersion = "Xcode 3.2"; 172 | developmentRegion = English; 173 | hasScannedForEncodings = 0; 174 | knownRegions = ( 175 | en, 176 | Base, 177 | ); 178 | mainGroup = 6003F581195388D10070C39A; 179 | productRefGroup = 6003F58B195388D20070C39A /* Products */; 180 | projectDirPath = ""; 181 | projectRoot = ""; 182 | targets = ( 183 | 6003F589195388D20070C39A /* GCXSteppedSlider_Example */, 184 | ); 185 | }; 186 | /* End PBXProject section */ 187 | 188 | /* Begin PBXResourcesBuildPhase section */ 189 | 6003F588195388D20070C39A /* Resources */ = { 190 | isa = PBXResourcesBuildPhase; 191 | buildActionMask = 2147483647; 192 | files = ( 193 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, 194 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */, 195 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */, 196 | ); 197 | runOnlyForDeploymentPostprocessing = 0; 198 | }; 199 | /* End PBXResourcesBuildPhase section */ 200 | 201 | /* Begin PBXShellScriptBuildPhase section */ 202 | 0EC34F439C37C915B468CB1B /* Check Pods Manifest.lock */ = { 203 | isa = PBXShellScriptBuildPhase; 204 | buildActionMask = 2147483647; 205 | files = ( 206 | ); 207 | inputPaths = ( 208 | ); 209 | name = "Check Pods Manifest.lock"; 210 | outputPaths = ( 211 | ); 212 | runOnlyForDeploymentPostprocessing = 0; 213 | shellPath = /bin/sh; 214 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 215 | showEnvVarsInLog = 0; 216 | }; 217 | 53DB441852A13D6C3D01D120 /* Embed Pods Frameworks */ = { 218 | isa = PBXShellScriptBuildPhase; 219 | buildActionMask = 2147483647; 220 | files = ( 221 | ); 222 | inputPaths = ( 223 | ); 224 | name = "Embed Pods Frameworks"; 225 | outputPaths = ( 226 | ); 227 | runOnlyForDeploymentPostprocessing = 0; 228 | shellPath = /bin/sh; 229 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-frameworks.sh\"\n"; 230 | showEnvVarsInLog = 0; 231 | }; 232 | CBD3177C9072E047DAA37278 /* Copy Pods Resources */ = { 233 | isa = PBXShellScriptBuildPhase; 234 | buildActionMask = 2147483647; 235 | files = ( 236 | ); 237 | inputPaths = ( 238 | ); 239 | name = "Copy Pods Resources"; 240 | outputPaths = ( 241 | ); 242 | runOnlyForDeploymentPostprocessing = 0; 243 | shellPath = /bin/sh; 244 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example-resources.sh\"\n"; 245 | showEnvVarsInLog = 0; 246 | }; 247 | /* End PBXShellScriptBuildPhase section */ 248 | 249 | /* Begin PBXSourcesBuildPhase section */ 250 | 6003F586195388D20070C39A /* Sources */ = { 251 | isa = PBXSourcesBuildPhase; 252 | buildActionMask = 2147483647; 253 | files = ( 254 | 6003F59E195388D20070C39A /* GCXAppDelegate.m in Sources */, 255 | 6003F5A7195388D20070C39A /* GCXViewController.m in Sources */, 256 | 6003F59A195388D20070C39A /* main.m in Sources */, 257 | ); 258 | runOnlyForDeploymentPostprocessing = 0; 259 | }; 260 | /* End PBXSourcesBuildPhase section */ 261 | 262 | /* Begin PBXVariantGroup section */ 263 | 6003F596195388D20070C39A /* InfoPlist.strings */ = { 264 | isa = PBXVariantGroup; 265 | children = ( 266 | 6003F597195388D20070C39A /* en */, 267 | ); 268 | name = InfoPlist.strings; 269 | sourceTree = ""; 270 | }; 271 | /* End PBXVariantGroup section */ 272 | 273 | /* Begin XCBuildConfiguration section */ 274 | 6003F5BD195388D20070C39A /* Debug */ = { 275 | isa = XCBuildConfiguration; 276 | buildSettings = { 277 | ALWAYS_SEARCH_USER_PATHS = NO; 278 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 279 | CLANG_CXX_LIBRARY = "libc++"; 280 | CLANG_ENABLE_MODULES = YES; 281 | CLANG_ENABLE_OBJC_ARC = YES; 282 | CLANG_WARN_BOOL_CONVERSION = YES; 283 | CLANG_WARN_CONSTANT_CONVERSION = YES; 284 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 285 | CLANG_WARN_EMPTY_BODY = YES; 286 | CLANG_WARN_ENUM_CONVERSION = YES; 287 | CLANG_WARN_INT_CONVERSION = YES; 288 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 289 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 290 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 291 | COPY_PHASE_STRIP = NO; 292 | ENABLE_TESTABILITY = YES; 293 | GCC_C_LANGUAGE_STANDARD = gnu99; 294 | GCC_DYNAMIC_NO_PIC = NO; 295 | GCC_OPTIMIZATION_LEVEL = 0; 296 | GCC_PREPROCESSOR_DEFINITIONS = ( 297 | "DEBUG=1", 298 | "$(inherited)", 299 | ); 300 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 301 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 302 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 303 | GCC_WARN_UNDECLARED_SELECTOR = YES; 304 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 305 | GCC_WARN_UNUSED_FUNCTION = YES; 306 | GCC_WARN_UNUSED_VARIABLE = YES; 307 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 308 | ONLY_ACTIVE_ARCH = YES; 309 | SDKROOT = iphoneos; 310 | TARGETED_DEVICE_FAMILY = "1,2"; 311 | }; 312 | name = Debug; 313 | }; 314 | 6003F5BE195388D20070C39A /* Release */ = { 315 | isa = XCBuildConfiguration; 316 | buildSettings = { 317 | ALWAYS_SEARCH_USER_PATHS = NO; 318 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 319 | CLANG_CXX_LIBRARY = "libc++"; 320 | CLANG_ENABLE_MODULES = YES; 321 | CLANG_ENABLE_OBJC_ARC = YES; 322 | CLANG_WARN_BOOL_CONVERSION = YES; 323 | CLANG_WARN_CONSTANT_CONVERSION = YES; 324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 325 | CLANG_WARN_EMPTY_BODY = YES; 326 | CLANG_WARN_ENUM_CONVERSION = YES; 327 | CLANG_WARN_INT_CONVERSION = YES; 328 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 329 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 330 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 331 | COPY_PHASE_STRIP = YES; 332 | ENABLE_NS_ASSERTIONS = NO; 333 | GCC_C_LANGUAGE_STANDARD = gnu99; 334 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 335 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 336 | GCC_WARN_UNDECLARED_SELECTOR = YES; 337 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 338 | GCC_WARN_UNUSED_FUNCTION = YES; 339 | GCC_WARN_UNUSED_VARIABLE = YES; 340 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 341 | SDKROOT = iphoneos; 342 | TARGETED_DEVICE_FAMILY = "1,2"; 343 | VALIDATE_PRODUCT = YES; 344 | }; 345 | name = Release; 346 | }; 347 | 6003F5C0195388D20070C39A /* Debug */ = { 348 | isa = XCBuildConfiguration; 349 | baseConfigurationReference = C375187B7F85077F4A9410AA /* Pods-GCXSteppedSlider_Example.debug.xcconfig */; 350 | buildSettings = { 351 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 352 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 353 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 354 | GCC_PREFIX_HEADER = "GCXSteppedSlider/GCXSteppedSlider-Prefix.pch"; 355 | INFOPLIST_FILE = "GCXSteppedSlider/GCXSteppedSlider-Info.plist"; 356 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 357 | MODULE_NAME = ExampleApp; 358 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 359 | PRODUCT_NAME = "$(TARGET_NAME)"; 360 | WRAPPER_EXTENSION = app; 361 | }; 362 | name = Debug; 363 | }; 364 | 6003F5C1195388D20070C39A /* Release */ = { 365 | isa = XCBuildConfiguration; 366 | baseConfigurationReference = EB42C1A004713F1BDFD58421 /* Pods-GCXSteppedSlider_Example.release.xcconfig */; 367 | buildSettings = { 368 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 369 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 370 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 371 | GCC_PREFIX_HEADER = "GCXSteppedSlider/GCXSteppedSlider-Prefix.pch"; 372 | INFOPLIST_FILE = "GCXSteppedSlider/GCXSteppedSlider-Info.plist"; 373 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 374 | MODULE_NAME = ExampleApp; 375 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 376 | PRODUCT_NAME = "$(TARGET_NAME)"; 377 | WRAPPER_EXTENSION = app; 378 | }; 379 | name = Release; 380 | }; 381 | /* End XCBuildConfiguration section */ 382 | 383 | /* Begin XCConfigurationList section */ 384 | 6003F585195388D10070C39A /* Build configuration list for PBXProject "GCXSteppedSlider" */ = { 385 | isa = XCConfigurationList; 386 | buildConfigurations = ( 387 | 6003F5BD195388D20070C39A /* Debug */, 388 | 6003F5BE195388D20070C39A /* Release */, 389 | ); 390 | defaultConfigurationIsVisible = 0; 391 | defaultConfigurationName = Release; 392 | }; 393 | 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "GCXSteppedSlider_Example" */ = { 394 | isa = XCConfigurationList; 395 | buildConfigurations = ( 396 | 6003F5C0195388D20070C39A /* Debug */, 397 | 6003F5C1195388D20070C39A /* Release */, 398 | ); 399 | defaultConfigurationIsVisible = 0; 400 | defaultConfigurationName = Release; 401 | }; 402 | /* End XCConfigurationList section */ 403 | }; 404 | rootObject = 6003F582195388D10070C39A /* Project object */; 405 | } 406 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 04DD485DAD014F3DC840507629B52DEA /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = AD04C760F0EB4FE7B23D85D56145A97F /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 113C84F712E6B22CEA8E3CFADB1249EC /* GCXSteppedSlider-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F89D47B947C14C4B0E2D4ED2357C7E0D /* GCXSteppedSlider-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 12 | 1829B5B7F32D821C1E40AB16B9D72765 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A649F9297535214EF97548C9EA9FA33 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 18D246F85717923701DFEF8564EC6E67 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 77F2CF8861113B6F7AAE7EA65C6A7C1B /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 20E3198044D76A59B6F6765379EE2834 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A83880C48939BE4C108DE5BA751349B /* Foundation.framework */; }; 15 | 255F0EF3783EB818D40819CE9EB5A37E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 303B58A2959C8EEE96799AD558DDA1D3 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | 27357A1CF841D5231271DB8E7287B925 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0183E721D7FD6AF70B4A911C1B1B95 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 45451F356D5AF5E9841D0F1ADA15C42D /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F8187F5CAD09C6C6B2B54C65B4A807C9 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18 | 46C4DB3240BCC57702E100FDF8E57C7C /* GCXSteppedSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 60D55C6726956533E88F386208DC4618 /* GCXSteppedSlider.h */; settings = {ATTRIBUTES = (Public, ); }; }; 19 | 4736C0147FEB0E6B408F19DCD4BD2B02 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 537638D0C329C86D4ED401237F5D895F /* MASCompositeConstraint.m */; }; 20 | 49E347EEE547B7D16514214C94FA1BFD /* Pods-GCXSteppedSlider_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DE8A7B6185040A6C5140D2BFC26D28D /* Pods-GCXSteppedSlider_Example-dummy.m */; }; 21 | 4AB8FF57046C7D9F167D8AB0DAC1C488 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D5C71A7A4B3156186EC98A377E8543 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22 | 4B7538F3B4AFF9C2F6F9A48BB9BAC5FF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13FC8E35EDBC629D62166DD797E6DE52 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 23 | 4BC470C836D7EA537CB2D9C5DB4DD8FB /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 79BEFB59B86F59C579FF7594DCF78FEB /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24 | 4E680A747DA77BE11BEFB3727CA47FBB /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 61881F60AB333EA86CE7881063A4BA60 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 25 | 4F607CF5B81AA46AE0561043B8066DAD /* GCXSteppedSlider-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C1A54D0E5CD2EE8EAE5F9382F7C14D47 /* GCXSteppedSlider-dummy.m */; }; 26 | 595C02F0AB0AAD254EFDEC17CBAB5F3F /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FF217FE4E512E3883BAD867868CB42D9 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27 | 5AE0F06DE1DF551D6DDDCBE3E07358AF /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FE937DE71A73D4B7779FF934EC2373E2 /* Masonry-dummy.m */; }; 28 | 646E0FB1A30D3D7C99641FA73F617199 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 611E26C24600589F4729E5EF510272FB /* MASLayoutConstraint.m */; }; 29 | 6E8E3CFC093CF8A794B275A2F8EFBD2E /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A214B89738295B4A4B00EEB1960E8865 /* NSLayoutConstraint+MASDebugAdditions.m */; }; 30 | 798A09DC19A2DAC0191C46EA9DB80955 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = A02D339E60E114FCC992372E93245BA1 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; 31 | 79A00BB52C7697E881A828156CFFB981 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A83880C48939BE4C108DE5BA751349B /* Foundation.framework */; }; 32 | 7B706D7C7830507EED820CE5E4A65DF8 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B1C550CDA10D592ABB6A0383A3509F05 /* NSArray+MASAdditions.m */; }; 33 | 7E8F0ADB46D88C2258619C8519EA5B6D /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = FF3818136FED67BD32E3A7FAEDE4F68F /* MASConstraintMaker.m */; }; 34 | 82ABED48A3B18590CE98F3646E991CDA /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 0925CC604B01F156279E8952DDE3EDDB /* MASViewAttribute.m */; }; 35 | 918F55B5E72599675C09920F18989B49 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A83880C48939BE4C108DE5BA751349B /* Foundation.framework */; }; 36 | 9D7A6FC7B11F1344F6C428B064201411 /* GCXSteppedSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 51D91573CBA1E400A9E83C5FC8672946 /* GCXSteppedSlider.m */; }; 37 | 9E250B46F756E318FF94E9079B2D1CAC /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F69E835336330FF06E7268D32D667C9 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38 | 9F0CD9B16B1865A62CD386DC8F79BA16 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 96DCAB46CA2931B8140F2639F17404AF /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; 39 | ACB544847CB385572FFC4CDEFDB1A0F5 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E4875E63FFAFF84A3CDFE99F28B551E /* MASViewConstraint.m */; }; 40 | C0146B4DF5A3527E930ED3B1B3BAC9F3 /* Pods-GCXSteppedSlider_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 782AECE28522E68D3B715B0728ABBA52 /* Pods-GCXSteppedSlider_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 41 | C146B55E60A31B97107032F8A42CD8FA /* Masonry.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BF35C23E029BF10AE1D3595169AFBCF /* Masonry.framework */; }; 42 | CE2BE4E8B5DD72703D94BD133A853189 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EC0A25DD6F58D072A4ACFC92D9237BF /* View+MASAdditions.m */; }; 43 | D0F5A014E0DB4A1C7605F46BBE8D223A /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3980E01C213ECEDEABAC38C1CFD3946D /* ViewController+MASAdditions.m */; }; 44 | DE5FB078F8C4E74B5AAC220D0CC4F1FF /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = C484EF8499F67EC81CA7E27930A63CDC /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; 45 | E4D1A8DCC725EC65E5DB20EE3090E61D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D191DB699920046F5057F3B4E1171297 /* UIKit.framework */; }; 46 | F0AC45D2E9CEFB07CFC52891AB0EC621 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBBB506D4D551AB1A637EE3145A459E /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; 47 | F4AB4D2ECCDFAF2196B3BCC4C2DBBCBB /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 986CB32629319F7F2256662716334944 /* MASConstraint.m */; }; 48 | /* End PBXBuildFile section */ 49 | 50 | /* Begin PBXContainerItemProxy section */ 51 | 1950169F4A5055346B5F44AE1CE80DAF /* PBXContainerItemProxy */ = { 52 | isa = PBXContainerItemProxy; 53 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 54 | proxyType = 1; 55 | remoteGlobalIDString = 1BED6D6CFA31E898AF714AB9C96AE9D6; 56 | remoteInfo = GCXSteppedSlider; 57 | }; 58 | 746241A444896EAB922E533D40832AAB /* PBXContainerItemProxy */ = { 59 | isa = PBXContainerItemProxy; 60 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 61 | proxyType = 1; 62 | remoteGlobalIDString = 1BF9697D56FFBBB178891A745B33F9D8; 63 | remoteInfo = Masonry; 64 | }; 65 | FAFA37AB81C6223AB5CCCE1EA1C015AB /* PBXContainerItemProxy */ = { 66 | isa = PBXContainerItemProxy; 67 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 68 | proxyType = 1; 69 | remoteGlobalIDString = 1BF9697D56FFBBB178891A745B33F9D8; 70 | remoteInfo = Masonry; 71 | }; 72 | /* End PBXContainerItemProxy section */ 73 | 74 | /* Begin PBXFileReference section */ 75 | 0925CC604B01F156279E8952DDE3EDDB /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; 76 | 0A83880C48939BE4C108DE5BA751349B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 77 | 13FC8E35EDBC629D62166DD797E6DE52 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; 78 | 1DE8A7B6185040A6C5140D2BFC26D28D /* Pods-GCXSteppedSlider_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GCXSteppedSlider_Example-dummy.m"; sourceTree = ""; }; 79 | 1F0183E721D7FD6AF70B4A911C1B1B95 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; 80 | 28903DE39691E1CE096F67A67FC9D68F /* Pods-GCXSteppedSlider_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GCXSteppedSlider_Example.debug.xcconfig"; sourceTree = ""; }; 81 | 2F69E835336330FF06E7268D32D667C9 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; 82 | 3027ECF3675B7D92CFE998E7807ED8BD /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Masonry.modulemap; sourceTree = ""; }; 83 | 303B58A2959C8EEE96799AD558DDA1D3 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; 84 | 328E2D0534BD1342F8928C6DD41EC07F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 85 | 3980E01C213ECEDEABAC38C1CFD3946D /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; 86 | 3AD7096F9CF84693B95277F3E384B455 /* Pods_GCXSteppedSlider_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GCXSteppedSlider_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 87 | 4BC2C8895473813DDDDFB8C6CB738A73 /* GCXSteppedSlider-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GCXSteppedSlider-prefix.pch"; sourceTree = ""; }; 88 | 4F3E5A36D58A875E53D7CAED9F8B7D5D /* GCXSteppedSlider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GCXSteppedSlider.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 89 | 518D1353E1E1887A35BCF72277E5CAF3 /* Pods-GCXSteppedSlider_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GCXSteppedSlider_Example-acknowledgements.plist"; sourceTree = ""; }; 90 | 51D91573CBA1E400A9E83C5FC8672946 /* GCXSteppedSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GCXSteppedSlider.m; sourceTree = ""; }; 91 | 537638D0C329C86D4ED401237F5D895F /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; 92 | 5A649F9297535214EF97548C9EA9FA33 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; 93 | 60D55C6726956533E88F386208DC4618 /* GCXSteppedSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GCXSteppedSlider.h; sourceTree = ""; }; 94 | 611E26C24600589F4729E5EF510272FB /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; 95 | 61881F60AB333EA86CE7881063A4BA60 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; 96 | 61C635FA63B207AC12EA2BD25D894A65 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; 97 | 6BF35C23E029BF10AE1D3595169AFBCF /* Masonry.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98 | 6E4875E63FFAFF84A3CDFE99F28B551E /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; 99 | 77F2CF8861113B6F7AAE7EA65C6A7C1B /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; 100 | 782AECE28522E68D3B715B0728ABBA52 /* Pods-GCXSteppedSlider_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GCXSteppedSlider_Example-umbrella.h"; sourceTree = ""; }; 101 | 79BEFB59B86F59C579FF7594DCF78FEB /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; 102 | 7EC0A25DD6F58D072A4ACFC92D9237BF /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; 103 | 7F44A621BE24B87AEF75DD7193846188 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 104 | 858BDADF86922157BED616FFA4EAC2CA /* Pods-GCXSteppedSlider_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GCXSteppedSlider_Example-acknowledgements.markdown"; sourceTree = ""; }; 105 | 8D3B4C34F45CF3F34216419DF0FF6C35 /* Pods-GCXSteppedSlider_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-GCXSteppedSlider_Example.modulemap"; sourceTree = ""; }; 106 | 8DF04A467393904496DA528C389B14F5 /* Pods-GCXSteppedSlider_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GCXSteppedSlider_Example-frameworks.sh"; sourceTree = ""; }; 107 | 96DCAB46CA2931B8140F2639F17404AF /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; 108 | 986CB32629319F7F2256662716334944 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; 109 | A02D339E60E114FCC992372E93245BA1 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; 110 | A214B89738295B4A4B00EEB1960E8865 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; 111 | A303ADBE5B5AD326C027D1A6765A4931 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 112 | AACC4FD46B7B61882A2B515100E34ECD /* Pods-GCXSteppedSlider_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GCXSteppedSlider_Example-resources.sh"; sourceTree = ""; }; 113 | AD04C760F0EB4FE7B23D85D56145A97F /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; 114 | B1C550CDA10D592ABB6A0383A3509F05 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; 115 | BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 116 | C1A54D0E5CD2EE8EAE5F9382F7C14D47 /* GCXSteppedSlider-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GCXSteppedSlider-dummy.m"; sourceTree = ""; }; 117 | C484EF8499F67EC81CA7E27930A63CDC /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; 118 | C6D5C71A7A4B3156186EC98A377E8543 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; 119 | CD9460636A228DA2C8F5EC4A2AB7EBB6 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; 120 | D0DF912E515FE2CCB255D6A9AC1CFF04 /* GCXSteppedSlider.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GCXSteppedSlider.xcconfig; sourceTree = ""; }; 121 | D191DB699920046F5057F3B4E1171297 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 122 | DFE56E037370E3550E6A241576C05478 /* Masonry.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 123 | E659CFA9B15ED18F304D79839C239ABC /* GCXSteppedSlider.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = GCXSteppedSlider.modulemap; sourceTree = ""; }; 124 | ECBBB506D4D551AB1A637EE3145A459E /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; 125 | F50B878A4A62640B787145D3CD3D27F8 /* Pods-GCXSteppedSlider_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GCXSteppedSlider_Example.release.xcconfig"; sourceTree = ""; }; 126 | F8187F5CAD09C6C6B2B54C65B4A807C9 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; 127 | F89D47B947C14C4B0E2D4ED2357C7E0D /* GCXSteppedSlider-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GCXSteppedSlider-umbrella.h"; sourceTree = ""; }; 128 | FE937DE71A73D4B7779FF934EC2373E2 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; 129 | FF217FE4E512E3883BAD867868CB42D9 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; 130 | FF3818136FED67BD32E3A7FAEDE4F68F /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; 131 | /* End PBXFileReference section */ 132 | 133 | /* Begin PBXFrameworksBuildPhase section */ 134 | 35078AE23C90889CBDC2C7A752C247D9 /* Frameworks */ = { 135 | isa = PBXFrameworksBuildPhase; 136 | buildActionMask = 2147483647; 137 | files = ( 138 | 918F55B5E72599675C09920F18989B49 /* Foundation.framework in Frameworks */, 139 | E4D1A8DCC725EC65E5DB20EE3090E61D /* UIKit.framework in Frameworks */, 140 | ); 141 | runOnlyForDeploymentPostprocessing = 0; 142 | }; 143 | 7B8F0ECB297912BA036EF809FADDEBB9 /* Frameworks */ = { 144 | isa = PBXFrameworksBuildPhase; 145 | buildActionMask = 2147483647; 146 | files = ( 147 | 20E3198044D76A59B6F6765379EE2834 /* Foundation.framework in Frameworks */, 148 | ); 149 | runOnlyForDeploymentPostprocessing = 0; 150 | }; 151 | A6003258AB4D584F4BF66D122DBDFC3D /* Frameworks */ = { 152 | isa = PBXFrameworksBuildPhase; 153 | buildActionMask = 2147483647; 154 | files = ( 155 | 79A00BB52C7697E881A828156CFFB981 /* Foundation.framework in Frameworks */, 156 | C146B55E60A31B97107032F8A42CD8FA /* Masonry.framework in Frameworks */, 157 | ); 158 | runOnlyForDeploymentPostprocessing = 0; 159 | }; 160 | /* End PBXFrameworksBuildPhase section */ 161 | 162 | /* Begin PBXGroup section */ 163 | 10AB007D2A4863871385C5AF0CC0C686 /* Classes */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 60D55C6726956533E88F386208DC4618 /* GCXSteppedSlider.h */, 167 | 51D91573CBA1E400A9E83C5FC8672946 /* GCXSteppedSlider.m */, 168 | ); 169 | path = Classes; 170 | sourceTree = ""; 171 | }; 172 | 393841E4F0EF29C9B678EB3DF65B19DA /* Products */ = { 173 | isa = PBXGroup; 174 | children = ( 175 | 4F3E5A36D58A875E53D7CAED9F8B7D5D /* GCXSteppedSlider.framework */, 176 | DFE56E037370E3550E6A241576C05478 /* Masonry.framework */, 177 | 3AD7096F9CF84693B95277F3E384B455 /* Pods_GCXSteppedSlider_Example.framework */, 178 | ); 179 | name = Products; 180 | sourceTree = ""; 181 | }; 182 | 3F74C01C2EED58F65E849A538BF4A4D4 /* Targets Support Files */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | BA59D5B2A2C89BA537D7C45D1CC3CE39 /* Pods-GCXSteppedSlider_Example */, 186 | ); 187 | name = "Targets Support Files"; 188 | sourceTree = ""; 189 | }; 190 | 59511511C2B4BC905C933DCC67E365C4 /* Frameworks */ = { 191 | isa = PBXGroup; 192 | children = ( 193 | 6BF35C23E029BF10AE1D3595169AFBCF /* Masonry.framework */, 194 | BD6A029B56315F199B8B604A89006E3B /* iOS */, 195 | ); 196 | name = Frameworks; 197 | sourceTree = ""; 198 | }; 199 | 61B838DCFC1761A521B0674D0993C763 /* Support Files */ = { 200 | isa = PBXGroup; 201 | children = ( 202 | E659CFA9B15ED18F304D79839C239ABC /* GCXSteppedSlider.modulemap */, 203 | D0DF912E515FE2CCB255D6A9AC1CFF04 /* GCXSteppedSlider.xcconfig */, 204 | C1A54D0E5CD2EE8EAE5F9382F7C14D47 /* GCXSteppedSlider-dummy.m */, 205 | 4BC2C8895473813DDDDFB8C6CB738A73 /* GCXSteppedSlider-prefix.pch */, 206 | F89D47B947C14C4B0E2D4ED2357C7E0D /* GCXSteppedSlider-umbrella.h */, 207 | 328E2D0534BD1342F8928C6DD41EC07F /* Info.plist */, 208 | ); 209 | name = "Support Files"; 210 | path = "Example/Pods/Target Support Files/GCXSteppedSlider"; 211 | sourceTree = ""; 212 | }; 213 | 7DB346D0F39D3F0E887471402A8071AB = { 214 | isa = PBXGroup; 215 | children = ( 216 | BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, 217 | 9F34B6973DC3B560F2D01492BD17753F /* Development Pods */, 218 | 59511511C2B4BC905C933DCC67E365C4 /* Frameworks */, 219 | E9B49E9D4F6BC02AA78DCF86BCED2145 /* Pods */, 220 | 393841E4F0EF29C9B678EB3DF65B19DA /* Products */, 221 | 3F74C01C2EED58F65E849A538BF4A4D4 /* Targets Support Files */, 222 | ); 223 | sourceTree = ""; 224 | }; 225 | 8F5744CE83F4995A7361F2DFC255F5CC /* GCXSteppedSlider */ = { 226 | isa = PBXGroup; 227 | children = ( 228 | 10AB007D2A4863871385C5AF0CC0C686 /* Classes */, 229 | ); 230 | path = GCXSteppedSlider; 231 | sourceTree = ""; 232 | }; 233 | 9F34B6973DC3B560F2D01492BD17753F /* Development Pods */ = { 234 | isa = PBXGroup; 235 | children = ( 236 | F00E0507A6511F3E1F2A1DCF0D9F1C4F /* GCXSteppedSlider */, 237 | ); 238 | name = "Development Pods"; 239 | sourceTree = ""; 240 | }; 241 | A2A20986957FCCEF3865AFC2DAE207A8 /* Masonry */ = { 242 | isa = PBXGroup; 243 | children = ( 244 | 79BEFB59B86F59C579FF7594DCF78FEB /* MASCompositeConstraint.h */, 245 | 537638D0C329C86D4ED401237F5D895F /* MASCompositeConstraint.m */, 246 | ECBBB506D4D551AB1A637EE3145A459E /* MASConstraint.h */, 247 | 986CB32629319F7F2256662716334944 /* MASConstraint.m */, 248 | 77F2CF8861113B6F7AAE7EA65C6A7C1B /* MASConstraint+Private.h */, 249 | A02D339E60E114FCC992372E93245BA1 /* MASConstraintMaker.h */, 250 | FF3818136FED67BD32E3A7FAEDE4F68F /* MASConstraintMaker.m */, 251 | C484EF8499F67EC81CA7E27930A63CDC /* MASLayoutConstraint.h */, 252 | 611E26C24600589F4729E5EF510272FB /* MASLayoutConstraint.m */, 253 | 303B58A2959C8EEE96799AD558DDA1D3 /* Masonry.h */, 254 | AD04C760F0EB4FE7B23D85D56145A97F /* MASUtilities.h */, 255 | 96DCAB46CA2931B8140F2639F17404AF /* MASViewAttribute.h */, 256 | 0925CC604B01F156279E8952DDE3EDDB /* MASViewAttribute.m */, 257 | 1F0183E721D7FD6AF70B4A911C1B1B95 /* MASViewConstraint.h */, 258 | 6E4875E63FFAFF84A3CDFE99F28B551E /* MASViewConstraint.m */, 259 | 5A649F9297535214EF97548C9EA9FA33 /* NSArray+MASAdditions.h */, 260 | B1C550CDA10D592ABB6A0383A3509F05 /* NSArray+MASAdditions.m */, 261 | F8187F5CAD09C6C6B2B54C65B4A807C9 /* NSArray+MASShorthandAdditions.h */, 262 | 2F69E835336330FF06E7268D32D667C9 /* NSLayoutConstraint+MASDebugAdditions.h */, 263 | A214B89738295B4A4B00EEB1960E8865 /* NSLayoutConstraint+MASDebugAdditions.m */, 264 | FF217FE4E512E3883BAD867868CB42D9 /* View+MASAdditions.h */, 265 | 7EC0A25DD6F58D072A4ACFC92D9237BF /* View+MASAdditions.m */, 266 | 61881F60AB333EA86CE7881063A4BA60 /* View+MASShorthandAdditions.h */, 267 | C6D5C71A7A4B3156186EC98A377E8543 /* ViewController+MASAdditions.h */, 268 | 3980E01C213ECEDEABAC38C1CFD3946D /* ViewController+MASAdditions.m */, 269 | AB2D74BCA437C31F2B7B0E2905262257 /* Support Files */, 270 | ); 271 | path = Masonry; 272 | sourceTree = ""; 273 | }; 274 | AB2D74BCA437C31F2B7B0E2905262257 /* Support Files */ = { 275 | isa = PBXGroup; 276 | children = ( 277 | 7F44A621BE24B87AEF75DD7193846188 /* Info.plist */, 278 | 3027ECF3675B7D92CFE998E7807ED8BD /* Masonry.modulemap */, 279 | 61C635FA63B207AC12EA2BD25D894A65 /* Masonry.xcconfig */, 280 | FE937DE71A73D4B7779FF934EC2373E2 /* Masonry-dummy.m */, 281 | CD9460636A228DA2C8F5EC4A2AB7EBB6 /* Masonry-prefix.pch */, 282 | 13FC8E35EDBC629D62166DD797E6DE52 /* Masonry-umbrella.h */, 283 | ); 284 | name = "Support Files"; 285 | path = "../Target Support Files/Masonry"; 286 | sourceTree = ""; 287 | }; 288 | BA59D5B2A2C89BA537D7C45D1CC3CE39 /* Pods-GCXSteppedSlider_Example */ = { 289 | isa = PBXGroup; 290 | children = ( 291 | A303ADBE5B5AD326C027D1A6765A4931 /* Info.plist */, 292 | 8D3B4C34F45CF3F34216419DF0FF6C35 /* Pods-GCXSteppedSlider_Example.modulemap */, 293 | 858BDADF86922157BED616FFA4EAC2CA /* Pods-GCXSteppedSlider_Example-acknowledgements.markdown */, 294 | 518D1353E1E1887A35BCF72277E5CAF3 /* Pods-GCXSteppedSlider_Example-acknowledgements.plist */, 295 | 1DE8A7B6185040A6C5140D2BFC26D28D /* Pods-GCXSteppedSlider_Example-dummy.m */, 296 | 8DF04A467393904496DA528C389B14F5 /* Pods-GCXSteppedSlider_Example-frameworks.sh */, 297 | AACC4FD46B7B61882A2B515100E34ECD /* Pods-GCXSteppedSlider_Example-resources.sh */, 298 | 782AECE28522E68D3B715B0728ABBA52 /* Pods-GCXSteppedSlider_Example-umbrella.h */, 299 | 28903DE39691E1CE096F67A67FC9D68F /* Pods-GCXSteppedSlider_Example.debug.xcconfig */, 300 | F50B878A4A62640B787145D3CD3D27F8 /* Pods-GCXSteppedSlider_Example.release.xcconfig */, 301 | ); 302 | name = "Pods-GCXSteppedSlider_Example"; 303 | path = "Target Support Files/Pods-GCXSteppedSlider_Example"; 304 | sourceTree = ""; 305 | }; 306 | BD6A029B56315F199B8B604A89006E3B /* iOS */ = { 307 | isa = PBXGroup; 308 | children = ( 309 | 0A83880C48939BE4C108DE5BA751349B /* Foundation.framework */, 310 | D191DB699920046F5057F3B4E1171297 /* UIKit.framework */, 311 | ); 312 | name = iOS; 313 | sourceTree = ""; 314 | }; 315 | E9B49E9D4F6BC02AA78DCF86BCED2145 /* Pods */ = { 316 | isa = PBXGroup; 317 | children = ( 318 | A2A20986957FCCEF3865AFC2DAE207A8 /* Masonry */, 319 | ); 320 | name = Pods; 321 | sourceTree = ""; 322 | }; 323 | F00E0507A6511F3E1F2A1DCF0D9F1C4F /* GCXSteppedSlider */ = { 324 | isa = PBXGroup; 325 | children = ( 326 | 8F5744CE83F4995A7361F2DFC255F5CC /* GCXSteppedSlider */, 327 | 61B838DCFC1761A521B0674D0993C763 /* Support Files */, 328 | ); 329 | name = GCXSteppedSlider; 330 | path = ../..; 331 | sourceTree = ""; 332 | }; 333 | /* End PBXGroup section */ 334 | 335 | /* Begin PBXHeadersBuildPhase section */ 336 | 35B97B0A5EFA047977B0A3D129367EB0 /* Headers */ = { 337 | isa = PBXHeadersBuildPhase; 338 | buildActionMask = 2147483647; 339 | files = ( 340 | 113C84F712E6B22CEA8E3CFADB1249EC /* GCXSteppedSlider-umbrella.h in Headers */, 341 | 46C4DB3240BCC57702E100FDF8E57C7C /* GCXSteppedSlider.h in Headers */, 342 | ); 343 | runOnlyForDeploymentPostprocessing = 0; 344 | }; 345 | 59C10AD8CD0BE589C00D5AE7CA49D608 /* Headers */ = { 346 | isa = PBXHeadersBuildPhase; 347 | buildActionMask = 2147483647; 348 | files = ( 349 | 4BC470C836D7EA537CB2D9C5DB4DD8FB /* MASCompositeConstraint.h in Headers */, 350 | 18D246F85717923701DFEF8564EC6E67 /* MASConstraint+Private.h in Headers */, 351 | F0AC45D2E9CEFB07CFC52891AB0EC621 /* MASConstraint.h in Headers */, 352 | 798A09DC19A2DAC0191C46EA9DB80955 /* MASConstraintMaker.h in Headers */, 353 | DE5FB078F8C4E74B5AAC220D0CC4F1FF /* MASLayoutConstraint.h in Headers */, 354 | 4B7538F3B4AFF9C2F6F9A48BB9BAC5FF /* Masonry-umbrella.h in Headers */, 355 | 255F0EF3783EB818D40819CE9EB5A37E /* Masonry.h in Headers */, 356 | 04DD485DAD014F3DC840507629B52DEA /* MASUtilities.h in Headers */, 357 | 9F0CD9B16B1865A62CD386DC8F79BA16 /* MASViewAttribute.h in Headers */, 358 | 27357A1CF841D5231271DB8E7287B925 /* MASViewConstraint.h in Headers */, 359 | 1829B5B7F32D821C1E40AB16B9D72765 /* NSArray+MASAdditions.h in Headers */, 360 | 45451F356D5AF5E9841D0F1ADA15C42D /* NSArray+MASShorthandAdditions.h in Headers */, 361 | 9E250B46F756E318FF94E9079B2D1CAC /* NSLayoutConstraint+MASDebugAdditions.h in Headers */, 362 | 595C02F0AB0AAD254EFDEC17CBAB5F3F /* View+MASAdditions.h in Headers */, 363 | 4E680A747DA77BE11BEFB3727CA47FBB /* View+MASShorthandAdditions.h in Headers */, 364 | 4AB8FF57046C7D9F167D8AB0DAC1C488 /* ViewController+MASAdditions.h in Headers */, 365 | ); 366 | runOnlyForDeploymentPostprocessing = 0; 367 | }; 368 | BA0B829522BB06DFAF85AFDA26A019EF /* Headers */ = { 369 | isa = PBXHeadersBuildPhase; 370 | buildActionMask = 2147483647; 371 | files = ( 372 | C0146B4DF5A3527E930ED3B1B3BAC9F3 /* Pods-GCXSteppedSlider_Example-umbrella.h in Headers */, 373 | ); 374 | runOnlyForDeploymentPostprocessing = 0; 375 | }; 376 | /* End PBXHeadersBuildPhase section */ 377 | 378 | /* Begin PBXNativeTarget section */ 379 | 1BED6D6CFA31E898AF714AB9C96AE9D6 /* GCXSteppedSlider */ = { 380 | isa = PBXNativeTarget; 381 | buildConfigurationList = 2EAD1373A0CF4140091AEB37B98BD15F /* Build configuration list for PBXNativeTarget "GCXSteppedSlider" */; 382 | buildPhases = ( 383 | 379AC83B24564FCFC79A3FD417B962D4 /* Sources */, 384 | A6003258AB4D584F4BF66D122DBDFC3D /* Frameworks */, 385 | 35B97B0A5EFA047977B0A3D129367EB0 /* Headers */, 386 | ); 387 | buildRules = ( 388 | ); 389 | dependencies = ( 390 | 136885F189FF3C087B9C1E5425C103A9 /* PBXTargetDependency */, 391 | ); 392 | name = GCXSteppedSlider; 393 | productName = GCXSteppedSlider; 394 | productReference = 4F3E5A36D58A875E53D7CAED9F8B7D5D /* GCXSteppedSlider.framework */; 395 | productType = "com.apple.product-type.framework"; 396 | }; 397 | 1BF9697D56FFBBB178891A745B33F9D8 /* Masonry */ = { 398 | isa = PBXNativeTarget; 399 | buildConfigurationList = F802B0C3855BA72DAAF88804F439C8BC /* Build configuration list for PBXNativeTarget "Masonry" */; 400 | buildPhases = ( 401 | 9DF95C94A2A4A1F779A21BAA7BA0E251 /* Sources */, 402 | 35078AE23C90889CBDC2C7A752C247D9 /* Frameworks */, 403 | 59C10AD8CD0BE589C00D5AE7CA49D608 /* Headers */, 404 | ); 405 | buildRules = ( 406 | ); 407 | dependencies = ( 408 | ); 409 | name = Masonry; 410 | productName = Masonry; 411 | productReference = DFE56E037370E3550E6A241576C05478 /* Masonry.framework */; 412 | productType = "com.apple.product-type.framework"; 413 | }; 414 | 7722F70197082D593FF5830C9F12821C /* Pods-GCXSteppedSlider_Example */ = { 415 | isa = PBXNativeTarget; 416 | buildConfigurationList = F1A604A77D0EE7F64B5984F6702921F6 /* Build configuration list for PBXNativeTarget "Pods-GCXSteppedSlider_Example" */; 417 | buildPhases = ( 418 | 0F281EA03A5BC74A54528EE6B792898F /* Sources */, 419 | 7B8F0ECB297912BA036EF809FADDEBB9 /* Frameworks */, 420 | BA0B829522BB06DFAF85AFDA26A019EF /* Headers */, 421 | ); 422 | buildRules = ( 423 | ); 424 | dependencies = ( 425 | 8CC220DA3E1336DE6CFC92ACBCD0CA2C /* PBXTargetDependency */, 426 | 631FABD950258123BB1E8C090AA0E14D /* PBXTargetDependency */, 427 | ); 428 | name = "Pods-GCXSteppedSlider_Example"; 429 | productName = "Pods-GCXSteppedSlider_Example"; 430 | productReference = 3AD7096F9CF84693B95277F3E384B455 /* Pods_GCXSteppedSlider_Example.framework */; 431 | productType = "com.apple.product-type.framework"; 432 | }; 433 | /* End PBXNativeTarget section */ 434 | 435 | /* Begin PBXProject section */ 436 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 437 | isa = PBXProject; 438 | attributes = { 439 | LastSwiftUpdateCheck = 0700; 440 | LastUpgradeCheck = 0700; 441 | }; 442 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 443 | compatibilityVersion = "Xcode 3.2"; 444 | developmentRegion = English; 445 | hasScannedForEncodings = 0; 446 | knownRegions = ( 447 | en, 448 | ); 449 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 450 | productRefGroup = 393841E4F0EF29C9B678EB3DF65B19DA /* Products */; 451 | projectDirPath = ""; 452 | projectRoot = ""; 453 | targets = ( 454 | 1BED6D6CFA31E898AF714AB9C96AE9D6 /* GCXSteppedSlider */, 455 | 1BF9697D56FFBBB178891A745B33F9D8 /* Masonry */, 456 | 7722F70197082D593FF5830C9F12821C /* Pods-GCXSteppedSlider_Example */, 457 | ); 458 | }; 459 | /* End PBXProject section */ 460 | 461 | /* Begin PBXSourcesBuildPhase section */ 462 | 0F281EA03A5BC74A54528EE6B792898F /* Sources */ = { 463 | isa = PBXSourcesBuildPhase; 464 | buildActionMask = 2147483647; 465 | files = ( 466 | 49E347EEE547B7D16514214C94FA1BFD /* Pods-GCXSteppedSlider_Example-dummy.m in Sources */, 467 | ); 468 | runOnlyForDeploymentPostprocessing = 0; 469 | }; 470 | 379AC83B24564FCFC79A3FD417B962D4 /* Sources */ = { 471 | isa = PBXSourcesBuildPhase; 472 | buildActionMask = 2147483647; 473 | files = ( 474 | 4F607CF5B81AA46AE0561043B8066DAD /* GCXSteppedSlider-dummy.m in Sources */, 475 | 9D7A6FC7B11F1344F6C428B064201411 /* GCXSteppedSlider.m in Sources */, 476 | ); 477 | runOnlyForDeploymentPostprocessing = 0; 478 | }; 479 | 9DF95C94A2A4A1F779A21BAA7BA0E251 /* Sources */ = { 480 | isa = PBXSourcesBuildPhase; 481 | buildActionMask = 2147483647; 482 | files = ( 483 | 4736C0147FEB0E6B408F19DCD4BD2B02 /* MASCompositeConstraint.m in Sources */, 484 | F4AB4D2ECCDFAF2196B3BCC4C2DBBCBB /* MASConstraint.m in Sources */, 485 | 7E8F0ADB46D88C2258619C8519EA5B6D /* MASConstraintMaker.m in Sources */, 486 | 646E0FB1A30D3D7C99641FA73F617199 /* MASLayoutConstraint.m in Sources */, 487 | 5AE0F06DE1DF551D6DDDCBE3E07358AF /* Masonry-dummy.m in Sources */, 488 | 82ABED48A3B18590CE98F3646E991CDA /* MASViewAttribute.m in Sources */, 489 | ACB544847CB385572FFC4CDEFDB1A0F5 /* MASViewConstraint.m in Sources */, 490 | 7B706D7C7830507EED820CE5E4A65DF8 /* NSArray+MASAdditions.m in Sources */, 491 | 6E8E3CFC093CF8A794B275A2F8EFBD2E /* NSLayoutConstraint+MASDebugAdditions.m in Sources */, 492 | CE2BE4E8B5DD72703D94BD133A853189 /* View+MASAdditions.m in Sources */, 493 | D0F5A014E0DB4A1C7605F46BBE8D223A /* ViewController+MASAdditions.m in Sources */, 494 | ); 495 | runOnlyForDeploymentPostprocessing = 0; 496 | }; 497 | /* End PBXSourcesBuildPhase section */ 498 | 499 | /* Begin PBXTargetDependency section */ 500 | 136885F189FF3C087B9C1E5425C103A9 /* PBXTargetDependency */ = { 501 | isa = PBXTargetDependency; 502 | name = Masonry; 503 | target = 1BF9697D56FFBBB178891A745B33F9D8 /* Masonry */; 504 | targetProxy = FAFA37AB81C6223AB5CCCE1EA1C015AB /* PBXContainerItemProxy */; 505 | }; 506 | 631FABD950258123BB1E8C090AA0E14D /* PBXTargetDependency */ = { 507 | isa = PBXTargetDependency; 508 | name = Masonry; 509 | target = 1BF9697D56FFBBB178891A745B33F9D8 /* Masonry */; 510 | targetProxy = 746241A444896EAB922E533D40832AAB /* PBXContainerItemProxy */; 511 | }; 512 | 8CC220DA3E1336DE6CFC92ACBCD0CA2C /* PBXTargetDependency */ = { 513 | isa = PBXTargetDependency; 514 | name = GCXSteppedSlider; 515 | target = 1BED6D6CFA31E898AF714AB9C96AE9D6 /* GCXSteppedSlider */; 516 | targetProxy = 1950169F4A5055346B5F44AE1CE80DAF /* PBXContainerItemProxy */; 517 | }; 518 | /* End PBXTargetDependency section */ 519 | 520 | /* Begin XCBuildConfiguration section */ 521 | 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */ = { 522 | isa = XCBuildConfiguration; 523 | buildSettings = { 524 | ALWAYS_SEARCH_USER_PATHS = NO; 525 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 526 | CLANG_CXX_LIBRARY = "libc++"; 527 | CLANG_ENABLE_MODULES = YES; 528 | CLANG_ENABLE_OBJC_ARC = YES; 529 | CLANG_WARN_BOOL_CONVERSION = YES; 530 | CLANG_WARN_CONSTANT_CONVERSION = YES; 531 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 532 | CLANG_WARN_EMPTY_BODY = YES; 533 | CLANG_WARN_ENUM_CONVERSION = YES; 534 | CLANG_WARN_INT_CONVERSION = YES; 535 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 536 | CLANG_WARN_UNREACHABLE_CODE = YES; 537 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 538 | COPY_PHASE_STRIP = YES; 539 | ENABLE_NS_ASSERTIONS = NO; 540 | GCC_C_LANGUAGE_STANDARD = gnu99; 541 | GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; 542 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 543 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 544 | GCC_WARN_UNDECLARED_SELECTOR = YES; 545 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 546 | GCC_WARN_UNUSED_FUNCTION = YES; 547 | GCC_WARN_UNUSED_VARIABLE = YES; 548 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 549 | STRIP_INSTALLED_PRODUCT = NO; 550 | SYMROOT = "${SRCROOT}/../build"; 551 | VALIDATE_PRODUCT = YES; 552 | }; 553 | name = Release; 554 | }; 555 | 1A2483C37B107FDE8EC82F5351AD6A83 /* Debug */ = { 556 | isa = XCBuildConfiguration; 557 | baseConfigurationReference = 28903DE39691E1CE096F67A67FC9D68F /* Pods-GCXSteppedSlider_Example.debug.xcconfig */; 558 | buildSettings = { 559 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 560 | CURRENT_PROJECT_VERSION = 1; 561 | DEFINES_MODULE = YES; 562 | DYLIB_COMPATIBILITY_VERSION = 1; 563 | DYLIB_CURRENT_VERSION = 1; 564 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 565 | ENABLE_STRICT_OBJC_MSGSEND = YES; 566 | INFOPLIST_FILE = "Target Support Files/Pods-GCXSteppedSlider_Example/Info.plist"; 567 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 568 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 569 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 570 | MACH_O_TYPE = staticlib; 571 | MODULEMAP_FILE = "Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.modulemap"; 572 | MTL_ENABLE_DEBUG_INFO = YES; 573 | OTHER_LDFLAGS = ""; 574 | OTHER_LIBTOOLFLAGS = ""; 575 | PODS_ROOT = "$(SRCROOT)"; 576 | PRODUCT_NAME = Pods_GCXSteppedSlider_Example; 577 | SDKROOT = iphoneos; 578 | SKIP_INSTALL = YES; 579 | TARGETED_DEVICE_FAMILY = "1,2"; 580 | VERSIONING_SYSTEM = "apple-generic"; 581 | VERSION_INFO_PREFIX = ""; 582 | }; 583 | name = Debug; 584 | }; 585 | 34EC6BA6A57AD28B6CDAE395B09FD246 /* Release */ = { 586 | isa = XCBuildConfiguration; 587 | baseConfigurationReference = D0DF912E515FE2CCB255D6A9AC1CFF04 /* GCXSteppedSlider.xcconfig */; 588 | buildSettings = { 589 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 590 | CURRENT_PROJECT_VERSION = 1; 591 | DEFINES_MODULE = YES; 592 | DYLIB_COMPATIBILITY_VERSION = 1; 593 | DYLIB_CURRENT_VERSION = 1; 594 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 595 | ENABLE_STRICT_OBJC_MSGSEND = YES; 596 | GCC_PREFIX_HEADER = "Target Support Files/GCXSteppedSlider/GCXSteppedSlider-prefix.pch"; 597 | INFOPLIST_FILE = "Target Support Files/GCXSteppedSlider/Info.plist"; 598 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 599 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 600 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 601 | MODULEMAP_FILE = "Target Support Files/GCXSteppedSlider/GCXSteppedSlider.modulemap"; 602 | MTL_ENABLE_DEBUG_INFO = NO; 603 | PRODUCT_NAME = GCXSteppedSlider; 604 | SDKROOT = iphoneos; 605 | SKIP_INSTALL = YES; 606 | TARGETED_DEVICE_FAMILY = "1,2"; 607 | VERSIONING_SYSTEM = "apple-generic"; 608 | VERSION_INFO_PREFIX = ""; 609 | }; 610 | name = Release; 611 | }; 612 | 4681BB6209E8545A7F3B6901CF8ACF1E /* Release */ = { 613 | isa = XCBuildConfiguration; 614 | baseConfigurationReference = 61C635FA63B207AC12EA2BD25D894A65 /* Masonry.xcconfig */; 615 | buildSettings = { 616 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 617 | CURRENT_PROJECT_VERSION = 1; 618 | DEFINES_MODULE = YES; 619 | DYLIB_COMPATIBILITY_VERSION = 1; 620 | DYLIB_CURRENT_VERSION = 1; 621 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 622 | ENABLE_STRICT_OBJC_MSGSEND = YES; 623 | GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; 624 | INFOPLIST_FILE = "Target Support Files/Masonry/Info.plist"; 625 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 626 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 627 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 628 | MODULEMAP_FILE = "Target Support Files/Masonry/Masonry.modulemap"; 629 | MTL_ENABLE_DEBUG_INFO = NO; 630 | PRODUCT_NAME = Masonry; 631 | SDKROOT = iphoneos; 632 | SKIP_INSTALL = YES; 633 | TARGETED_DEVICE_FAMILY = "1,2"; 634 | VERSIONING_SYSTEM = "apple-generic"; 635 | VERSION_INFO_PREFIX = ""; 636 | }; 637 | name = Release; 638 | }; 639 | 552D02D5BA751AC2E8790D2811D496CA /* Debug */ = { 640 | isa = XCBuildConfiguration; 641 | buildSettings = { 642 | ALWAYS_SEARCH_USER_PATHS = NO; 643 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 644 | CLANG_CXX_LIBRARY = "libc++"; 645 | CLANG_ENABLE_MODULES = YES; 646 | CLANG_ENABLE_OBJC_ARC = YES; 647 | CLANG_WARN_BOOL_CONVERSION = YES; 648 | CLANG_WARN_CONSTANT_CONVERSION = YES; 649 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 650 | CLANG_WARN_EMPTY_BODY = YES; 651 | CLANG_WARN_ENUM_CONVERSION = YES; 652 | CLANG_WARN_INT_CONVERSION = YES; 653 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 654 | CLANG_WARN_UNREACHABLE_CODE = YES; 655 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 656 | COPY_PHASE_STRIP = NO; 657 | GCC_C_LANGUAGE_STANDARD = gnu99; 658 | GCC_DYNAMIC_NO_PIC = NO; 659 | GCC_OPTIMIZATION_LEVEL = 0; 660 | GCC_PREPROCESSOR_DEFINITIONS = ( 661 | "DEBUG=1", 662 | "$(inherited)", 663 | ); 664 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 665 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 666 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 667 | GCC_WARN_UNDECLARED_SELECTOR = YES; 668 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 669 | GCC_WARN_UNUSED_FUNCTION = YES; 670 | GCC_WARN_UNUSED_VARIABLE = YES; 671 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 672 | ONLY_ACTIVE_ARCH = YES; 673 | STRIP_INSTALLED_PRODUCT = NO; 674 | SYMROOT = "${SRCROOT}/../build"; 675 | }; 676 | name = Debug; 677 | }; 678 | 9605B8BCFF5EBBB2495A7C21D65D6D6B /* Debug */ = { 679 | isa = XCBuildConfiguration; 680 | baseConfigurationReference = 61C635FA63B207AC12EA2BD25D894A65 /* Masonry.xcconfig */; 681 | buildSettings = { 682 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 683 | CURRENT_PROJECT_VERSION = 1; 684 | DEFINES_MODULE = YES; 685 | DYLIB_COMPATIBILITY_VERSION = 1; 686 | DYLIB_CURRENT_VERSION = 1; 687 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 688 | ENABLE_STRICT_OBJC_MSGSEND = YES; 689 | GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; 690 | INFOPLIST_FILE = "Target Support Files/Masonry/Info.plist"; 691 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 692 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 693 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 694 | MODULEMAP_FILE = "Target Support Files/Masonry/Masonry.modulemap"; 695 | MTL_ENABLE_DEBUG_INFO = YES; 696 | PRODUCT_NAME = Masonry; 697 | SDKROOT = iphoneos; 698 | SKIP_INSTALL = YES; 699 | TARGETED_DEVICE_FAMILY = "1,2"; 700 | VERSIONING_SYSTEM = "apple-generic"; 701 | VERSION_INFO_PREFIX = ""; 702 | }; 703 | name = Debug; 704 | }; 705 | CCB01089AA374BE03E43E9765A996A6E /* Release */ = { 706 | isa = XCBuildConfiguration; 707 | baseConfigurationReference = F50B878A4A62640B787145D3CD3D27F8 /* Pods-GCXSteppedSlider_Example.release.xcconfig */; 708 | buildSettings = { 709 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 710 | CURRENT_PROJECT_VERSION = 1; 711 | DEFINES_MODULE = YES; 712 | DYLIB_COMPATIBILITY_VERSION = 1; 713 | DYLIB_CURRENT_VERSION = 1; 714 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 715 | ENABLE_STRICT_OBJC_MSGSEND = YES; 716 | INFOPLIST_FILE = "Target Support Files/Pods-GCXSteppedSlider_Example/Info.plist"; 717 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 718 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 719 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 720 | MACH_O_TYPE = staticlib; 721 | MODULEMAP_FILE = "Target Support Files/Pods-GCXSteppedSlider_Example/Pods-GCXSteppedSlider_Example.modulemap"; 722 | MTL_ENABLE_DEBUG_INFO = NO; 723 | OTHER_LDFLAGS = ""; 724 | OTHER_LIBTOOLFLAGS = ""; 725 | PODS_ROOT = "$(SRCROOT)"; 726 | PRODUCT_NAME = Pods_GCXSteppedSlider_Example; 727 | SDKROOT = iphoneos; 728 | SKIP_INSTALL = YES; 729 | TARGETED_DEVICE_FAMILY = "1,2"; 730 | VERSIONING_SYSTEM = "apple-generic"; 731 | VERSION_INFO_PREFIX = ""; 732 | }; 733 | name = Release; 734 | }; 735 | E19E5339204ACA530F328384ED89261D /* Debug */ = { 736 | isa = XCBuildConfiguration; 737 | baseConfigurationReference = D0DF912E515FE2CCB255D6A9AC1CFF04 /* GCXSteppedSlider.xcconfig */; 738 | buildSettings = { 739 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 740 | CURRENT_PROJECT_VERSION = 1; 741 | DEFINES_MODULE = YES; 742 | DYLIB_COMPATIBILITY_VERSION = 1; 743 | DYLIB_CURRENT_VERSION = 1; 744 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 745 | ENABLE_STRICT_OBJC_MSGSEND = YES; 746 | GCC_PREFIX_HEADER = "Target Support Files/GCXSteppedSlider/GCXSteppedSlider-prefix.pch"; 747 | INFOPLIST_FILE = "Target Support Files/GCXSteppedSlider/Info.plist"; 748 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 749 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 750 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 751 | MODULEMAP_FILE = "Target Support Files/GCXSteppedSlider/GCXSteppedSlider.modulemap"; 752 | MTL_ENABLE_DEBUG_INFO = YES; 753 | PRODUCT_NAME = GCXSteppedSlider; 754 | SDKROOT = iphoneos; 755 | SKIP_INSTALL = YES; 756 | TARGETED_DEVICE_FAMILY = "1,2"; 757 | VERSIONING_SYSTEM = "apple-generic"; 758 | VERSION_INFO_PREFIX = ""; 759 | }; 760 | name = Debug; 761 | }; 762 | /* End XCBuildConfiguration section */ 763 | 764 | /* Begin XCConfigurationList section */ 765 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 766 | isa = XCConfigurationList; 767 | buildConfigurations = ( 768 | 552D02D5BA751AC2E8790D2811D496CA /* Debug */, 769 | 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */, 770 | ); 771 | defaultConfigurationIsVisible = 0; 772 | defaultConfigurationName = Release; 773 | }; 774 | 2EAD1373A0CF4140091AEB37B98BD15F /* Build configuration list for PBXNativeTarget "GCXSteppedSlider" */ = { 775 | isa = XCConfigurationList; 776 | buildConfigurations = ( 777 | E19E5339204ACA530F328384ED89261D /* Debug */, 778 | 34EC6BA6A57AD28B6CDAE395B09FD246 /* Release */, 779 | ); 780 | defaultConfigurationIsVisible = 0; 781 | defaultConfigurationName = Release; 782 | }; 783 | F1A604A77D0EE7F64B5984F6702921F6 /* Build configuration list for PBXNativeTarget "Pods-GCXSteppedSlider_Example" */ = { 784 | isa = XCConfigurationList; 785 | buildConfigurations = ( 786 | 1A2483C37B107FDE8EC82F5351AD6A83 /* Debug */, 787 | CCB01089AA374BE03E43E9765A996A6E /* Release */, 788 | ); 789 | defaultConfigurationIsVisible = 0; 790 | defaultConfigurationName = Release; 791 | }; 792 | F802B0C3855BA72DAAF88804F439C8BC /* Build configuration list for PBXNativeTarget "Masonry" */ = { 793 | isa = XCConfigurationList; 794 | buildConfigurations = ( 795 | 9605B8BCFF5EBBB2495A7C21D65D6D6B /* Debug */, 796 | 4681BB6209E8545A7F3B6901CF8ACF1E /* Release */, 797 | ); 798 | defaultConfigurationIsVisible = 0; 799 | defaultConfigurationName = Release; 800 | }; 801 | /* End XCConfigurationList section */ 802 | }; 803 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 804 | } 805 | --------------------------------------------------------------------------------