├── Pod ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── ViewTransitions │ ├── CrossFadeViewTransition.swift │ └── PopViewTransition.swift │ ├── SimpleTabBar.swift │ ├── SimpleTabBarController.swift │ ├── TabBarStyles │ ├── ElegantTabBarStyle.swift │ ├── PopTabBarStyle.swift │ └── SimpleTabBarStyle.swift │ └── SimpleTabBarItem.swift ├── _Pods.xcodeproj ├── Screenshots ├── simpletab1.gif ├── simpletab2.gif └── SimpleTabLogo.png ├── Example ├── Pods │ ├── Target Support Files │ │ ├── SimpleTab │ │ │ ├── SimpleTab-prefix.pch │ │ │ ├── SimpleTab.modulemap │ │ │ ├── SimpleTab-dummy.m │ │ │ ├── SimpleTab-umbrella.h │ │ │ ├── SimpleTab.xcconfig │ │ │ ├── ResourceBundle-SimpleTab-Info.plist │ │ │ └── Info.plist │ │ ├── Pods-SimpleTab_Tests │ │ │ ├── Pods-SimpleTab_Tests.modulemap │ │ │ ├── Pods-SimpleTab_Tests-dummy.m │ │ │ ├── Pods-SimpleTab_Tests-umbrella.h │ │ │ ├── Pods-SimpleTab_Tests.debug.xcconfig │ │ │ ├── Pods-SimpleTab_Tests.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-SimpleTab_Tests-acknowledgements.markdown │ │ │ ├── Pods-SimpleTab_Tests-acknowledgements.plist │ │ │ ├── Pods-SimpleTab_Tests-frameworks.sh │ │ │ └── Pods-SimpleTab_Tests-resources.sh │ │ └── Pods-SimpleTab_Example │ │ │ ├── Pods-SimpleTab_Example.modulemap │ │ │ ├── Pods-SimpleTab_Example-dummy.m │ │ │ ├── Pods-SimpleTab_Example-umbrella.h │ │ │ ├── Pods-SimpleTab_Example.debug.xcconfig │ │ │ ├── Pods-SimpleTab_Example.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-SimpleTab_Example-acknowledgements.markdown │ │ │ ├── Pods-SimpleTab_Example-acknowledgements.plist │ │ │ ├── Pods-SimpleTab_Example-frameworks.sh │ │ │ └── Pods-SimpleTab_Example-resources.sh │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── SimpleTab.podspec.json │ └── Pods.xcodeproj │ │ └── project.pbxproj ├── SimpleTab │ ├── Images.xcassets │ │ ├── Person.imageset │ │ │ ├── Person.png │ │ │ └── Contents.json │ │ ├── SimpleLogoiOS.imageset │ │ │ ├── SimpleLogoiOS.png │ │ │ └── Contents.json │ │ ├── TabBarIcons │ │ │ ├── Home-32.imageset │ │ │ │ ├── Home-32.png │ │ │ │ └── Contents.json │ │ │ ├── Home-50.imageset │ │ │ │ ├── Home-50.png │ │ │ │ └── Contents.json │ │ │ ├── User-32.imageset │ │ │ │ ├── User-32.png │ │ │ │ └── Contents.json │ │ │ ├── User-50.imageset │ │ │ │ ├── User-50.png │ │ │ │ └── Contents.json │ │ │ ├── Search-32.imageset │ │ │ │ ├── Search-32.png │ │ │ │ └── Contents.json │ │ │ ├── MessageGroup-32.imageset │ │ │ │ ├── MessageGroup-32.png │ │ │ │ └── Contents.json │ │ │ └── MessageGroup-50.imageset │ │ │ │ ├── MessageGroup-50.png │ │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ └── AppDelegate.swift ├── SimpleTab.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── SimpleTab-Example.xcscheme │ └── project.pbxproj ├── Podfile ├── SimpleTab.xcworkspace │ └── contents.xcworkspacedata ├── Podfile.lock └── Tests │ ├── Info.plist │ └── Tests.swift ├── .travis.yml ├── .gitignore ├── LICENSE ├── SimpleTab.podspec ├── README.md └── customizations.md /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Pod/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Screenshots/simpletab1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Screenshots/simpletab1.gif -------------------------------------------------------------------------------- /Screenshots/simpletab2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Screenshots/simpletab2.gif -------------------------------------------------------------------------------- /Screenshots/SimpleTabLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Screenshots/SimpleTabLogo.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/SimpleTab-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/Person.imageset/Person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/Person.imageset/Person.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/SimpleTab.modulemap: -------------------------------------------------------------------------------- 1 | framework module SimpleTab { 2 | umbrella header "SimpleTab-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/SimpleLogoiOS.imageset/SimpleLogoiOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/SimpleLogoiOS.imageset/SimpleLogoiOS.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Home-32.imageset/Home-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/Home-32.imageset/Home-32.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Home-50.imageset/Home-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/Home-50.imageset/Home-50.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/User-32.imageset/User-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/User-32.imageset/User-32.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/User-50.imageset/User-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/User-50.imageset/User-50.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/SimpleTab-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SimpleTab : NSObject 3 | @end 4 | @implementation PodsDummy_SimpleTab 5 | @end 6 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Search-32.imageset/Search-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/Search-32.imageset/Search-32.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-32.imageset/MessageGroup-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-32.imageset/MessageGroup-32.png -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-50.imageset/MessageGroup-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azfx/SimpleTab/HEAD/Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-50.imageset/MessageGroup-50.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimpleTab_Tests { 2 | umbrella header "Pods-SimpleTab_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimpleTab_Example { 2 | umbrella header "Pods-SimpleTab_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimpleTab_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimpleTab_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimpleTab_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimpleTab_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/SimpleTab.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/SimpleTab-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double SimpleTabVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char SimpleTabVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | use_frameworks! 3 | 4 | target 'SimpleTab_Example' do 5 | pod "SimpleTab", :path => "../" 6 | end 7 | 8 | target 'SimpleTab_Tests' do 9 | pod "SimpleTab", :path => "../" 10 | 11 | 12 | end 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_SimpleTab_TestsVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_SimpleTab_TestsVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/Person.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Person.png" 7 | } 8 | ], 9 | "info" : { 10 | "version" : 1, 11 | "author" : "xcode" 12 | } 13 | } -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_SimpleTab_ExampleVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_SimpleTab_ExampleVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/SimpleLogoiOS.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "SimpleLogoiOS.png" 7 | } 8 | ], 9 | "info" : { 10 | "version" : 1, 11 | "author" : "xcode" 12 | } 13 | } -------------------------------------------------------------------------------- /Example/SimpleTab.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SimpleTab (0.1.1) 3 | 4 | DEPENDENCIES: 5 | - SimpleTab (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | SimpleTab: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | SimpleTab: 4e490e339a19d0d1d26c0fa3c862188eaad73ecb 13 | 14 | PODFILE CHECKSUM: a229e10db70880624b9026e377226f23908aecf9 15 | 16 | COCOAPODS: 1.1.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SimpleTab (0.1.1) 3 | 4 | DEPENDENCIES: 5 | - SimpleTab (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | SimpleTab: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | SimpleTab: 4e490e339a19d0d1d26c0fa3c862188eaad73ecb 13 | 14 | PODFILE CHECKSUM: a229e10db70880624b9026e377226f23908aecf9 15 | 16 | COCOAPODS: 1.1.1 17 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Home-32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Home-32.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Home-50.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Home-50.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/User-32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-32.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/User-50.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-50.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/Search-32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Search-32.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "MessageGroup-32.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/TabBarIcons/MessageGroup-50.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "MessageGroup-50.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/SimpleTab.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SimpleTab 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | language: objective-c 6 | # cache: cocoapods 7 | # podfile: Example/Podfile 8 | # before_install: 9 | # - gem install cocoapods # Since Travis is not always on latest version 10 | # - pod install --project-directory=Example 11 | install: 12 | - gem install xcpretty --no-rdoc --no-ri --no-document --quiet 13 | script: 14 | - set -o pipefail && xcodebuild test -workspace Example/SimpleTab.xcworkspace -scheme SimpleTab-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -c 15 | - pod lib lint --quick 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab/SimpleTab.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SimpleTab" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab/SimpleTab.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SimpleTab" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab/SimpleTab.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SimpleTab" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleTab/SimpleTab.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SimpleTab" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/SimpleTab/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/SimpleTab.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleTab", 3 | "version": "0.1.1", 4 | "summary": "A Simple iOS Tab Bar Controller with animation support.", 5 | "description": "SimpleTab is a simple tab bar controller for iOS 8 and above, which extends the default UITabBarController class with customization support for :\n* Tab Item Custom UI\n* Tab Item Animations\n* View Transitions", 6 | "homepage": "https://github.com/azfx/SimpleTab", 7 | "license": "MIT", 8 | "authors": { 9 | "azfx": "abdul.zalil@gmail.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/azfx/SimpleTab.git", 13 | "tag": "0.1.1" 14 | }, 15 | "platforms": { 16 | "ios": "8.0" 17 | }, 18 | "requires_arc": true, 19 | "source_files": "Pod/Classes/**/*", 20 | "resource_bundles": { 21 | "SimpleTab": [ 22 | "Pod/Assets/*.png" 23 | ] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/ResourceBundle-SimpleTab-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.1.1 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import XCTest 3 | import SimpleTab 4 | 5 | class Tests: XCTestCase { 6 | 7 | override func setUp() { 8 | super.setUp() 9 | // Put setup code here. This method is called before the invocation of each test method in the class. 10 | } 11 | 12 | override func tearDown() { 13 | // Put teardown code here. This method is called after the invocation of each test method in the class. 14 | super.tearDown() 15 | } 16 | 17 | func testExample() { 18 | // This is an example of a functional test case. 19 | XCTAssert(true, "Pass") 20 | } 21 | 22 | func testPerformanceExample() { 23 | // This is an example of a performance test case. 24 | self.measure() { 25 | // Put the code you want to measure the time of here. 26 | } 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleTab/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | 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) 2015 azfx 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 | -------------------------------------------------------------------------------- /SimpleTab.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint SimpleTab.podspec' to ensure this is a 3 | # valid spec and remove all comments before submitting the spec. 4 | # 5 | # Any lines starting with a # are optional, but encouraged 6 | # 7 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 8 | # 9 | 10 | Pod::Spec.new do |s| 11 | s.name = "SimpleTab" 12 | s.version = "0.2.1" 13 | s.summary = "A Simple iOS Tab Bar Controller with animation support." 14 | s.description = <<-DESC 15 | SimpleTab is a simple tab bar controller for iOS 8 and above, which extends the default UITabBarController class with customization support for : 16 | * Tab Item Custom UI 17 | * Tab Item Animations 18 | * View Transitions 19 | DESC 20 | s.homepage = "https://github.com/azfx/SimpleTab" 21 | s.license = 'MIT' 22 | s.author = { "azfx" => "abdul.zalil@gmail.com" } 23 | s.source = { :git => "https://github.com/azfx/SimpleTab.git", :tag => s.version.to_s } 24 | 25 | s.platform = :ios, '8.0' 26 | s.requires_arc = true 27 | 28 | s.source_files = 'Pod/Classes/**/*' 29 | 30 | end 31 | -------------------------------------------------------------------------------- /Example/SimpleTab/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SimpleTab 5 | 6 | Copyright (c) 2015 azfx 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 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SimpleTab 5 | 6 | Copyright (c) 2015 azfx 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 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/SimpleTab/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // SimpleTab 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 28 | 29 | class ViewController: UIViewController { 30 | 31 | override func viewDidLoad() { 32 | super.viewDidLoad() 33 | // Do any additional setup after loading the view, typically from a nib. 34 | } 35 | 36 | override func didReceiveMemoryWarning() { 37 | super.didReceiveMemoryWarning() 38 | // Dispose of any resources that can be recreated. 39 | } 40 | 41 | } 42 | 43 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_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) 2015 azfx <abdul.zalil@gmail.com> 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 | License 38 | MIT 39 | Title 40 | SimpleTab 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-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) 2015 azfx <abdul.zalil@gmail.com> 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 | License 38 | MIT 39 | Title 40 | SimpleTab 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Pod/Classes/ViewTransitions/CrossFadeViewTransition.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleTabBarCrossDissolve.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | 28 | open class CrossFadeViewTransition: NSObject, UIViewControllerAnimatedTransitioning { 29 | 30 | var duration:TimeInterval = 0.33 31 | 32 | open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { 33 | 34 | _ = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from) 35 | let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)! 36 | 37 | transitionContext.containerView.addSubview(toViewController.view) 38 | toViewController.view.alpha = 0.0 39 | 40 | UIView.animate(withDuration: 0.35, animations: { 41 | toViewController.view.alpha = 1.0 42 | }, completion: { (finished) in 43 | transitionContext.completeTransition(!transitionContext.transitionWasCancelled) 44 | }) 45 | } 46 | 47 | open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { 48 | 49 | return self.duration 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Pod/Classes/ViewTransitions/PopViewTransition.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PopViewTransitionManager.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import Foundation 27 | import UIKit 28 | 29 | open class PopViewTransition: NSObject, UIViewControllerAnimatedTransitioning { 30 | 31 | var duration:TimeInterval = 0.33 32 | 33 | open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { 34 | 35 | let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)! 36 | 37 | transitionContext.containerView.addSubview(toViewController.view) 38 | toViewController.view.alpha = 0.0 39 | 40 | 41 | UIView.animate(withDuration: 0.35, animations: { () -> Void in 42 | toViewController.view.transform = CGAffineTransform(scaleX: 1.1, y: 1.1) 43 | toViewController.view.alpha = 1.0 44 | }, completion: { (finished) -> Void in 45 | 46 | UIView.animate(withDuration: 0.2, animations: { () -> Void in 47 | toViewController.view.transform = CGAffineTransform.identity 48 | }, completion: { (finished) -> Void in 49 | transitionContext.completeTransition(!transitionContext.transitionWasCancelled) 50 | }) 51 | }) 52 | } 53 | 54 | open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { 55 | 56 | return self.duration 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Pod/Classes/SimpleTabBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleTabBar.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 28 | 29 | open class SimpleTabBar: UITabBar , UITabBarControllerDelegate { 30 | 31 | ///View Controller Transitioning Object 32 | open var transitionObject:UIViewControllerAnimatedTransitioning? 33 | 34 | ///Keep track of tab bar items 35 | open var barItems:[SimpleTabBarItem] = [] 36 | 37 | ///Tab Bar Style ( with tab switching animations ) to be used 38 | open var tabBarStyle:SimpleTabBarStyle? 39 | 40 | ///Handle to the parent tab bar controller 41 | open var tabBarCtrl:SimpleTabBarController? 42 | 43 | ///Index to tab bar item which just got unselected 44 | open var deselectedIndex:Int? 45 | 46 | ///Selected Index - Trigger animate function in the associated style object whenever changed. 47 | open var selectedIndex:Int = 0 { 48 | didSet { 49 | self.deselectedIndex = oldValue 50 | if let style = self.tabBarStyle { 51 | if oldValue != self.selectedIndex { 52 | style.animateTabTransition(tabBar: self, toIndex: self.selectedIndex, fromIndex: self.deselectedIndex!) 53 | } 54 | } 55 | } 56 | } 57 | 58 | override open func layoutSubviews() { 59 | super.layoutSubviews() 60 | self.tabBarStyle!.refresh() 61 | } 62 | 63 | //MARK: - UITabBarControllerDelegate Implementation 64 | 65 | open func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 66 | self.selectedIndex = tabBarController.selectedIndex 67 | } 68 | 69 | 70 | open func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { 71 | return self.transitionObject 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /Pod/Classes/SimpleTabBarController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleTabBarController.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | 28 | open class SimpleTabBarController: UITabBarController { 29 | 30 | var _tabBar:SimpleTabBar? 31 | 32 | ///Tab Bar Component 33 | override open var tabBar:SimpleTabBar { 34 | get { 35 | return super.tabBar as! SimpleTabBar 36 | } 37 | set { 38 | 39 | } 40 | } 41 | 42 | ///View Transitioning Object 43 | open var viewTransition:UIViewControllerAnimatedTransitioning? { 44 | didSet { 45 | tabBar.transitionObject = self.viewTransition 46 | } 47 | } 48 | 49 | ///Tab Bar Style ( with animation control for tab switching ) 50 | open var tabBarStyle:SimpleTabBarStyle? { 51 | didSet { 52 | self.tabBarStyle?.refresh() 53 | } 54 | } 55 | 56 | /** 57 | Set or Get Selected Index 58 | */ 59 | override open var selectedIndex:Int { 60 | get { 61 | return super.selectedIndex 62 | } 63 | set { 64 | super.selectedIndex = newValue 65 | self.tabBar.selectedIndex = newValue 66 | } 67 | } 68 | 69 | override open func viewWillAppear(_ animated: Bool) { 70 | super.viewWillAppear(animated) 71 | 72 | //Initial setup 73 | tabBar.selectedIndex = self.selectedIndex 74 | tabBar.transitionObject = self.viewTransition ?? CrossFadeViewTransition() 75 | tabBar.tabBarStyle = self.tabBarStyle ?? ElegantTabBarStyle(tabBar: tabBar) 76 | tabBar.tabBarCtrl = self 77 | self.delegate = tabBar 78 | 79 | //Let the style object know when things are loaded 80 | self.tabBarStyle?.tabBarCtrlLoaded(tabBarCtrl: self, tabBar: tabBar, selectedIndex: tabBar.selectedIndex) 81 | 82 | } 83 | 84 | override open func didReceiveMemoryWarning() { 85 | super.didReceiveMemoryWarning() 86 | // Dispose of any resources that can be recreated. 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /Example/SimpleTab/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-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="${TARGET_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} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --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 "$BUILT_PRODUCTS_DIR/SimpleTab/SimpleTab.framework" 88 | fi 89 | if [[ "$CONFIGURATION" == "Release" ]]; then 90 | install_framework "$BUILT_PRODUCTS_DIR/SimpleTab/SimpleTab.framework" 91 | fi 92 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_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="${TARGET_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} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --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 "$BUILT_PRODUCTS_DIR/SimpleTab/SimpleTab.framework" 88 | fi 89 | if [[ "$CONFIGURATION" == "Release" ]]; then 90 | install_framework "$BUILT_PRODUCTS_DIR/SimpleTab/SimpleTab.framework" 91 | fi 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![image](./Screenshots/SimpleTabLogo.png) 2 | 3 | [![CI Status](http://img.shields.io/travis/azfx/SimpleTab.svg?style=flat)](https://travis-ci.org/azfx/SimpleTab) 4 | [![Version](https://img.shields.io/cocoapods/v/SimpleTab.svg?style=flat)](http://cocoapods.org/pods/SimpleTab) 5 | [![License](https://img.shields.io/cocoapods/l/SimpleTab.svg?style=flat)](http://cocoapods.org/pods/SimpleTab) 6 | [![Platform](https://img.shields.io/cocoapods/p/SimpleTab.svg?style=flat)](http://cocoapods.org/pods/SimpleTab) 7 | 8 | ## About 9 | . |. 10 | :-------------------------:|:-------------------------: 11 | ![image](./Screenshots/simpletab1.gif) | ![image](./Screenshots/simpletab2.gif) 12 | 13 | SimpleTab provides an easy alternative to the default UITabBarController with following support : 14 | 15 | * Custom UI for Tab Bar Item 16 | * Custom Tab Bar Item Animations on Tab Switching 17 | * Custom View Transitions on Tab Switching 18 | 19 | SimpleTab is developed with following principles : 20 | 21 | * Simple - Easy to use and revert 22 | * Keep the wheel - Utilize core features of UITabBarController 23 | * Flexible - Provide hooks to customize UI and Animations 24 | 25 | ### Note: At the moment, SimpleTab does not work when instantiated programmatically. It must be used along with UITabBarController set in Interface Builder. 26 | 27 | ## Demo 28 | 29 | The included example project demonstrates the usage of SimpleTab 30 | 31 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 32 | 33 | ## Requirements 34 | 35 | * iOS 8.0+ 36 | * ARC 37 | 38 | ## Installation 39 | 40 | SimpleTab is available through [CocoaPods](http://cocoapods.org). To install 41 | it, simply add the following line to your Podfile: 42 | 43 | ```ruby 44 | pod "SimpleTab" 45 | ``` 46 | 47 | > Note: SimpleTab now supports Swift 3.X starting 0.2.0 version. 48 | 49 | ## Getting Started 50 | 51 | 1.0 Import SimpleTab Framework to your Project 52 | 53 | ```swift 54 | #import SimpleTab 55 | ``` 56 | 57 | 2.0 Using Interface Builder, ensure : 58 | 59 | * Tab Bar Controller is set as `SimpleTabBarController` 60 | * Tab Bar is set as `SimpleTabBar` 61 | * Tab Bar Item is set as `SimpleTabBarITem` 62 | 63 | 3.0 Get Handle to Tab Bar Controller, preferably in AppDelegate 64 | 65 | ```swift 66 | simpleTBC = self.window!.rootViewController as? SimpleTabBarController 67 | ``` 68 | 69 | 4.0 Set View Transition 70 | >Included Animations 71 | > 72 | * PopViewTransition 73 | * CrossFadeTransition 74 | 75 | ```swift 76 | simpleTBC?.viewTransition = PopViewTransition() 77 | ``` 78 | 79 | 5.0 Set Tab Bar Style 80 | 81 | >Included Styles 82 | > 83 | * PopTabBarStyle 84 | * ElegantTabBarStyle 85 | 86 | 87 | ```swift 88 | var style:SimpleTabBarStyle = PopTabBarStyle(tabBar: simpleTBC!.tabBar) 89 | ``` 90 | 91 | 5.1 Optional - Set Tab Title attributes for selected and unselected (normal) states. 92 | Or use Tint Color in the Interface Builder to set the states 93 | 94 | ```swift 95 | style.setTitleTextAttributes([NSFontAttributeName : UIFont.systemFontOfSize(14), NSForegroundColorAttributeName: UIColor.lightGrayColor()], forState: .Normal) 96 | style.setTitleTextAttributes([NSFontAttributeName : UIFont.systemFontOfSize(14),NSForegroundColorAttributeName: colorWithHexString("4CB6BE")], forState: .Selected) 97 | ``` 98 | 99 | 5.2 Optional - Set Tab Icon colors for selected and unselected (normal) states. 100 | Or use the App tint color to set the states 101 | 102 | ```swift 103 | style.setIconColor(UIColor.lightGrayColor(), forState: UIControlState.Normal) 104 | style.setIconColor(UIColor.blueColor(), forState: UIControlState.Selected) 105 | ``` 106 | 107 | 6.0 And finally, let Tab Bar Controller know of the style in use 108 | 109 | ```swift 110 | simpleTBC?.tabBarStyle = style 111 | ``` 112 | 113 | ## Customizations 114 | Refer [customizations](./customizations.md) 115 | 116 | ## Author 117 | 118 | azfx, abdul.zalil@gmail.com 119 | 120 | ## License 121 | 122 | SimpleTab is available under the MIT license. See the LICENSE file for more info. 123 | -------------------------------------------------------------------------------- /Pod/Classes/TabBarStyles/ElegantTabBarStyle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JumpingSimpleTabBarStyle.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | 28 | open class ElegantTabBarStyle: SimpleTabBarStyle { 29 | 30 | open var selectorView:UIView = UIView() 31 | open var selectorHeight:CGFloat = 5 32 | open var selectorSideInsets:CGFloat = 10 33 | open var selectorColor:UIColor? 34 | 35 | override open func tabBarCtrlLoaded(tabBarCtrl: SimpleTabBarController, tabBar: SimpleTabBar, selectedIndex: Int) { 36 | 37 | //Setup a selection indicator view 38 | let selectedItemFrame:CGRect = tabBar.barItems[selectedIndex].frame 39 | let insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 40 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 41 | self.selectorColor = self.iconColors[UIControlState.selected.rawValue] 42 | self.selectorView.backgroundColor = self.selectorColor 43 | 44 | tabBar.addSubview(selectorView) 45 | 46 | } 47 | 48 | 49 | 50 | override open func refresh() { 51 | super.refresh() 52 | 53 | //Keep layout intact during orientation change etc 54 | let selectedItemFrame:CGRect = tabBar!.barItems[tabBar!.selectedIndex].frame 55 | let insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 56 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 57 | 58 | 59 | //Ensure selected bar/tab item state remains during refresh 60 | 61 | let tabBarItem:SimpleTabBarItem = tabBar!.barItems[tabBar!.selectedIndex] 62 | tabBarItem.iconView.frame = tabBarItem.iconView.frame.offsetBy(dx: 0, dy: 10) 63 | tabBarItem.titleLabel.alpha = 0 64 | 65 | } 66 | 67 | override open func animateTabTransition(tabBar: SimpleTabBar, toIndex: Int,fromIndex: Int) { 68 | 69 | let toBarItem:SimpleTabBarItem = tabBar.barItems[toIndex] 70 | let fromBarItem:SimpleTabBarItem = tabBar.barItems[fromIndex] 71 | 72 | UIView.animate(withDuration: 0.5, animations: { () -> Void in 73 | 74 | //Refresh colors as per tab item state 75 | self.refreshColors() 76 | 77 | //Animate selected item to new state 78 | toBarItem.iconView.frame = toBarItem.iconView.frame.offsetBy(dx: 0, dy: 10) 79 | toBarItem.titleLabel.alpha = 0 80 | 81 | //Animate unselected item to its original state 82 | fromBarItem.titleLabel.alpha = 1 83 | fromBarItem.layoutBarItem() 84 | 85 | //Animate selector view under the selected tab item 86 | self.selectorView.frame.origin.x = toBarItem.frame.origin.x + self.selectorSideInsets 87 | 88 | }) 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /customizations.md: -------------------------------------------------------------------------------- 1 | # Customizations 2 | ### Available Properties & Methods 3 | #### SimpleTabBarController 4 | 5 | Set View Transition 6 | * `viewTransition:UIViewControllerAnimatedTransitioning` - Set View Transition 7 | * `tabBarStyle:SimpleTabBarStyle` - Set Tab Bar Style 8 | * `setTitleTextAttributes(attributes:[NSObject:AnyObject] , forState: UIControlState)` - Set Tab Bar Item Title (UILabel) text attributes 9 | * Uses UILabel `attributedText` property behind the scenes 10 | * For Selected, use `UIControl.Selected` state 11 | * For UnSelected, use `UIControl.Normal` state 12 | * `setIconColor(UIColor , forState:UIControlState)` - Set Tab Bar Item Icon Color 13 | * For Selected, use `UIControl.Selected` state 14 | * For UnSelected, use `UIControl.Normal` state 15 | 16 | #### SimpleTabBar 17 | * `barItems:[SimpleTabBarItem]` - Get Array of all Tab Bar Items 18 | * `tabBarStyle:SimpleTabBarStyle` - Get current Tab Bar Style applied 19 | * `tabBarCtrol:SimpleTabBarController` - Get parent Tab Bar Controller 20 | 21 | #### SimpleTabBarItem 22 | * `index:Int` - Get index of Tab Bar Item 23 | * `barItemView:UIView` - Get main UIView container. Icon & Title are its subviews 24 | * `iconView:UIView` - Get icon view container. Tab Bar Icon image is added as its subview 25 | * `titleLabel:UILabel` - Get Tab Bar Title UILabel 26 | 27 | #### SimpleTabBarStyle 28 | * `iconSize:CGSize` - Get or Set Tab Bar Item icon size 29 | * `iconTopOffset:CGFloat` - Get or Set Tab Bar Item icon top offset 30 | * `titleBottomOffset:CGFloat` - Get or Set Tab Bar Item Title UILabel's bottom offset 31 | * `titleHeight` - Get or Set Tab Bar Item Title UILabel's frame height 32 | * `barFrames:[CGRect]` - Get Tab Bar Item default frame values. Useful for animation 33 | 34 | 35 | ### View Transitions 36 | * Implement any custom view transitions conforming to `UIViewControllerAnimatedTransitioning` 37 | * Set custom view transition by `simpleTBC?.viewTransition = NewViewTransition()` 38 | 39 | For examples, checkout [PopViewTransition](Pod/Classes/ViewTransitions/PopViewTransition.swift) and [CrossFadeViewTransition](Pod/Classes/ViewTransitions/CrossFadeViewTransition.swift) 40 | 41 | ### Tab Bar Item Transitions 42 | 43 | * Subclass `SimpleTabBarStyle` 44 | * Override `tabBarCtrlLoaded()` to setup SimpleTabBar and SimpleTabBarItem 45 | 46 | ```swift 47 | override public func tabBarCtrlLoaded(tabBarCtrl: SimpleTabBarController, tabBar: SimpleTabBar, selectedIndex: Int) { 48 | //Setup UI elements to tab bar or tab bar item 49 | 50 | //For example lets, setup a selection indicator view 51 | var selectedItemFrame:CGRect = tabBar.barItems[selectedIndex].frame 52 | var insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 53 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 54 | self.selectorColor = self.iconColors[UIControlState.Selected.rawValue] 55 | self.selectorView.backgroundColor = self.selectorColor 56 | 57 | tabBar.addSubview(selectorView) 58 | } 59 | 60 | ``` 61 | 62 | * override `refresh()` to ensure UI elements retains states and layout during view refresh ( orientation change etc ) 63 | 64 | ```swift 65 | override public func refresh() { 66 | super.refresh() 67 | //Keep layout intact during orientation change etc 68 | 69 | //For example, lets ensure selected bar/tab item state remains during refresh 70 | 71 | //Keep layout intact during orientation change etc 72 | var selectedItemFrame:CGRect = tabBar!.barItems[tabBar!.selectedIndex].frame 73 | var insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 74 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 75 | 76 | .... 77 | } 78 | ``` 79 | 80 | * override `animateTabTransition()` to manage tab bar item transitions 81 | 82 | ```swift 83 | override public func animateTabTransition(tabBar: SimpleTabBar, toIndex: Int,fromIndex: Int) { 84 | 85 | var toBarItem:SimpleTabBarItem = tabBar.barItems[toIndex] 86 | var fromBarItem:SimpleTabBarItem = tabBar.barItems[fromIndex] 87 | 88 | UIView.animateWithDuration(0.5, animations: { () -> Void in 89 | 90 | //Refresh colors as per tab item state 91 | self.refreshColors() 92 | 93 | //Animate selected item to new state 94 | toBarItem.iconView.frame.offset(dx: 0, dy: 10) 95 | toBarItem.titleLabel.alpha = 0 96 | 97 | //Animate unselected item to its original state 98 | fromBarItem.titleLabel.alpha = 1 99 | fromBarItem.layoutBarItem() 100 | 101 | //Animate selector view under the selected tab item 102 | self.selectorView.frame.origin.x = toBarItem.frame.origin.x + self.selectorSideInsets 103 | 104 | }) 105 | } 106 | ``` 107 | -------------------------------------------------------------------------------- /Example/SimpleTab.xcodeproj/xcshareddata/xcschemes/SimpleTab-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 99 | 105 | 106 | 107 | 108 | 110 | 111 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /Pod/Classes/TabBarStyles/PopTabBarStyle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PopTabBarStyle.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | 28 | open class PopTabBarStyle: SimpleTabBarStyle { 29 | 30 | open var selectorView:UIView = UIView() 31 | open var selectorHeight:CGFloat = 5 32 | open var selectorSideInsets:CGFloat = 10 33 | open var selectorColor:UIColor? 34 | 35 | open var step:NSInteger = 0 36 | 37 | override open func tabBarCtrlLoaded(tabBarCtrl: SimpleTabBarController, tabBar: SimpleTabBar, selectedIndex: Int) { 38 | 39 | //Setup a selection indicator view 40 | let selectedItemFrame:CGRect = tabBar.barItems[selectedIndex].frame 41 | let insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 42 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 43 | self.selectorColor = self.iconColors[UIControlState.selected.rawValue] 44 | self.selectorView.backgroundColor = self.selectorColor 45 | 46 | tabBar.addSubview(selectorView) 47 | 48 | } 49 | 50 | 51 | 52 | override open func refresh() { 53 | super.refresh() 54 | 55 | //Ensure selected bar/tab item state remains during refresh 56 | 57 | let selectedItemFrame:CGRect = tabBar!.barItems[tabBar!.selectedIndex].frame 58 | let insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - selectorHeight, selectorSideInsets, 0, selectorSideInsets) 59 | selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 60 | 61 | let tabBarItem:SimpleTabBarItem = tabBar!.barItems[tabBar!.selectedIndex] 62 | tabBarItem.iconView.frame = tabBarItem.iconView.frame.offsetBy(dx: 0, dy: 10) 63 | tabBarItem.titleLabel.alpha = 0 64 | 65 | } 66 | 67 | override open func animateTabTransition(tabBar: SimpleTabBar, toIndex: Int,fromIndex: Int) { 68 | 69 | let toBarItem:SimpleTabBarItem = tabBar.barItems[toIndex] 70 | let fromBarItem:SimpleTabBarItem = tabBar.barItems[fromIndex] 71 | 72 | self.selectorView.frame.origin.x = toBarItem.frame.origin.x + self.selectorSideInsets 73 | self.selectorView.frame = self.selectorView.frame.offsetBy(dx: 0, dy: 10) 74 | 75 | 76 | UIView.animate(withDuration: 0.3, delay: 0.0, options: UIViewAnimationOptions(), animations: { () -> Void in 77 | 78 | //Refresh colors as per tab item state 79 | self.refreshColors() 80 | 81 | toBarItem.iconView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5) 82 | 83 | //Animate selected item to new state 84 | toBarItem.iconView.frame = toBarItem.iconView.frame.offsetBy(dx: 0, dy: 10) 85 | toBarItem.titleLabel.alpha = 0 86 | 87 | //Animate unselected item to its original state 88 | fromBarItem.titleLabel.alpha = 1 89 | fromBarItem.layoutBarItem() 90 | 91 | //Animate selector view under the selected tab item 92 | let selectedItemFrame:CGRect = toBarItem.frame 93 | let insets:UIEdgeInsets = UIEdgeInsetsMake(selectedItemFrame.height - self.selectorHeight, self.selectorSideInsets, 0, self.selectorSideInsets) 94 | self.selectorView.frame = UIEdgeInsetsInsetRect(selectedItemFrame, insets) 95 | 96 | }) { (finish) -> Void in 97 | // 98 | UIView.animate(withDuration: 0.2, animations: { () -> Void in 99 | toBarItem.iconView.transform = CGAffineTransform.identity 100 | }) 101 | } 102 | 103 | } 104 | 105 | } 106 | -------------------------------------------------------------------------------- /Pod/Classes/SimpleTabBarItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleTabBarItem.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | 28 | open class SimpleTabBarItem: UITabBarItem { 29 | 30 | ///Tab bar item frame - update child items when updated 31 | //TODO : Switch to AutoLayout 32 | open var frame:CGRect = CGRect.zero { 33 | didSet { 34 | self.barItemView!.frame = self.frame 35 | self.titleLabel.frame.size.width = self.frame.size.width 36 | } 37 | } 38 | 39 | ///Parent Tab Bar 40 | open var tabBar:SimpleTabBar? 41 | 42 | ///Index of the current tab bar item 43 | open var index:Int? 44 | 45 | ///Main view to hold rest of UI objects 46 | open var barItemView:UIView? 47 | 48 | ///Tab Title 49 | open var tabTitle:String? 50 | 51 | ///Tab Title Label ( below icon ) height 52 | fileprivate var titleHeight:CGFloat? 53 | 54 | ///Tab icon view size 55 | fileprivate var iconSize:CGSize? 56 | 57 | ///Tab icon top offset 58 | fileprivate var iconTopOffset:CGFloat? 59 | 60 | ///Tab title label bottom offset 61 | fileprivate var titleBottoOffset:CGFloat? 62 | 63 | ///Tab Bar Item Title 64 | override open var title:String? { 65 | get { 66 | return "" 67 | } 68 | set { 69 | tabTitle = newValue 70 | } 71 | } 72 | 73 | ///UILabel to hold tab item title 74 | open var titleLabel:UILabel = UILabel() 75 | 76 | ///UIView to hold tab item icon and anything additional 77 | open var iconView:UIView = UIView() 78 | 79 | /* 80 | Initialize SimpleTabBarItem 81 | :param: style The SimpleTabBarStyle associated with this Tab Bar Item 82 | :param: index Index of this Tab Bar Item 83 | 84 | */ 85 | open func initialize(_ style:SimpleTabBarStyle, index:Int) { 86 | 87 | //This function is called by the SimpleTabBarStyle object during init() 88 | self.index = index 89 | self.barItemView = UIView(frame: style.barFrames[index]) 90 | self.barItemView?.isUserInteractionEnabled = false 91 | self.frame = style.barFrames[index] 92 | self.tabBar = style.tabBar 93 | 94 | self.titleHeight = style.titleHeight 95 | self.iconSize = style.iconSize 96 | 97 | self.iconTopOffset = style.iconTopOffset 98 | self.titleBottoOffset = style.titleBottomOffset 99 | 100 | titleLabel = UILabel() 101 | iconView = UIView() 102 | self.tabTitle = super.title 103 | self.layoutBarItem() 104 | 105 | barItemView!.addSubview(titleLabel) 106 | barItemView!.addSubview(iconView) 107 | 108 | tabBar!.addSubview(barItemView!) 109 | 110 | } 111 | 112 | /* 113 | Lay out Tab Bar Item. 114 | */ 115 | open func layoutBarItem() { 116 | //To set the tab bar item layout. 117 | //Called during initialize as well as any future layout changes 118 | 119 | //Set tab title label 120 | titleLabel.frame = CGRect(x: 0 , y: frame.size.height - titleHeight! - titleBottoOffset! , width: frame.size.width , height:titleHeight! ) 121 | titleLabel.textAlignment = NSTextAlignment.center 122 | 123 | //Set tab icon 124 | iconView.frame = CGRect(x: 0 , y: iconTopOffset! , width: iconSize!.width , height:iconSize!.height ) 125 | iconView.center = CGPoint(x: barItemView!.bounds.midX, y: iconView.center.y) 126 | 127 | //Add default UITabBarItem image to this object 128 | if let image = self.image { 129 | let newImage:UIImage = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) 130 | let imageView:UIImageView = UIImageView(image: newImage) 131 | imageView.frame.size = iconSize! 132 | self.image = nil 133 | iconView.addSubview(imageView) 134 | } 135 | 136 | } 137 | 138 | } 139 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_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 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 42 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 43 | ;; 44 | *.xib) 45 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 46 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | fi 97 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_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 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 42 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 43 | ;; 44 | *.xib) 45 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 46 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | fi 97 | -------------------------------------------------------------------------------- /Pod/Classes/TabBarStyles/SimpleTabBarStyle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleTabBarStyle.swift 3 | // XStreet 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | import Foundation 28 | 29 | open class SimpleTabBarStyle :NSObject { 30 | 31 | ///To hold CGRect Frames of all SimpleTabBarItems 32 | public var barFrames:[CGRect] = [] 33 | 34 | ///Handle to the tab bar 35 | public var tabBar:SimpleTabBar? 36 | 37 | ///Tab bar item iconview size 38 | public var iconSize:CGSize = CGSize(width: 25 , height: 25 ) 39 | 40 | ///Tab bar item icon top offset 41 | public var iconTopOffset:CGFloat = 3.0 42 | 43 | ///Tab bar item title bottom offset 44 | public var titleBottomOffset:CGFloat = 5.0 45 | 46 | ///Tab bar item title label height 47 | public var titleHeight:CGFloat = 15 48 | 49 | //Tab bar item title label text attributes options 50 | //Can be set in AppDelegate / App Load 51 | internal private(set) var titleTextAttributes:[UInt:[NSObject:AnyObject]] = [:] 52 | 53 | //Tab bar icon state color options 54 | //Can be set in AppDelegate / App Load 55 | internal private(set) var iconColors:[UInt:UIColor] = [:] 56 | 57 | /* 58 | Init SimpleTabBarStyle with associated Tab Bar 59 | :param: tabBar SimpleTabBar where this style is being applied 60 | */ 61 | public init(tabBar:SimpleTabBar) { 62 | super.init() 63 | 64 | iconColors[UIControlState.normal.rawValue] = UIColor.gray 65 | iconColors[UIControlState.selected.rawValue] = tabBar.tintColor 66 | 67 | titleTextAttributes[UIControlState.normal.rawValue] = [NSForegroundColorAttributeName as NSObject: UIColor.gray] 68 | titleTextAttributes[UIControlState.selected.rawValue] = [NSForegroundColorAttributeName as NSObject: tabBar.tintColor] 69 | 70 | self.tabBar = tabBar 71 | self.layoutTabBarItems(tabBar: tabBar, initialize: true) 72 | self.refreshColors() 73 | } 74 | 75 | private func layoutTabBarItems(tabBar: SimpleTabBar , initialize:Bool=false) { 76 | 77 | barFrames = [] 78 | var barItems:[SimpleTabBarItem] = [] 79 | 80 | for view in tabBar.subviews { 81 | if view.isUserInteractionEnabled && view.isKind(of:UIControl.self) { 82 | self.barFrames.append(view.frame) 83 | } 84 | } 85 | barFrames.sort { (this, that) -> Bool in 86 | return this.origin.x < that.origin.x 87 | } 88 | var i = 0 89 | if let items = tabBar.items { 90 | for item in items { 91 | let barItem:SimpleTabBarItem = item as! SimpleTabBarItem 92 | if initialize { 93 | barItem.initialize(self, index: i ) 94 | } else { 95 | barItem.frame = barFrames[i] 96 | barItem.layoutBarItem() 97 | } 98 | 99 | barItems.append(barItem) 100 | i += 1 101 | } 102 | tabBar.barItems = barItems 103 | } 104 | } 105 | 106 | public func refresh() { 107 | layoutTabBarItems(tabBar: self.tabBar!) 108 | refreshColors() 109 | } 110 | 111 | public func refreshColors() { 112 | 113 | for barItem in tabBar!.barItems { 114 | let state:UInt = barItem.index == self.tabBar!.selectedIndex ? UIControlState.selected.rawValue : UIControlState.normal.rawValue 115 | if let attributes = self.titleTextAttributes[state] as! [String: AnyObject]? { 116 | let attributedTitle:NSAttributedString = NSAttributedString(string: barItem.tabTitle!, attributes:attributes) 117 | barItem.titleLabel.attributedText = attributedTitle 118 | } 119 | 120 | if let iconColor = self.iconColors[state] { 121 | barItem.iconView.tintColor = iconColor 122 | } 123 | } 124 | } 125 | 126 | 127 | public func tabBarCtrlLoaded(tabBarCtrl:SimpleTabBarController , tabBar:SimpleTabBar, selectedIndex:Int) { 128 | 129 | } 130 | 131 | public func setIconColor(color:UIColor , forState state:UIControlState) { 132 | iconColors[state.rawValue] = color 133 | } 134 | 135 | public func setTitleTextAttributes(attributes:[NSObject:AnyObject] , forState state:UIControlState) { 136 | titleTextAttributes[state.rawValue] = attributes 137 | } 138 | 139 | public func animateTabTransition(tabBar: SimpleTabBar, toIndex: Int,fromIndex: Int) { 140 | refresh() 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /Example/SimpleTab/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SimpleTab 4 | // 5 | // Created by azfx on 07/20/2015. 6 | // Copyright (c) 2015 azfx. All rights reserved. 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 | import UIKit 27 | import SimpleTab 28 | 29 | @UIApplicationMain 30 | class AppDelegate: UIResponder, UIApplicationDelegate { 31 | 32 | var window: UIWindow? 33 | var simpleTBC:SimpleTabBarController? 34 | 35 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 36 | // Override point for customization after application launch. 37 | 38 | //# Setup Simple Tab Bar Controller 39 | setupSimpleTab() 40 | 41 | return true 42 | } 43 | 44 | func setupSimpleTab() { 45 | 46 | //# Get Handle of Tab Bar Control 47 | /* In storyboard, ensure : 48 | - Tab Bar Controller is set as SimpleTabBarController 49 | - Tab Bar is set as SimpleTabBar 50 | - Tab Bar Item is set as SimpleTabBarItem 51 | */ 52 | 53 | simpleTBC = self.window!.rootViewController as? SimpleTabBarController 54 | 55 | //# Set the View Transition 56 | simpleTBC?.viewTransition = PopViewTransition() 57 | //simpleTBC?.viewTransition = CrossFadeViewTransition() 58 | 59 | //# Set Tab Bar Style ( tab bar , tab item animation style etc ) 60 | let style:SimpleTabBarStyle = PopTabBarStyle(tabBar: simpleTBC!.tabBar) 61 | //let style:SimpleTabBarStyle = ElegantTabBarStyle(tabBar: simpleTBC!.tabBar) 62 | 63 | //# Optional - Set Tab Title attributes for selected and unselected (normal) states. 64 | // Or use the App tint color to set the states 65 | style.setTitleTextAttributes(attributes: [NSFontAttributeName as NSObject : UIFont.systemFont(ofSize: 14), NSForegroundColorAttributeName as NSObject: UIColor.lightGray], forState: .normal) 66 | style.setTitleTextAttributes(attributes: [NSFontAttributeName as NSObject : UIFont.systemFont(ofSize: 14),NSForegroundColorAttributeName as NSObject: colorWithHexString("4CB6BE")], forState: .selected) 67 | 68 | //# Optional - Set Tab Icon colors for selected and unselected (normal) states. 69 | // Or use the App tint color to set the states 70 | style.setIconColor(color: UIColor.lightGray, forState: UIControlState.normal) 71 | style.setIconColor(color: colorWithHexString("4CB6BE"), forState: UIControlState.selected) 72 | 73 | //# Let the tab bar control know of the style 74 | // Note: All style settings must be done prior to this. 75 | simpleTBC?.tabBarStyle = style 76 | } 77 | 78 | //# Handy function to return UIColors from Hex Strings 79 | func colorWithHexString (_ hexStr:String) -> UIColor { 80 | 81 | let hex = hexStr.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) 82 | var int = UInt32() 83 | Scanner(string: hex).scanHexInt32(&int) 84 | let a, r, g, b: UInt32 85 | switch hex.characters.count { 86 | case 3: // RGB (12-bit) 87 | (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) 88 | case 6: // RGB (24-bit) 89 | (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF) 90 | case 8: // ARGB (32-bit) 91 | (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) 92 | default: 93 | return .clear 94 | } 95 | return UIColor(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255) 96 | 97 | } 98 | 99 | func applicationWillResignActive(_ application: UIApplication) { 100 | // 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. 101 | // 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. 102 | } 103 | 104 | func applicationDidEnterBackground(_ application: UIApplication) { 105 | // 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. 106 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 107 | } 108 | 109 | func applicationWillEnterForeground(_ application: UIApplication) { 110 | // 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. 111 | } 112 | 113 | func applicationDidBecomeActive(_ application: UIApplication) { 114 | // 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. 115 | } 116 | 117 | func applicationWillTerminate(_ application: UIApplication) { 118 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 119 | } 120 | 121 | 122 | } 123 | 124 | -------------------------------------------------------------------------------- /Example/SimpleTab.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 41ECFC364527A90FC8A5D31A /* Pods_SimpleTab_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BA3C6A38B11C2606AA45F6D /* Pods_SimpleTab_Tests.framework */; }; 11 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 12 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 13 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 14 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 15 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 16 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 17 | A8EDA5BA3E3FCC854A066DBF /* Pods_SimpleTab_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81216F6CD4B9900B878E1763 /* Pods_SimpleTab_Example.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 26 | remoteInfo = SimpleTab; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 0E979D397251FA1BEB84C65C /* Pods-SimpleTab_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleTab_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.debug.xcconfig"; sourceTree = ""; }; 32 | 11177BCA5528D90E24261627 /* Pods-SimpleTab_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleTab_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.release.xcconfig"; sourceTree = ""; }; 33 | 3BA3C6A38B11C2606AA45F6D /* Pods_SimpleTab_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleTab_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 607FACD01AFB9204008FA782 /* SimpleTab_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleTab_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 36 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 38 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 39 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 40 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 41 | 607FACE51AFB9204008FA782 /* SimpleTab_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimpleTab_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 44 | 623627489AEE70889E14229A /* Pods-SimpleTab_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleTab_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.debug.xcconfig"; sourceTree = ""; }; 45 | 659DC9807C183D4887A013C8 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 46 | 740F7B2B1C101EFCF6AFABFE /* SimpleTab.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SimpleTab.podspec; path = ../SimpleTab.podspec; sourceTree = ""; }; 47 | 81216F6CD4B9900B878E1763 /* Pods_SimpleTab_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleTab_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 48 | 82F1164E6C4EAE7D9BB605B0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 49 | 83831B80139C5763D929F534 /* Pods-SimpleTab_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleTab_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.release.xcconfig"; sourceTree = ""; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | A8EDA5BA3E3FCC854A066DBF /* Pods_SimpleTab_Example.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 41ECFC364527A90FC8A5D31A /* Pods_SimpleTab_Tests.framework in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 2015A58B1559DD231552CC0C /* Frameworks */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 81216F6CD4B9900B878E1763 /* Pods_SimpleTab_Example.framework */, 76 | 3BA3C6A38B11C2606AA45F6D /* Pods_SimpleTab_Tests.framework */, 77 | ); 78 | name = Frameworks; 79 | sourceTree = ""; 80 | }; 81 | 607FACC71AFB9204008FA782 = { 82 | isa = PBXGroup; 83 | children = ( 84 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 85 | 607FACD21AFB9204008FA782 /* SimpleTabExample */, 86 | 607FACE81AFB9204008FA782 /* Tests */, 87 | 607FACD11AFB9204008FA782 /* Products */, 88 | DD6F9561620B82FF348CA531 /* Pods */, 89 | 2015A58B1559DD231552CC0C /* Frameworks */, 90 | ); 91 | sourceTree = ""; 92 | }; 93 | 607FACD11AFB9204008FA782 /* Products */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 607FACD01AFB9204008FA782 /* SimpleTab_Example.app */, 97 | 607FACE51AFB9204008FA782 /* SimpleTab_Tests.xctest */, 98 | ); 99 | name = Products; 100 | sourceTree = ""; 101 | }; 102 | 607FACD21AFB9204008FA782 /* SimpleTabExample */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 106 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 107 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 108 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 109 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 110 | 607FACD31AFB9204008FA782 /* Supporting Files */, 111 | ); 112 | name = SimpleTabExample; 113 | path = SimpleTab; 114 | sourceTree = ""; 115 | }; 116 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | 607FACD41AFB9204008FA782 /* Info.plist */, 120 | ); 121 | name = "Supporting Files"; 122 | sourceTree = ""; 123 | }; 124 | 607FACE81AFB9204008FA782 /* Tests */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 128 | 607FACE91AFB9204008FA782 /* Supporting Files */, 129 | ); 130 | path = Tests; 131 | sourceTree = ""; 132 | }; 133 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 607FACEA1AFB9204008FA782 /* Info.plist */, 137 | ); 138 | name = "Supporting Files"; 139 | sourceTree = ""; 140 | }; 141 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 142 | isa = PBXGroup; 143 | children = ( 144 | 740F7B2B1C101EFCF6AFABFE /* SimpleTab.podspec */, 145 | 659DC9807C183D4887A013C8 /* README.md */, 146 | 82F1164E6C4EAE7D9BB605B0 /* LICENSE */, 147 | ); 148 | name = "Podspec Metadata"; 149 | sourceTree = ""; 150 | }; 151 | DD6F9561620B82FF348CA531 /* Pods */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 0E979D397251FA1BEB84C65C /* Pods-SimpleTab_Example.debug.xcconfig */, 155 | 83831B80139C5763D929F534 /* Pods-SimpleTab_Example.release.xcconfig */, 156 | 623627489AEE70889E14229A /* Pods-SimpleTab_Tests.debug.xcconfig */, 157 | 11177BCA5528D90E24261627 /* Pods-SimpleTab_Tests.release.xcconfig */, 158 | ); 159 | name = Pods; 160 | sourceTree = ""; 161 | }; 162 | /* End PBXGroup section */ 163 | 164 | /* Begin PBXNativeTarget section */ 165 | 607FACCF1AFB9204008FA782 /* SimpleTab_Example */ = { 166 | isa = PBXNativeTarget; 167 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleTab_Example" */; 168 | buildPhases = ( 169 | AB8797F3A489C76CCBB18164 /* [CP] Check Pods Manifest.lock */, 170 | 607FACCC1AFB9204008FA782 /* Sources */, 171 | 607FACCD1AFB9204008FA782 /* Frameworks */, 172 | 607FACCE1AFB9204008FA782 /* Resources */, 173 | 678EE0F000FE092983BC18E0 /* [CP] Embed Pods Frameworks */, 174 | 235935717A9796DC068DD904 /* [CP] Copy Pods Resources */, 175 | ); 176 | buildRules = ( 177 | ); 178 | dependencies = ( 179 | ); 180 | name = SimpleTab_Example; 181 | productName = SimpleTab; 182 | productReference = 607FACD01AFB9204008FA782 /* SimpleTab_Example.app */; 183 | productType = "com.apple.product-type.application"; 184 | }; 185 | 607FACE41AFB9204008FA782 /* SimpleTab_Tests */ = { 186 | isa = PBXNativeTarget; 187 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleTab_Tests" */; 188 | buildPhases = ( 189 | 163E648AC5524F0AEB4493FC /* [CP] Check Pods Manifest.lock */, 190 | 607FACE11AFB9204008FA782 /* Sources */, 191 | 607FACE21AFB9204008FA782 /* Frameworks */, 192 | 607FACE31AFB9204008FA782 /* Resources */, 193 | 68151A343D87057231E50208 /* [CP] Embed Pods Frameworks */, 194 | 9B96AD8E9C3F708152CFF488 /* [CP] Copy Pods Resources */, 195 | ); 196 | buildRules = ( 197 | ); 198 | dependencies = ( 199 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 200 | ); 201 | name = SimpleTab_Tests; 202 | productName = Tests; 203 | productReference = 607FACE51AFB9204008FA782 /* SimpleTab_Tests.xctest */; 204 | productType = "com.apple.product-type.bundle.unit-test"; 205 | }; 206 | /* End PBXNativeTarget section */ 207 | 208 | /* Begin PBXProject section */ 209 | 607FACC81AFB9204008FA782 /* Project object */ = { 210 | isa = PBXProject; 211 | attributes = { 212 | LastUpgradeCheck = 0830; 213 | ORGANIZATIONNAME = CocoaPods; 214 | TargetAttributes = { 215 | 607FACCF1AFB9204008FA782 = { 216 | CreatedOnToolsVersion = 6.3.1; 217 | DevelopmentTeam = 4C8XTRLLJ7; 218 | LastSwiftMigration = 0820; 219 | }; 220 | 607FACE41AFB9204008FA782 = { 221 | CreatedOnToolsVersion = 6.3.1; 222 | LastSwiftMigration = 0820; 223 | TestTargetID = 607FACCF1AFB9204008FA782; 224 | }; 225 | }; 226 | }; 227 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SimpleTab" */; 228 | compatibilityVersion = "Xcode 3.2"; 229 | developmentRegion = English; 230 | hasScannedForEncodings = 0; 231 | knownRegions = ( 232 | en, 233 | Base, 234 | ); 235 | mainGroup = 607FACC71AFB9204008FA782; 236 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 237 | projectDirPath = ""; 238 | projectRoot = ""; 239 | targets = ( 240 | 607FACCF1AFB9204008FA782 /* SimpleTab_Example */, 241 | 607FACE41AFB9204008FA782 /* SimpleTab_Tests */, 242 | ); 243 | }; 244 | /* End PBXProject section */ 245 | 246 | /* Begin PBXResourcesBuildPhase section */ 247 | 607FACCE1AFB9204008FA782 /* Resources */ = { 248 | isa = PBXResourcesBuildPhase; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 252 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 253 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 254 | ); 255 | runOnlyForDeploymentPostprocessing = 0; 256 | }; 257 | 607FACE31AFB9204008FA782 /* Resources */ = { 258 | isa = PBXResourcesBuildPhase; 259 | buildActionMask = 2147483647; 260 | files = ( 261 | ); 262 | runOnlyForDeploymentPostprocessing = 0; 263 | }; 264 | /* End PBXResourcesBuildPhase section */ 265 | 266 | /* Begin PBXShellScriptBuildPhase section */ 267 | 163E648AC5524F0AEB4493FC /* [CP] Check Pods Manifest.lock */ = { 268 | isa = PBXShellScriptBuildPhase; 269 | buildActionMask = 2147483647; 270 | files = ( 271 | ); 272 | inputPaths = ( 273 | ); 274 | name = "[CP] Check Pods Manifest.lock"; 275 | outputPaths = ( 276 | ); 277 | runOnlyForDeploymentPostprocessing = 0; 278 | shellPath = /bin/sh; 279 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 280 | showEnvVarsInLog = 0; 281 | }; 282 | 235935717A9796DC068DD904 /* [CP] Copy Pods Resources */ = { 283 | isa = PBXShellScriptBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | ); 287 | inputPaths = ( 288 | ); 289 | name = "[CP] Copy Pods Resources"; 290 | outputPaths = ( 291 | ); 292 | runOnlyForDeploymentPostprocessing = 0; 293 | shellPath = /bin/sh; 294 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-resources.sh\"\n"; 295 | showEnvVarsInLog = 0; 296 | }; 297 | 678EE0F000FE092983BC18E0 /* [CP] Embed Pods Frameworks */ = { 298 | isa = PBXShellScriptBuildPhase; 299 | buildActionMask = 2147483647; 300 | files = ( 301 | ); 302 | inputPaths = ( 303 | ); 304 | name = "[CP] Embed Pods Frameworks"; 305 | outputPaths = ( 306 | ); 307 | runOnlyForDeploymentPostprocessing = 0; 308 | shellPath = /bin/sh; 309 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example-frameworks.sh\"\n"; 310 | showEnvVarsInLog = 0; 311 | }; 312 | 68151A343D87057231E50208 /* [CP] Embed Pods Frameworks */ = { 313 | isa = PBXShellScriptBuildPhase; 314 | buildActionMask = 2147483647; 315 | files = ( 316 | ); 317 | inputPaths = ( 318 | ); 319 | name = "[CP] Embed Pods Frameworks"; 320 | outputPaths = ( 321 | ); 322 | runOnlyForDeploymentPostprocessing = 0; 323 | shellPath = /bin/sh; 324 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-frameworks.sh\"\n"; 325 | showEnvVarsInLog = 0; 326 | }; 327 | 9B96AD8E9C3F708152CFF488 /* [CP] Copy Pods Resources */ = { 328 | isa = PBXShellScriptBuildPhase; 329 | buildActionMask = 2147483647; 330 | files = ( 331 | ); 332 | inputPaths = ( 333 | ); 334 | name = "[CP] Copy Pods Resources"; 335 | outputPaths = ( 336 | ); 337 | runOnlyForDeploymentPostprocessing = 0; 338 | shellPath = /bin/sh; 339 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests-resources.sh\"\n"; 340 | showEnvVarsInLog = 0; 341 | }; 342 | AB8797F3A489C76CCBB18164 /* [CP] Check Pods Manifest.lock */ = { 343 | isa = PBXShellScriptBuildPhase; 344 | buildActionMask = 2147483647; 345 | files = ( 346 | ); 347 | inputPaths = ( 348 | ); 349 | name = "[CP] Check Pods Manifest.lock"; 350 | outputPaths = ( 351 | ); 352 | runOnlyForDeploymentPostprocessing = 0; 353 | shellPath = /bin/sh; 354 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 355 | showEnvVarsInLog = 0; 356 | }; 357 | /* End PBXShellScriptBuildPhase section */ 358 | 359 | /* Begin PBXSourcesBuildPhase section */ 360 | 607FACCC1AFB9204008FA782 /* Sources */ = { 361 | isa = PBXSourcesBuildPhase; 362 | buildActionMask = 2147483647; 363 | files = ( 364 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 365 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 366 | ); 367 | runOnlyForDeploymentPostprocessing = 0; 368 | }; 369 | 607FACE11AFB9204008FA782 /* Sources */ = { 370 | isa = PBXSourcesBuildPhase; 371 | buildActionMask = 2147483647; 372 | files = ( 373 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 374 | ); 375 | runOnlyForDeploymentPostprocessing = 0; 376 | }; 377 | /* End PBXSourcesBuildPhase section */ 378 | 379 | /* Begin PBXTargetDependency section */ 380 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 381 | isa = PBXTargetDependency; 382 | target = 607FACCF1AFB9204008FA782 /* SimpleTab_Example */; 383 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 384 | }; 385 | /* End PBXTargetDependency section */ 386 | 387 | /* Begin PBXVariantGroup section */ 388 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 389 | isa = PBXVariantGroup; 390 | children = ( 391 | 607FACDA1AFB9204008FA782 /* Base */, 392 | ); 393 | name = Main.storyboard; 394 | sourceTree = ""; 395 | }; 396 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 397 | isa = PBXVariantGroup; 398 | children = ( 399 | 607FACDF1AFB9204008FA782 /* Base */, 400 | ); 401 | name = LaunchScreen.xib; 402 | sourceTree = ""; 403 | }; 404 | /* End PBXVariantGroup section */ 405 | 406 | /* Begin XCBuildConfiguration section */ 407 | 607FACED1AFB9204008FA782 /* Debug */ = { 408 | isa = XCBuildConfiguration; 409 | buildSettings = { 410 | ALWAYS_SEARCH_USER_PATHS = NO; 411 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 412 | CLANG_CXX_LIBRARY = "libc++"; 413 | CLANG_ENABLE_MODULES = YES; 414 | CLANG_ENABLE_OBJC_ARC = YES; 415 | CLANG_WARN_BOOL_CONVERSION = YES; 416 | CLANG_WARN_CONSTANT_CONVERSION = YES; 417 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 418 | CLANG_WARN_EMPTY_BODY = YES; 419 | CLANG_WARN_ENUM_CONVERSION = YES; 420 | CLANG_WARN_INFINITE_RECURSION = YES; 421 | CLANG_WARN_INT_CONVERSION = YES; 422 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 423 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 424 | CLANG_WARN_UNREACHABLE_CODE = YES; 425 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 426 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 427 | COPY_PHASE_STRIP = NO; 428 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 429 | ENABLE_STRICT_OBJC_MSGSEND = YES; 430 | ENABLE_TESTABILITY = YES; 431 | GCC_C_LANGUAGE_STANDARD = gnu99; 432 | GCC_DYNAMIC_NO_PIC = NO; 433 | GCC_NO_COMMON_BLOCKS = YES; 434 | GCC_OPTIMIZATION_LEVEL = 0; 435 | GCC_PREPROCESSOR_DEFINITIONS = ( 436 | "DEBUG=1", 437 | "$(inherited)", 438 | ); 439 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 440 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 441 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 442 | GCC_WARN_UNDECLARED_SELECTOR = YES; 443 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 444 | GCC_WARN_UNUSED_FUNCTION = YES; 445 | GCC_WARN_UNUSED_VARIABLE = YES; 446 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 447 | MTL_ENABLE_DEBUG_INFO = YES; 448 | ONLY_ACTIVE_ARCH = YES; 449 | SDKROOT = iphoneos; 450 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 451 | }; 452 | name = Debug; 453 | }; 454 | 607FACEE1AFB9204008FA782 /* Release */ = { 455 | isa = XCBuildConfiguration; 456 | buildSettings = { 457 | ALWAYS_SEARCH_USER_PATHS = NO; 458 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 459 | CLANG_CXX_LIBRARY = "libc++"; 460 | CLANG_ENABLE_MODULES = YES; 461 | CLANG_ENABLE_OBJC_ARC = YES; 462 | CLANG_WARN_BOOL_CONVERSION = YES; 463 | CLANG_WARN_CONSTANT_CONVERSION = YES; 464 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 465 | CLANG_WARN_EMPTY_BODY = YES; 466 | CLANG_WARN_ENUM_CONVERSION = YES; 467 | CLANG_WARN_INFINITE_RECURSION = YES; 468 | CLANG_WARN_INT_CONVERSION = YES; 469 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 470 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 471 | CLANG_WARN_UNREACHABLE_CODE = YES; 472 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 473 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 474 | COPY_PHASE_STRIP = NO; 475 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 476 | ENABLE_NS_ASSERTIONS = NO; 477 | ENABLE_STRICT_OBJC_MSGSEND = YES; 478 | GCC_C_LANGUAGE_STANDARD = gnu99; 479 | GCC_NO_COMMON_BLOCKS = YES; 480 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 481 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 482 | GCC_WARN_UNDECLARED_SELECTOR = YES; 483 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 484 | GCC_WARN_UNUSED_FUNCTION = YES; 485 | GCC_WARN_UNUSED_VARIABLE = YES; 486 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 487 | MTL_ENABLE_DEBUG_INFO = NO; 488 | SDKROOT = iphoneos; 489 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 490 | VALIDATE_PRODUCT = YES; 491 | }; 492 | name = Release; 493 | }; 494 | 607FACF01AFB9204008FA782 /* Debug */ = { 495 | isa = XCBuildConfiguration; 496 | baseConfigurationReference = 0E979D397251FA1BEB84C65C /* Pods-SimpleTab_Example.debug.xcconfig */; 497 | buildSettings = { 498 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 499 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 500 | DEVELOPMENT_TEAM = 4C8XTRLLJ7; 501 | INFOPLIST_FILE = SimpleTab/Info.plist; 502 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 503 | MODULE_NAME = ExampleApp; 504 | PRODUCT_BUNDLE_IDENTIFIER = "com.azfx.demo.$(PRODUCT_NAME:rfc1034identifier)"; 505 | PRODUCT_NAME = "$(TARGET_NAME)"; 506 | SWIFT_VERSION = 3.0; 507 | }; 508 | name = Debug; 509 | }; 510 | 607FACF11AFB9204008FA782 /* Release */ = { 511 | isa = XCBuildConfiguration; 512 | baseConfigurationReference = 83831B80139C5763D929F534 /* Pods-SimpleTab_Example.release.xcconfig */; 513 | buildSettings = { 514 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 515 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 516 | DEVELOPMENT_TEAM = 4C8XTRLLJ7; 517 | INFOPLIST_FILE = SimpleTab/Info.plist; 518 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 519 | MODULE_NAME = ExampleApp; 520 | PRODUCT_BUNDLE_IDENTIFIER = "com.azfx.demo.$(PRODUCT_NAME:rfc1034identifier)"; 521 | PRODUCT_NAME = "$(TARGET_NAME)"; 522 | SWIFT_VERSION = 3.0; 523 | }; 524 | name = Release; 525 | }; 526 | 607FACF31AFB9204008FA782 /* Debug */ = { 527 | isa = XCBuildConfiguration; 528 | baseConfigurationReference = 623627489AEE70889E14229A /* Pods-SimpleTab_Tests.debug.xcconfig */; 529 | buildSettings = { 530 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 531 | BUNDLE_LOADER = "$(TEST_HOST)"; 532 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 533 | GCC_PREPROCESSOR_DEFINITIONS = ( 534 | "DEBUG=1", 535 | "$(inherited)", 536 | ); 537 | INFOPLIST_FILE = Tests/Info.plist; 538 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 539 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 540 | PRODUCT_NAME = "$(TARGET_NAME)"; 541 | SWIFT_VERSION = 3.0; 542 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleTab_Example.app/SimpleTab_Example"; 543 | }; 544 | name = Debug; 545 | }; 546 | 607FACF41AFB9204008FA782 /* Release */ = { 547 | isa = XCBuildConfiguration; 548 | baseConfigurationReference = 11177BCA5528D90E24261627 /* Pods-SimpleTab_Tests.release.xcconfig */; 549 | buildSettings = { 550 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 551 | BUNDLE_LOADER = "$(TEST_HOST)"; 552 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 553 | INFOPLIST_FILE = Tests/Info.plist; 554 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 555 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 556 | PRODUCT_NAME = "$(TARGET_NAME)"; 557 | SWIFT_VERSION = 3.0; 558 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleTab_Example.app/SimpleTab_Example"; 559 | }; 560 | name = Release; 561 | }; 562 | /* End XCBuildConfiguration section */ 563 | 564 | /* Begin XCConfigurationList section */ 565 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SimpleTab" */ = { 566 | isa = XCConfigurationList; 567 | buildConfigurations = ( 568 | 607FACED1AFB9204008FA782 /* Debug */, 569 | 607FACEE1AFB9204008FA782 /* Release */, 570 | ); 571 | defaultConfigurationIsVisible = 0; 572 | defaultConfigurationName = Release; 573 | }; 574 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleTab_Example" */ = { 575 | isa = XCConfigurationList; 576 | buildConfigurations = ( 577 | 607FACF01AFB9204008FA782 /* Debug */, 578 | 607FACF11AFB9204008FA782 /* Release */, 579 | ); 580 | defaultConfigurationIsVisible = 0; 581 | defaultConfigurationName = Release; 582 | }; 583 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleTab_Tests" */ = { 584 | isa = XCConfigurationList; 585 | buildConfigurations = ( 586 | 607FACF31AFB9204008FA782 /* Debug */, 587 | 607FACF41AFB9204008FA782 /* Release */, 588 | ); 589 | defaultConfigurationIsVisible = 0; 590 | defaultConfigurationName = Release; 591 | }; 592 | /* End XCConfigurationList section */ 593 | }; 594 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 595 | } 596 | -------------------------------------------------------------------------------- /Example/SimpleTab/Base.lproj/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 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 69 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 97 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 125 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 153 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 181 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | -------------------------------------------------------------------------------- /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 | 2A32160E9E564AD1F62113733D02EEDE /* SimpleTabBarStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874D943FEEAE9AA9356AA13BD228597C /* SimpleTabBarStyle.swift */; }; 11 | 34B4FDD5D9E23D64CA34FB7930FB3B79 /* Pods-SimpleTab_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ECBA3F89856A86D78DD413B397ACF05 /* Pods-SimpleTab_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 12 | 36BA5D24AA79BB92E02463C8911945AD /* SimpleTab.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A40E9861EE8806E3AAAADBAFA5E5AA3 /* SimpleTab.bundle */; }; 13 | 38D7522422D126DA30742A2B85F86C5E /* ElegantTabBarStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71FF3DF7497EFFD7BB9E906B6CD8B27 /* ElegantTabBarStyle.swift */; }; 14 | 39A257E06DD946F8F3860E7A6E2CCF54 /* PopViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C4BCC85E411F93F6303316B6FE7C4FF /* PopViewTransition.swift */; }; 15 | 3D98CB7DA250DDF8D6E5ED0C473A56A4 /* SimpleTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BF78051B18D4EDF2F94B9E4A5338DB /* SimpleTabBar.swift */; }; 16 | 4A689E71967787683E7FC25377B53109 /* Pods-SimpleTab_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E6547D5D1D6DBD0A9948CB35474C67C2 /* Pods-SimpleTab_Tests-dummy.m */; }; 17 | 4EA3EDF6B5612154D6EA4D9CF48D9CE9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 18 | 57CDF5D84C901200799A7DCB33EF1F89 /* Pods-SimpleTab_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 401542844CC39ECF53ACAA81DD87FA80 /* Pods-SimpleTab_Example-dummy.m */; }; 19 | 5D0E45354EB07D88914BBE8C7284936E /* PopTabBarStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81F62B6E4486F342EEA6CDFFE2B7F60C /* PopTabBarStyle.swift */; }; 20 | 6CE9E15D11CEC9836DBED813AA4934D8 /* Pods-SimpleTab_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AB212BD9DD25EAD9E277A220211D7EE /* Pods-SimpleTab_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 21 | 83E66FFB51FFA8E9F07B0A5290259023 /* SimpleTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EBAAE8167DCC478A4B15B9721E83A7 /* SimpleTabBarController.swift */; }; 22 | 8CB6DD8B21901289413966D9B2DEBDA5 /* SimpleTab-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B536E566ECF149240295961876377E27 /* SimpleTab-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 23 | A899D6715E95F03947A05F0DD3DDF662 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 24 | AF2FE05A8007B5D31D36D321F1F850BC /* CrossFadeViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A390C2C82B3E1DE70A1CA040298A84 /* CrossFadeViewTransition.swift */; }; 25 | B7C886F4A8C934449DC808A432C03904 /* SimpleTabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C09A759F79E88A3E2EF110EA43B7E620 /* SimpleTabBarItem.swift */; }; 26 | BF8078265CA8FFA9B344EBC62792E910 /* SimpleTab-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 403482132EEDC5CFFA692F537AC53852 /* SimpleTab-dummy.m */; }; 27 | E26F13A7677ECA94CA332E0E9691F095 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXContainerItemProxy section */ 31 | 18657838D6B3B3C0DDFEAEF5F3601D07 /* PBXContainerItemProxy */ = { 32 | isa = PBXContainerItemProxy; 33 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 34 | proxyType = 1; 35 | remoteGlobalIDString = B7F3803DD9E7F362164BD858B362199A; 36 | remoteInfo = SimpleTab; 37 | }; 38 | 2FAF98BD3B47C12DB4EA5605A2EDE1F9 /* PBXContainerItemProxy */ = { 39 | isa = PBXContainerItemProxy; 40 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 41 | proxyType = 1; 42 | remoteGlobalIDString = B7F3803DD9E7F362164BD858B362199A; 43 | remoteInfo = SimpleTab; 44 | }; 45 | E454DE7CA27790C5F2B821015129C704 /* PBXContainerItemProxy */ = { 46 | isa = PBXContainerItemProxy; 47 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 48 | proxyType = 1; 49 | remoteGlobalIDString = 88CA953BAC4817FDE12B90AF94F6EA45; 50 | remoteInfo = "SimpleTab-SimpleTab"; 51 | }; 52 | /* End PBXContainerItemProxy section */ 53 | 54 | /* Begin PBXFileReference section */ 55 | 0C4BCC85E411F93F6303316B6FE7C4FF /* PopViewTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PopViewTransition.swift; sourceTree = ""; }; 56 | 0D4A421E88FD75D0461A94568C7881FC /* Pods-SimpleTab_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleTab_Tests.release.xcconfig"; sourceTree = ""; }; 57 | 0EB28C11CDF10D39746C0F7948B92274 /* Pods-SimpleTab_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleTab_Tests-resources.sh"; sourceTree = ""; }; 58 | 1646663AE067B68B355668519EBE7F44 /* SimpleTab-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SimpleTab-prefix.pch"; sourceTree = ""; }; 59 | 23EBAAE8167DCC478A4B15B9721E83A7 /* SimpleTabBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleTabBarController.swift; sourceTree = ""; }; 60 | 25AC3891E0DD08A7069BBB86CEE141A8 /* Pods-SimpleTab_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SimpleTab_Tests.modulemap"; sourceTree = ""; }; 61 | 25EBF47D88C4128F735FBA8D9AA25D78 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 62 | 2997B48C129EAFE3D2EFA8DF8B9AE095 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 63 | 2B1B100D150F77D8D6D8A52D47AACB36 /* Pods-SimpleTab_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleTab_Example-resources.sh"; sourceTree = ""; }; 64 | 351CF7ED31FC5CDE4F7BC377FA2CAFDD /* Pods_SimpleTab_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleTab_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 65 | 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SimpleTab.xcconfig; sourceTree = ""; }; 66 | 401542844CC39ECF53ACAA81DD87FA80 /* Pods-SimpleTab_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SimpleTab_Example-dummy.m"; sourceTree = ""; }; 67 | 403482132EEDC5CFFA692F537AC53852 /* SimpleTab-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SimpleTab-dummy.m"; sourceTree = ""; }; 68 | 41B1CB37DE4E47853821432677360BE9 /* Pods-SimpleTab_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleTab_Tests-frameworks.sh"; sourceTree = ""; }; 69 | 421E0E87E415BB5B174B8FB83698A7F5 /* SimpleTab.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SimpleTab.modulemap; sourceTree = ""; }; 70 | 45AF43AD38C831423DD0D4A0EA924615 /* Pods_SimpleTab_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleTab_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 71 | 4AB212BD9DD25EAD9E277A220211D7EE /* Pods-SimpleTab_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SimpleTab_Tests-umbrella.h"; sourceTree = ""; }; 72 | 5E2A572E7B191E752333FE6305B91BE6 /* Pods-SimpleTab_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SimpleTab_Tests-acknowledgements.plist"; sourceTree = ""; }; 73 | 732F1786D473924E7C78A92E116942B7 /* Pods-SimpleTab_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleTab_Example.debug.xcconfig"; sourceTree = ""; }; 74 | 7919A1EBA8CB56C912D6AB7D0F78F9F0 /* SimpleTab.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SimpleTab.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | 7ECBA3F89856A86D78DD413B397ACF05 /* Pods-SimpleTab_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SimpleTab_Example-umbrella.h"; sourceTree = ""; }; 76 | 81F62B6E4486F342EEA6CDFFE2B7F60C /* PopTabBarStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PopTabBarStyle.swift; sourceTree = ""; }; 77 | 862C83F8A2C9BC0CBAA52AF85E679989 /* Pods-SimpleTab_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SimpleTab_Example.modulemap"; sourceTree = ""; }; 78 | 874D943FEEAE9AA9356AA13BD228597C /* SimpleTabBarStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleTabBarStyle.swift; sourceTree = ""; }; 79 | 8A40E9861EE8806E3AAAADBAFA5E5AA3 /* SimpleTab.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimpleTab.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 80 | 9391D354EB8BAD0A79076592E454D70B /* Pods-SimpleTab_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleTab_Example-frameworks.sh"; sourceTree = ""; }; 81 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 82 | A378174024B02B142926D9AE3DF1A82E /* Pods-SimpleTab_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SimpleTab_Example-acknowledgements.plist"; sourceTree = ""; }; 83 | A3C58C0C43091511C9FB0328BF2CE3DC /* Pods-SimpleTab_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SimpleTab_Tests-acknowledgements.markdown"; sourceTree = ""; }; 84 | B12102E695832A30883478AC75FC875A /* Pods-SimpleTab_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleTab_Example.release.xcconfig"; sourceTree = ""; }; 85 | B536E566ECF149240295961876377E27 /* SimpleTab-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SimpleTab-umbrella.h"; sourceTree = ""; }; 86 | BF900FE2B72AC43EBB9111C6EF6DDD3A /* Pods-SimpleTab_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleTab_Tests.debug.xcconfig"; sourceTree = ""; }; 87 | C09A759F79E88A3E2EF110EA43B7E620 /* SimpleTabBarItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleTabBarItem.swift; sourceTree = ""; }; 88 | C3A390C2C82B3E1DE70A1CA040298A84 /* CrossFadeViewTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CrossFadeViewTransition.swift; sourceTree = ""; }; 89 | C5BF78051B18D4EDF2F94B9E4A5338DB /* SimpleTabBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleTabBar.swift; sourceTree = ""; }; 90 | CA33F067C0252A5132AB43913AFD6BB6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 91 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 92 | D15DCE39FD50B4570098674A6EB7C2C7 /* ResourceBundle-SimpleTab-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SimpleTab-Info.plist"; sourceTree = ""; }; 93 | E6547D5D1D6DBD0A9948CB35474C67C2 /* Pods-SimpleTab_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SimpleTab_Tests-dummy.m"; sourceTree = ""; }; 94 | E873A5C23CB373906E0E4D954ED57406 /* Pods-SimpleTab_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SimpleTab_Example-acknowledgements.markdown"; sourceTree = ""; }; 95 | F71FF3DF7497EFFD7BB9E906B6CD8B27 /* ElegantTabBarStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ElegantTabBarStyle.swift; sourceTree = ""; }; 96 | /* End PBXFileReference section */ 97 | 98 | /* Begin PBXFrameworksBuildPhase section */ 99 | 300DFF7401B6198E9C3460C95E1D2BC7 /* Frameworks */ = { 100 | isa = PBXFrameworksBuildPhase; 101 | buildActionMask = 2147483647; 102 | files = ( 103 | A899D6715E95F03947A05F0DD3DDF662 /* Foundation.framework in Frameworks */, 104 | ); 105 | runOnlyForDeploymentPostprocessing = 0; 106 | }; 107 | 7832F4C04D870A1D098954FB99B93399 /* Frameworks */ = { 108 | isa = PBXFrameworksBuildPhase; 109 | buildActionMask = 2147483647; 110 | files = ( 111 | E26F13A7677ECA94CA332E0E9691F095 /* Foundation.framework in Frameworks */, 112 | ); 113 | runOnlyForDeploymentPostprocessing = 0; 114 | }; 115 | CFC2F55DF6CAF50FC1621D9BBA5A82C3 /* Frameworks */ = { 116 | isa = PBXFrameworksBuildPhase; 117 | buildActionMask = 2147483647; 118 | files = ( 119 | ); 120 | runOnlyForDeploymentPostprocessing = 0; 121 | }; 122 | D78A0A166114BD87F532FC61B17FFE8A /* Frameworks */ = { 123 | isa = PBXFrameworksBuildPhase; 124 | buildActionMask = 2147483647; 125 | files = ( 126 | 4EA3EDF6B5612154D6EA4D9CF48D9CE9 /* Foundation.framework in Frameworks */, 127 | ); 128 | runOnlyForDeploymentPostprocessing = 0; 129 | }; 130 | /* End PBXFrameworksBuildPhase section */ 131 | 132 | /* Begin PBXGroup section */ 133 | 2478FA3F702E93CC6CE7DD26806378F8 /* Pod */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 93ACE97B45F1317897A2DC69F3EC46C3 /* Classes */, 137 | ); 138 | path = Pod; 139 | sourceTree = ""; 140 | }; 141 | 3661FE68FBD36250CD1460A425D4E192 /* ViewTransitions */ = { 142 | isa = PBXGroup; 143 | children = ( 144 | C3A390C2C82B3E1DE70A1CA040298A84 /* CrossFadeViewTransition.swift */, 145 | 0C4BCC85E411F93F6303316B6FE7C4FF /* PopViewTransition.swift */, 146 | ); 147 | path = ViewTransitions; 148 | sourceTree = ""; 149 | }; 150 | 7066BF7F7DA44BF782ED3132CF925E97 /* TabBarStyles */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | F71FF3DF7497EFFD7BB9E906B6CD8B27 /* ElegantTabBarStyle.swift */, 154 | 81F62B6E4486F342EEA6CDFFE2B7F60C /* PopTabBarStyle.swift */, 155 | 874D943FEEAE9AA9356AA13BD228597C /* SimpleTabBarStyle.swift */, 156 | ); 157 | path = TabBarStyles; 158 | sourceTree = ""; 159 | }; 160 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */ = { 161 | isa = PBXGroup; 162 | children = ( 163 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */, 164 | ); 165 | name = iOS; 166 | sourceTree = ""; 167 | }; 168 | 7DB346D0F39D3F0E887471402A8071AB = { 169 | isa = PBXGroup; 170 | children = ( 171 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 172 | C3647A190A84BDB966EBC6D205A501AF /* Development Pods */, 173 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 174 | EBB56693B13FB6E0A6803C67684445A8 /* Products */, 175 | C9D4D9FBF11D10E568F4278D48348A8A /* Targets Support Files */, 176 | ); 177 | sourceTree = ""; 178 | }; 179 | 915413A09D4C512BDBB759B655D75877 /* SimpleTab */ = { 180 | isa = PBXGroup; 181 | children = ( 182 | 2478FA3F702E93CC6CE7DD26806378F8 /* Pod */, 183 | FD07A720EE4CAA34BFD1FAC8964F4430 /* Support Files */, 184 | ); 185 | name = SimpleTab; 186 | path = ../..; 187 | sourceTree = ""; 188 | }; 189 | 93ACE97B45F1317897A2DC69F3EC46C3 /* Classes */ = { 190 | isa = PBXGroup; 191 | children = ( 192 | C5BF78051B18D4EDF2F94B9E4A5338DB /* SimpleTabBar.swift */, 193 | 23EBAAE8167DCC478A4B15B9721E83A7 /* SimpleTabBarController.swift */, 194 | C09A759F79E88A3E2EF110EA43B7E620 /* SimpleTabBarItem.swift */, 195 | 7066BF7F7DA44BF782ED3132CF925E97 /* TabBarStyles */, 196 | 3661FE68FBD36250CD1460A425D4E192 /* ViewTransitions */, 197 | ); 198 | path = Classes; 199 | sourceTree = ""; 200 | }; 201 | A6DB7CC6C1B87A71C3DEC84ED4B98C37 /* Pods-SimpleTab_Tests */ = { 202 | isa = PBXGroup; 203 | children = ( 204 | CA33F067C0252A5132AB43913AFD6BB6 /* Info.plist */, 205 | 25AC3891E0DD08A7069BBB86CEE141A8 /* Pods-SimpleTab_Tests.modulemap */, 206 | A3C58C0C43091511C9FB0328BF2CE3DC /* Pods-SimpleTab_Tests-acknowledgements.markdown */, 207 | 5E2A572E7B191E752333FE6305B91BE6 /* Pods-SimpleTab_Tests-acknowledgements.plist */, 208 | E6547D5D1D6DBD0A9948CB35474C67C2 /* Pods-SimpleTab_Tests-dummy.m */, 209 | 41B1CB37DE4E47853821432677360BE9 /* Pods-SimpleTab_Tests-frameworks.sh */, 210 | 0EB28C11CDF10D39746C0F7948B92274 /* Pods-SimpleTab_Tests-resources.sh */, 211 | 4AB212BD9DD25EAD9E277A220211D7EE /* Pods-SimpleTab_Tests-umbrella.h */, 212 | BF900FE2B72AC43EBB9111C6EF6DDD3A /* Pods-SimpleTab_Tests.debug.xcconfig */, 213 | 0D4A421E88FD75D0461A94568C7881FC /* Pods-SimpleTab_Tests.release.xcconfig */, 214 | ); 215 | name = "Pods-SimpleTab_Tests"; 216 | path = "Target Support Files/Pods-SimpleTab_Tests"; 217 | sourceTree = ""; 218 | }; 219 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */, 223 | ); 224 | name = Frameworks; 225 | sourceTree = ""; 226 | }; 227 | C3647A190A84BDB966EBC6D205A501AF /* Development Pods */ = { 228 | isa = PBXGroup; 229 | children = ( 230 | 915413A09D4C512BDBB759B655D75877 /* SimpleTab */, 231 | ); 232 | name = "Development Pods"; 233 | sourceTree = ""; 234 | }; 235 | C9D4D9FBF11D10E568F4278D48348A8A /* Targets Support Files */ = { 236 | isa = PBXGroup; 237 | children = ( 238 | DDEA1BD9C443F6C496E484E5892B9E8E /* Pods-SimpleTab_Example */, 239 | A6DB7CC6C1B87A71C3DEC84ED4B98C37 /* Pods-SimpleTab_Tests */, 240 | ); 241 | name = "Targets Support Files"; 242 | sourceTree = ""; 243 | }; 244 | DDEA1BD9C443F6C496E484E5892B9E8E /* Pods-SimpleTab_Example */ = { 245 | isa = PBXGroup; 246 | children = ( 247 | 25EBF47D88C4128F735FBA8D9AA25D78 /* Info.plist */, 248 | 862C83F8A2C9BC0CBAA52AF85E679989 /* Pods-SimpleTab_Example.modulemap */, 249 | E873A5C23CB373906E0E4D954ED57406 /* Pods-SimpleTab_Example-acknowledgements.markdown */, 250 | A378174024B02B142926D9AE3DF1A82E /* Pods-SimpleTab_Example-acknowledgements.plist */, 251 | 401542844CC39ECF53ACAA81DD87FA80 /* Pods-SimpleTab_Example-dummy.m */, 252 | 9391D354EB8BAD0A79076592E454D70B /* Pods-SimpleTab_Example-frameworks.sh */, 253 | 2B1B100D150F77D8D6D8A52D47AACB36 /* Pods-SimpleTab_Example-resources.sh */, 254 | 7ECBA3F89856A86D78DD413B397ACF05 /* Pods-SimpleTab_Example-umbrella.h */, 255 | 732F1786D473924E7C78A92E116942B7 /* Pods-SimpleTab_Example.debug.xcconfig */, 256 | B12102E695832A30883478AC75FC875A /* Pods-SimpleTab_Example.release.xcconfig */, 257 | ); 258 | name = "Pods-SimpleTab_Example"; 259 | path = "Target Support Files/Pods-SimpleTab_Example"; 260 | sourceTree = ""; 261 | }; 262 | EBB56693B13FB6E0A6803C67684445A8 /* Products */ = { 263 | isa = PBXGroup; 264 | children = ( 265 | 45AF43AD38C831423DD0D4A0EA924615 /* Pods_SimpleTab_Example.framework */, 266 | 351CF7ED31FC5CDE4F7BC377FA2CAFDD /* Pods_SimpleTab_Tests.framework */, 267 | 8A40E9861EE8806E3AAAADBAFA5E5AA3 /* SimpleTab.bundle */, 268 | 7919A1EBA8CB56C912D6AB7D0F78F9F0 /* SimpleTab.framework */, 269 | ); 270 | name = Products; 271 | sourceTree = ""; 272 | }; 273 | FD07A720EE4CAA34BFD1FAC8964F4430 /* Support Files */ = { 274 | isa = PBXGroup; 275 | children = ( 276 | 2997B48C129EAFE3D2EFA8DF8B9AE095 /* Info.plist */, 277 | D15DCE39FD50B4570098674A6EB7C2C7 /* ResourceBundle-SimpleTab-Info.plist */, 278 | 421E0E87E415BB5B174B8FB83698A7F5 /* SimpleTab.modulemap */, 279 | 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */, 280 | 403482132EEDC5CFFA692F537AC53852 /* SimpleTab-dummy.m */, 281 | 1646663AE067B68B355668519EBE7F44 /* SimpleTab-prefix.pch */, 282 | B536E566ECF149240295961876377E27 /* SimpleTab-umbrella.h */, 283 | ); 284 | name = "Support Files"; 285 | path = "Example/Pods/Target Support Files/SimpleTab"; 286 | sourceTree = ""; 287 | }; 288 | /* End PBXGroup section */ 289 | 290 | /* Begin PBXHeadersBuildPhase section */ 291 | 04D12E5573691E2B31B0D6400795051E /* Headers */ = { 292 | isa = PBXHeadersBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | 34B4FDD5D9E23D64CA34FB7930FB3B79 /* Pods-SimpleTab_Example-umbrella.h in Headers */, 296 | ); 297 | runOnlyForDeploymentPostprocessing = 0; 298 | }; 299 | 08DDF84888336818B18440962E10F43F /* Headers */ = { 300 | isa = PBXHeadersBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | 8CB6DD8B21901289413966D9B2DEBDA5 /* SimpleTab-umbrella.h in Headers */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | D88961B52CE3E77FAF1BC7D878BDA766 /* Headers */ = { 308 | isa = PBXHeadersBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | 6CE9E15D11CEC9836DBED813AA4934D8 /* Pods-SimpleTab_Tests-umbrella.h in Headers */, 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | }; 315 | /* End PBXHeadersBuildPhase section */ 316 | 317 | /* Begin PBXNativeTarget section */ 318 | 88BF6E89958F88E59F7C3A899CC279F1 /* Pods-SimpleTab_Tests */ = { 319 | isa = PBXNativeTarget; 320 | buildConfigurationList = EA39022A304EF8C58E82E677C890A4E3 /* Build configuration list for PBXNativeTarget "Pods-SimpleTab_Tests" */; 321 | buildPhases = ( 322 | B88B32D0D371F9C96BEDA585F87966EE /* Sources */, 323 | 7832F4C04D870A1D098954FB99B93399 /* Frameworks */, 324 | D88961B52CE3E77FAF1BC7D878BDA766 /* Headers */, 325 | ); 326 | buildRules = ( 327 | ); 328 | dependencies = ( 329 | 79D1B18EE4A27322FC715FC765A827DE /* PBXTargetDependency */, 330 | ); 331 | name = "Pods-SimpleTab_Tests"; 332 | productName = "Pods-SimpleTab_Tests"; 333 | productReference = 351CF7ED31FC5CDE4F7BC377FA2CAFDD /* Pods_SimpleTab_Tests.framework */; 334 | productType = "com.apple.product-type.framework"; 335 | }; 336 | 88CA953BAC4817FDE12B90AF94F6EA45 /* SimpleTab-SimpleTab */ = { 337 | isa = PBXNativeTarget; 338 | buildConfigurationList = 831B10B800E57C96B927C20B55CC08AE /* Build configuration list for PBXNativeTarget "SimpleTab-SimpleTab" */; 339 | buildPhases = ( 340 | AC989ABF4E337CB2966ED42B17243A2F /* Sources */, 341 | CFC2F55DF6CAF50FC1621D9BBA5A82C3 /* Frameworks */, 342 | 7C97B0AD8F2ADDCAF0309FEAAD4E789F /* Resources */, 343 | ); 344 | buildRules = ( 345 | ); 346 | dependencies = ( 347 | ); 348 | name = "SimpleTab-SimpleTab"; 349 | productName = "SimpleTab-SimpleTab"; 350 | productReference = 8A40E9861EE8806E3AAAADBAFA5E5AA3 /* SimpleTab.bundle */; 351 | productType = "com.apple.product-type.bundle"; 352 | }; 353 | B7F3803DD9E7F362164BD858B362199A /* SimpleTab */ = { 354 | isa = PBXNativeTarget; 355 | buildConfigurationList = CAE2AA01BC773D413C28B6AA9AB25A00 /* Build configuration list for PBXNativeTarget "SimpleTab" */; 356 | buildPhases = ( 357 | A4C5DCF80FDEEFDA434C55C2B5A9EF0E /* Sources */, 358 | D78A0A166114BD87F532FC61B17FFE8A /* Frameworks */, 359 | F639C62C0BE7886DBF17E33435F10810 /* Resources */, 360 | 08DDF84888336818B18440962E10F43F /* Headers */, 361 | ); 362 | buildRules = ( 363 | ); 364 | dependencies = ( 365 | 54FE1841D75D07E914EC9007DEA6E316 /* PBXTargetDependency */, 366 | ); 367 | name = SimpleTab; 368 | productName = SimpleTab; 369 | productReference = 7919A1EBA8CB56C912D6AB7D0F78F9F0 /* SimpleTab.framework */; 370 | productType = "com.apple.product-type.framework"; 371 | }; 372 | DAB0A886373FBFBBFFE9647A96586B82 /* Pods-SimpleTab_Example */ = { 373 | isa = PBXNativeTarget; 374 | buildConfigurationList = 4EAEFCA8A6F164B14A6DB0A4ED3314BF /* Build configuration list for PBXNativeTarget "Pods-SimpleTab_Example" */; 375 | buildPhases = ( 376 | ECC2E3CF27E14B4938241AF521027F40 /* Sources */, 377 | 300DFF7401B6198E9C3460C95E1D2BC7 /* Frameworks */, 378 | 04D12E5573691E2B31B0D6400795051E /* Headers */, 379 | ); 380 | buildRules = ( 381 | ); 382 | dependencies = ( 383 | 6099F5520FE420B6F075FF538A1E2C7F /* PBXTargetDependency */, 384 | ); 385 | name = "Pods-SimpleTab_Example"; 386 | productName = "Pods-SimpleTab_Example"; 387 | productReference = 45AF43AD38C831423DD0D4A0EA924615 /* Pods_SimpleTab_Example.framework */; 388 | productType = "com.apple.product-type.framework"; 389 | }; 390 | /* End PBXNativeTarget section */ 391 | 392 | /* Begin PBXProject section */ 393 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 394 | isa = PBXProject; 395 | attributes = { 396 | LastSwiftUpdateCheck = 0730; 397 | LastUpgradeCheck = 0830; 398 | }; 399 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 400 | compatibilityVersion = "Xcode 3.2"; 401 | developmentRegion = English; 402 | hasScannedForEncodings = 0; 403 | knownRegions = ( 404 | en, 405 | ); 406 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 407 | productRefGroup = EBB56693B13FB6E0A6803C67684445A8 /* Products */; 408 | projectDirPath = ""; 409 | projectRoot = ""; 410 | targets = ( 411 | DAB0A886373FBFBBFFE9647A96586B82 /* Pods-SimpleTab_Example */, 412 | 88BF6E89958F88E59F7C3A899CC279F1 /* Pods-SimpleTab_Tests */, 413 | B7F3803DD9E7F362164BD858B362199A /* SimpleTab */, 414 | 88CA953BAC4817FDE12B90AF94F6EA45 /* SimpleTab-SimpleTab */, 415 | ); 416 | }; 417 | /* End PBXProject section */ 418 | 419 | /* Begin PBXResourcesBuildPhase section */ 420 | 7C97B0AD8F2ADDCAF0309FEAAD4E789F /* Resources */ = { 421 | isa = PBXResourcesBuildPhase; 422 | buildActionMask = 2147483647; 423 | files = ( 424 | ); 425 | runOnlyForDeploymentPostprocessing = 0; 426 | }; 427 | F639C62C0BE7886DBF17E33435F10810 /* Resources */ = { 428 | isa = PBXResourcesBuildPhase; 429 | buildActionMask = 2147483647; 430 | files = ( 431 | 36BA5D24AA79BB92E02463C8911945AD /* SimpleTab.bundle in Resources */, 432 | ); 433 | runOnlyForDeploymentPostprocessing = 0; 434 | }; 435 | /* End PBXResourcesBuildPhase section */ 436 | 437 | /* Begin PBXSourcesBuildPhase section */ 438 | A4C5DCF80FDEEFDA434C55C2B5A9EF0E /* Sources */ = { 439 | isa = PBXSourcesBuildPhase; 440 | buildActionMask = 2147483647; 441 | files = ( 442 | AF2FE05A8007B5D31D36D321F1F850BC /* CrossFadeViewTransition.swift in Sources */, 443 | 38D7522422D126DA30742A2B85F86C5E /* ElegantTabBarStyle.swift in Sources */, 444 | 5D0E45354EB07D88914BBE8C7284936E /* PopTabBarStyle.swift in Sources */, 445 | 39A257E06DD946F8F3860E7A6E2CCF54 /* PopViewTransition.swift in Sources */, 446 | BF8078265CA8FFA9B344EBC62792E910 /* SimpleTab-dummy.m in Sources */, 447 | 3D98CB7DA250DDF8D6E5ED0C473A56A4 /* SimpleTabBar.swift in Sources */, 448 | 83E66FFB51FFA8E9F07B0A5290259023 /* SimpleTabBarController.swift in Sources */, 449 | B7C886F4A8C934449DC808A432C03904 /* SimpleTabBarItem.swift in Sources */, 450 | 2A32160E9E564AD1F62113733D02EEDE /* SimpleTabBarStyle.swift in Sources */, 451 | ); 452 | runOnlyForDeploymentPostprocessing = 0; 453 | }; 454 | AC989ABF4E337CB2966ED42B17243A2F /* Sources */ = { 455 | isa = PBXSourcesBuildPhase; 456 | buildActionMask = 2147483647; 457 | files = ( 458 | ); 459 | runOnlyForDeploymentPostprocessing = 0; 460 | }; 461 | B88B32D0D371F9C96BEDA585F87966EE /* Sources */ = { 462 | isa = PBXSourcesBuildPhase; 463 | buildActionMask = 2147483647; 464 | files = ( 465 | 4A689E71967787683E7FC25377B53109 /* Pods-SimpleTab_Tests-dummy.m in Sources */, 466 | ); 467 | runOnlyForDeploymentPostprocessing = 0; 468 | }; 469 | ECC2E3CF27E14B4938241AF521027F40 /* Sources */ = { 470 | isa = PBXSourcesBuildPhase; 471 | buildActionMask = 2147483647; 472 | files = ( 473 | 57CDF5D84C901200799A7DCB33EF1F89 /* Pods-SimpleTab_Example-dummy.m in Sources */, 474 | ); 475 | runOnlyForDeploymentPostprocessing = 0; 476 | }; 477 | /* End PBXSourcesBuildPhase section */ 478 | 479 | /* Begin PBXTargetDependency section */ 480 | 54FE1841D75D07E914EC9007DEA6E316 /* PBXTargetDependency */ = { 481 | isa = PBXTargetDependency; 482 | name = "SimpleTab-SimpleTab"; 483 | target = 88CA953BAC4817FDE12B90AF94F6EA45 /* SimpleTab-SimpleTab */; 484 | targetProxy = E454DE7CA27790C5F2B821015129C704 /* PBXContainerItemProxy */; 485 | }; 486 | 6099F5520FE420B6F075FF538A1E2C7F /* PBXTargetDependency */ = { 487 | isa = PBXTargetDependency; 488 | name = SimpleTab; 489 | target = B7F3803DD9E7F362164BD858B362199A /* SimpleTab */; 490 | targetProxy = 18657838D6B3B3C0DDFEAEF5F3601D07 /* PBXContainerItemProxy */; 491 | }; 492 | 79D1B18EE4A27322FC715FC765A827DE /* PBXTargetDependency */ = { 493 | isa = PBXTargetDependency; 494 | name = SimpleTab; 495 | target = B7F3803DD9E7F362164BD858B362199A /* SimpleTab */; 496 | targetProxy = 2FAF98BD3B47C12DB4EA5605A2EDE1F9 /* PBXContainerItemProxy */; 497 | }; 498 | /* End PBXTargetDependency section */ 499 | 500 | /* Begin XCBuildConfiguration section */ 501 | 1804E63DBA439AE75EC8AD529223CF89 /* Release */ = { 502 | isa = XCBuildConfiguration; 503 | baseConfigurationReference = 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */; 504 | buildSettings = { 505 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SimpleTab"; 506 | ENABLE_STRICT_OBJC_MSGSEND = YES; 507 | GCC_NO_COMMON_BLOCKS = YES; 508 | INFOPLIST_FILE = "Target Support Files/SimpleTab/ResourceBundle-SimpleTab-Info.plist"; 509 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 510 | PRODUCT_NAME = SimpleTab; 511 | SDKROOT = iphoneos; 512 | SKIP_INSTALL = YES; 513 | TARGETED_DEVICE_FAMILY = "1,2"; 514 | WRAPPER_EXTENSION = bundle; 515 | }; 516 | name = Release; 517 | }; 518 | 2579965BEFC8BC0E957A0F9AB7D1231D /* Release */ = { 519 | isa = XCBuildConfiguration; 520 | baseConfigurationReference = 0D4A421E88FD75D0461A94568C7881FC /* Pods-SimpleTab_Tests.release.xcconfig */; 521 | buildSettings = { 522 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 523 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 524 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 525 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 526 | CURRENT_PROJECT_VERSION = 1; 527 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 528 | DEFINES_MODULE = YES; 529 | DYLIB_COMPATIBILITY_VERSION = 1; 530 | DYLIB_CURRENT_VERSION = 1; 531 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 532 | ENABLE_STRICT_OBJC_MSGSEND = YES; 533 | GCC_NO_COMMON_BLOCKS = YES; 534 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleTab_Tests/Info.plist"; 535 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 536 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 537 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 538 | MACH_O_TYPE = staticlib; 539 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.modulemap"; 540 | MTL_ENABLE_DEBUG_INFO = NO; 541 | OTHER_LDFLAGS = ""; 542 | OTHER_LIBTOOLFLAGS = ""; 543 | PODS_ROOT = "$(SRCROOT)"; 544 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 545 | PRODUCT_NAME = Pods_SimpleTab_Tests; 546 | SDKROOT = iphoneos; 547 | SKIP_INSTALL = YES; 548 | TARGETED_DEVICE_FAMILY = "1,2"; 549 | VERSIONING_SYSTEM = "apple-generic"; 550 | VERSION_INFO_PREFIX = ""; 551 | }; 552 | name = Release; 553 | }; 554 | 2D875502D9FC4AB1CA75FAEB2B0866BC /* Debug */ = { 555 | isa = XCBuildConfiguration; 556 | baseConfigurationReference = 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */; 557 | buildSettings = { 558 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SimpleTab"; 559 | ENABLE_STRICT_OBJC_MSGSEND = YES; 560 | GCC_NO_COMMON_BLOCKS = YES; 561 | INFOPLIST_FILE = "Target Support Files/SimpleTab/ResourceBundle-SimpleTab-Info.plist"; 562 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 563 | PRODUCT_NAME = SimpleTab; 564 | SDKROOT = iphoneos; 565 | SKIP_INSTALL = YES; 566 | TARGETED_DEVICE_FAMILY = "1,2"; 567 | WRAPPER_EXTENSION = bundle; 568 | }; 569 | name = Debug; 570 | }; 571 | 5CF524CEE4F5B6D06575FA40998C99B5 /* Release */ = { 572 | isa = XCBuildConfiguration; 573 | baseConfigurationReference = 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */; 574 | buildSettings = { 575 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 576 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 577 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 578 | CURRENT_PROJECT_VERSION = 1; 579 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 580 | DEFINES_MODULE = YES; 581 | DYLIB_COMPATIBILITY_VERSION = 1; 582 | DYLIB_CURRENT_VERSION = 1; 583 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 584 | ENABLE_STRICT_OBJC_MSGSEND = YES; 585 | GCC_NO_COMMON_BLOCKS = YES; 586 | GCC_PREFIX_HEADER = "Target Support Files/SimpleTab/SimpleTab-prefix.pch"; 587 | INFOPLIST_FILE = "Target Support Files/SimpleTab/Info.plist"; 588 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 589 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 590 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 591 | MODULEMAP_FILE = "Target Support Files/SimpleTab/SimpleTab.modulemap"; 592 | MTL_ENABLE_DEBUG_INFO = NO; 593 | PRODUCT_NAME = SimpleTab; 594 | SDKROOT = iphoneos; 595 | SKIP_INSTALL = YES; 596 | SWIFT_VERSION = 3.0; 597 | TARGETED_DEVICE_FAMILY = "1,2"; 598 | VERSIONING_SYSTEM = "apple-generic"; 599 | VERSION_INFO_PREFIX = ""; 600 | }; 601 | name = Release; 602 | }; 603 | 6E4A86733209BD16EFED8550DE4DB6B5 /* Debug */ = { 604 | isa = XCBuildConfiguration; 605 | baseConfigurationReference = 732F1786D473924E7C78A92E116942B7 /* Pods-SimpleTab_Example.debug.xcconfig */; 606 | buildSettings = { 607 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 608 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 609 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 610 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 611 | CURRENT_PROJECT_VERSION = 1; 612 | DEBUG_INFORMATION_FORMAT = dwarf; 613 | DEFINES_MODULE = YES; 614 | DYLIB_COMPATIBILITY_VERSION = 1; 615 | DYLIB_CURRENT_VERSION = 1; 616 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 617 | ENABLE_STRICT_OBJC_MSGSEND = YES; 618 | GCC_NO_COMMON_BLOCKS = YES; 619 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleTab_Example/Info.plist"; 620 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 621 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 622 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 623 | MACH_O_TYPE = staticlib; 624 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.modulemap"; 625 | MTL_ENABLE_DEBUG_INFO = YES; 626 | OTHER_LDFLAGS = ""; 627 | OTHER_LIBTOOLFLAGS = ""; 628 | PODS_ROOT = "$(SRCROOT)"; 629 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 630 | PRODUCT_NAME = Pods_SimpleTab_Example; 631 | SDKROOT = iphoneos; 632 | SKIP_INSTALL = YES; 633 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 634 | TARGETED_DEVICE_FAMILY = "1,2"; 635 | VERSIONING_SYSTEM = "apple-generic"; 636 | VERSION_INFO_PREFIX = ""; 637 | }; 638 | name = Debug; 639 | }; 640 | 8D29B2E0E009DD01766893B7F3DF05EA /* Release */ = { 641 | isa = XCBuildConfiguration; 642 | baseConfigurationReference = B12102E695832A30883478AC75FC875A /* Pods-SimpleTab_Example.release.xcconfig */; 643 | buildSettings = { 644 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 645 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 646 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 647 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 648 | CURRENT_PROJECT_VERSION = 1; 649 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 650 | DEFINES_MODULE = YES; 651 | DYLIB_COMPATIBILITY_VERSION = 1; 652 | DYLIB_CURRENT_VERSION = 1; 653 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 654 | ENABLE_STRICT_OBJC_MSGSEND = YES; 655 | GCC_NO_COMMON_BLOCKS = YES; 656 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleTab_Example/Info.plist"; 657 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 658 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 659 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 660 | MACH_O_TYPE = staticlib; 661 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleTab_Example/Pods-SimpleTab_Example.modulemap"; 662 | MTL_ENABLE_DEBUG_INFO = NO; 663 | OTHER_LDFLAGS = ""; 664 | OTHER_LIBTOOLFLAGS = ""; 665 | PODS_ROOT = "$(SRCROOT)"; 666 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 667 | PRODUCT_NAME = Pods_SimpleTab_Example; 668 | SDKROOT = iphoneos; 669 | SKIP_INSTALL = YES; 670 | TARGETED_DEVICE_FAMILY = "1,2"; 671 | VERSIONING_SYSTEM = "apple-generic"; 672 | VERSION_INFO_PREFIX = ""; 673 | }; 674 | name = Release; 675 | }; 676 | 8DED8AD26D381A6ACFF202E5217EC498 /* Release */ = { 677 | isa = XCBuildConfiguration; 678 | buildSettings = { 679 | ALWAYS_SEARCH_USER_PATHS = NO; 680 | CLANG_ANALYZER_NONNULL = YES; 681 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 682 | CLANG_CXX_LIBRARY = "libc++"; 683 | CLANG_ENABLE_MODULES = YES; 684 | CLANG_ENABLE_OBJC_ARC = YES; 685 | CLANG_WARN_BOOL_CONVERSION = YES; 686 | CLANG_WARN_CONSTANT_CONVERSION = YES; 687 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 688 | CLANG_WARN_EMPTY_BODY = YES; 689 | CLANG_WARN_ENUM_CONVERSION = YES; 690 | CLANG_WARN_INFINITE_RECURSION = YES; 691 | CLANG_WARN_INT_CONVERSION = YES; 692 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 693 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 694 | CLANG_WARN_UNREACHABLE_CODE = YES; 695 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 696 | CODE_SIGNING_REQUIRED = NO; 697 | COPY_PHASE_STRIP = YES; 698 | ENABLE_NS_ASSERTIONS = NO; 699 | ENABLE_STRICT_OBJC_MSGSEND = YES; 700 | GCC_C_LANGUAGE_STANDARD = gnu99; 701 | GCC_NO_COMMON_BLOCKS = YES; 702 | GCC_PREPROCESSOR_DEFINITIONS = ( 703 | "POD_CONFIGURATION_RELEASE=1", 704 | "$(inherited)", 705 | ); 706 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 707 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 708 | GCC_WARN_UNDECLARED_SELECTOR = YES; 709 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 710 | GCC_WARN_UNUSED_FUNCTION = YES; 711 | GCC_WARN_UNUSED_VARIABLE = YES; 712 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 713 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 714 | STRIP_INSTALLED_PRODUCT = NO; 715 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 716 | SYMROOT = "${SRCROOT}/../build"; 717 | VALIDATE_PRODUCT = YES; 718 | }; 719 | name = Release; 720 | }; 721 | 9E1E4E48AF2EAB23169E611BF694090A /* Debug */ = { 722 | isa = XCBuildConfiguration; 723 | buildSettings = { 724 | ALWAYS_SEARCH_USER_PATHS = NO; 725 | CLANG_ANALYZER_NONNULL = YES; 726 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 727 | CLANG_CXX_LIBRARY = "libc++"; 728 | CLANG_ENABLE_MODULES = YES; 729 | CLANG_ENABLE_OBJC_ARC = YES; 730 | CLANG_WARN_BOOL_CONVERSION = YES; 731 | CLANG_WARN_CONSTANT_CONVERSION = YES; 732 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 733 | CLANG_WARN_EMPTY_BODY = YES; 734 | CLANG_WARN_ENUM_CONVERSION = YES; 735 | CLANG_WARN_INFINITE_RECURSION = YES; 736 | CLANG_WARN_INT_CONVERSION = YES; 737 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 738 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 739 | CLANG_WARN_UNREACHABLE_CODE = YES; 740 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 741 | CODE_SIGNING_REQUIRED = NO; 742 | COPY_PHASE_STRIP = NO; 743 | ENABLE_STRICT_OBJC_MSGSEND = YES; 744 | ENABLE_TESTABILITY = YES; 745 | GCC_C_LANGUAGE_STANDARD = gnu99; 746 | GCC_DYNAMIC_NO_PIC = NO; 747 | GCC_NO_COMMON_BLOCKS = YES; 748 | GCC_OPTIMIZATION_LEVEL = 0; 749 | GCC_PREPROCESSOR_DEFINITIONS = ( 750 | "POD_CONFIGURATION_DEBUG=1", 751 | "DEBUG=1", 752 | "$(inherited)", 753 | ); 754 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 755 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 756 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 757 | GCC_WARN_UNDECLARED_SELECTOR = YES; 758 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 759 | GCC_WARN_UNUSED_FUNCTION = YES; 760 | GCC_WARN_UNUSED_VARIABLE = YES; 761 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 762 | ONLY_ACTIVE_ARCH = YES; 763 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 764 | STRIP_INSTALLED_PRODUCT = NO; 765 | SYMROOT = "${SRCROOT}/../build"; 766 | }; 767 | name = Debug; 768 | }; 769 | EA9E83F5649A86BCA6FD59C7243DE532 /* Debug */ = { 770 | isa = XCBuildConfiguration; 771 | baseConfigurationReference = BF900FE2B72AC43EBB9111C6EF6DDD3A /* Pods-SimpleTab_Tests.debug.xcconfig */; 772 | buildSettings = { 773 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 774 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 775 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 776 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 777 | CURRENT_PROJECT_VERSION = 1; 778 | DEBUG_INFORMATION_FORMAT = dwarf; 779 | DEFINES_MODULE = YES; 780 | DYLIB_COMPATIBILITY_VERSION = 1; 781 | DYLIB_CURRENT_VERSION = 1; 782 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 783 | ENABLE_STRICT_OBJC_MSGSEND = YES; 784 | GCC_NO_COMMON_BLOCKS = YES; 785 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleTab_Tests/Info.plist"; 786 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 787 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 788 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 789 | MACH_O_TYPE = staticlib; 790 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleTab_Tests/Pods-SimpleTab_Tests.modulemap"; 791 | MTL_ENABLE_DEBUG_INFO = YES; 792 | OTHER_LDFLAGS = ""; 793 | OTHER_LIBTOOLFLAGS = ""; 794 | PODS_ROOT = "$(SRCROOT)"; 795 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 796 | PRODUCT_NAME = Pods_SimpleTab_Tests; 797 | SDKROOT = iphoneos; 798 | SKIP_INSTALL = YES; 799 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 800 | TARGETED_DEVICE_FAMILY = "1,2"; 801 | VERSIONING_SYSTEM = "apple-generic"; 802 | VERSION_INFO_PREFIX = ""; 803 | }; 804 | name = Debug; 805 | }; 806 | EEAE40F58CA3A25BB2BC8876620891D6 /* Debug */ = { 807 | isa = XCBuildConfiguration; 808 | baseConfigurationReference = 3E7F86CE65B98E21CEDE632CBC5CDB8A /* SimpleTab.xcconfig */; 809 | buildSettings = { 810 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 811 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 812 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 813 | CURRENT_PROJECT_VERSION = 1; 814 | DEBUG_INFORMATION_FORMAT = dwarf; 815 | DEFINES_MODULE = YES; 816 | DYLIB_COMPATIBILITY_VERSION = 1; 817 | DYLIB_CURRENT_VERSION = 1; 818 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 819 | ENABLE_STRICT_OBJC_MSGSEND = YES; 820 | GCC_NO_COMMON_BLOCKS = YES; 821 | GCC_PREFIX_HEADER = "Target Support Files/SimpleTab/SimpleTab-prefix.pch"; 822 | INFOPLIST_FILE = "Target Support Files/SimpleTab/Info.plist"; 823 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 824 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 825 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 826 | MODULEMAP_FILE = "Target Support Files/SimpleTab/SimpleTab.modulemap"; 827 | MTL_ENABLE_DEBUG_INFO = YES; 828 | PRODUCT_NAME = SimpleTab; 829 | SDKROOT = iphoneos; 830 | SKIP_INSTALL = YES; 831 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 832 | SWIFT_VERSION = 3.0; 833 | TARGETED_DEVICE_FAMILY = "1,2"; 834 | VERSIONING_SYSTEM = "apple-generic"; 835 | VERSION_INFO_PREFIX = ""; 836 | }; 837 | name = Debug; 838 | }; 839 | /* End XCBuildConfiguration section */ 840 | 841 | /* Begin XCConfigurationList section */ 842 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 843 | isa = XCConfigurationList; 844 | buildConfigurations = ( 845 | 9E1E4E48AF2EAB23169E611BF694090A /* Debug */, 846 | 8DED8AD26D381A6ACFF202E5217EC498 /* Release */, 847 | ); 848 | defaultConfigurationIsVisible = 0; 849 | defaultConfigurationName = Release; 850 | }; 851 | 4EAEFCA8A6F164B14A6DB0A4ED3314BF /* Build configuration list for PBXNativeTarget "Pods-SimpleTab_Example" */ = { 852 | isa = XCConfigurationList; 853 | buildConfigurations = ( 854 | 6E4A86733209BD16EFED8550DE4DB6B5 /* Debug */, 855 | 8D29B2E0E009DD01766893B7F3DF05EA /* Release */, 856 | ); 857 | defaultConfigurationIsVisible = 0; 858 | defaultConfigurationName = Release; 859 | }; 860 | 831B10B800E57C96B927C20B55CC08AE /* Build configuration list for PBXNativeTarget "SimpleTab-SimpleTab" */ = { 861 | isa = XCConfigurationList; 862 | buildConfigurations = ( 863 | 2D875502D9FC4AB1CA75FAEB2B0866BC /* Debug */, 864 | 1804E63DBA439AE75EC8AD529223CF89 /* Release */, 865 | ); 866 | defaultConfigurationIsVisible = 0; 867 | defaultConfigurationName = Release; 868 | }; 869 | CAE2AA01BC773D413C28B6AA9AB25A00 /* Build configuration list for PBXNativeTarget "SimpleTab" */ = { 870 | isa = XCConfigurationList; 871 | buildConfigurations = ( 872 | EEAE40F58CA3A25BB2BC8876620891D6 /* Debug */, 873 | 5CF524CEE4F5B6D06575FA40998C99B5 /* Release */, 874 | ); 875 | defaultConfigurationIsVisible = 0; 876 | defaultConfigurationName = Release; 877 | }; 878 | EA39022A304EF8C58E82E677C890A4E3 /* Build configuration list for PBXNativeTarget "Pods-SimpleTab_Tests" */ = { 879 | isa = XCConfigurationList; 880 | buildConfigurations = ( 881 | EA9E83F5649A86BCA6FD59C7243DE532 /* Debug */, 882 | 2579965BEFC8BC0E957A0F9AB7D1231D /* Release */, 883 | ); 884 | defaultConfigurationIsVisible = 0; 885 | defaultConfigurationName = Release; 886 | }; 887 | /* End XCConfigurationList section */ 888 | }; 889 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 890 | } 891 | --------------------------------------------------------------------------------