├── Project ├── XHTransformNavigationController │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── 76.png │ │ │ ├── 114.png │ │ │ ├── 120.png │ │ │ ├── 152.png │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ ├── Default@2x.png │ │ │ ├── Default-568h@2x.png │ │ │ ├── Default-Portrait.png │ │ │ ├── Default-Portrait@2x.png │ │ │ └── Contents.json │ ├── RootViewController.h │ ├── HiddenNavigationBarViewController.h │ ├── XHTransformNavigationController-Prefix.pch │ ├── AppDelegate.h │ ├── main.m │ ├── KKNavigationController │ │ ├── KKNavigationController.h │ │ └── KKNavigationController.m │ ├── XHTransformNavigationController-Info.plist │ ├── RootViewController.m │ ├── HiddenNavigationBarViewController.m │ └── AppDelegate.m ├── XHTransformNavigationControllerTests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── XHTransformNavigationControllerTests-Info.plist │ └── XHTransformNavigationControllerTests.m └── XHTransformNavigationController.xcodeproj │ ├── xcuserdata │ ├── JackMacbook.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── XHTransformNavigationController.xcscheme │ └── Jack.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── XHTransformNavigationController.xcscheme │ ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ ├── Jack.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── JackMacbook.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── XHTransformNavigationController.xccheckout │ └── project.pbxproj ├── Source ├── UINavigationController+XHNavigationControllerHiddenShowBug.h └── UINavigationController+XHNavigationControllerHiddenShowBug.m ├── XHTransformNavigationController.podspec └── README.md /Project/XHTransformNavigationController/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationControllerTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/xcuserdata/JackMacbook.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default@2x.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-Portrait.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/xcuserdata/Jack.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/xcuserdata/Jack.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/xcuserdata/JackMacbook.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackTeam/XHTransformNavigationController/HEAD/Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/xcuserdata/JackMacbook.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/RootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.h 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface RootViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/HiddenNavigationBarViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HiddenNavigationBarViewController.h 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HiddenNavigationBarViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/XHTransformNavigationController-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_3_0 10 | #warning "This project uses features only available in iOS SDK 3.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/UINavigationController+XHNavigationControllerHiddenShowBug.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+XHNavigationControllerHiddenShowBug.h 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (XHNavigationControllerHiddenShowBug) 12 | - (void)pushViewControllerWithNavigationControllerTransition:(UIViewController *)viewController; 13 | - (void)popViewControllerWithNavigationControllerTransition; 14 | @end 15 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/xcuserdata/Jack.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | XHTransformNavigationController.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | ABF2C660184CB9E5009BC758 16 | 17 | primary 18 | 19 | 20 | ABF2C67B184CB9E5009BC758 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/xcuserdata/JackMacbook.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | XHTransformNavigationController.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | ABF2C660184CB9E5009BC758 16 | 17 | primary 18 | 19 | 20 | ABF2C67B184CB9E5009BC758 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationControllerTests/XHTransformNavigationControllerTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.JackTeam.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/KKNavigationController/KKNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // KKNavigationController.h 3 | // TS 4 | // 5 | // Created by Coneboy_K on 13-12-2. 6 | // Copyright (c) 2013年 Coneboy_K. All rights reserved. MIT 7 | // WELCOME TO MY BLOG http://www.coneboy.com 8 | // 9 | 10 | #import 11 | 12 | #define KEY_WINDOW [[UIApplication sharedApplication]keyWindow] 13 | #define kkBackViewHeight [UIScreen mainScreen].bounds.size.height 14 | #define kkBackViewWidth [UIScreen mainScreen].bounds.size.width 15 | 16 | #define iOS7 ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending ) 17 | 18 | // 背景视图起始frame.x 19 | #define startX -200; 20 | 21 | 22 | @interface KKNavigationController : UINavigationController 23 | { 24 | 25 | } 26 | 27 | // 默认为特效开启 28 | @property (nonatomic, assign) BOOL canDragBack; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationControllerTests/XHTransformNavigationControllerTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // XHTransformNavigationControllerTests.m 3 | // XHTransformNavigationControllerTests 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XHTransformNavigationControllerTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation XHTransformNavigationControllerTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /XHTransformNavigationController.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod spec lint XHTransformNavigationController.podspec' to ensure this is a 3 | # valid spec and to remove all comments including this before submitting the spec. 4 | # 5 | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html 6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = "XHTransformNavigationController" 11 | s.version = "0.0.1" 12 | s.summary = "利用导航控制器的时候,经常会遇到,在某个页面不需要navigationBar,有些页面需要navigationBar,控制navigationBar的隐藏和显示的过程中会出现头部空白区域,那就是navigationBar隐藏之后,留下的系统Bug, 在这里提供一个解决方案" 13 | s.homepage = "https://github.com/JackTeame/XHTransformNavigationController" 14 | s.license = 'MIT' 15 | s.author = { "xhzengAIB" => "xhzengAIB@gmail.com" } 16 | s.source = { :git => "https://github.com/JackTeame/XHTransformNavigationController.git", :tag => "0.0.1" } 17 | s.source_files = 'Source', 'Source/**/*.{h,m}' 18 | s.exclude_files = 'Source/Resource' 19 | end 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | XHTransformNavigationController 2 | =============================== 3 | 4 | 利用导航控制器的时候,经常会遇到,在某个页面不需要navigationBar,有些页面需要navigationBar, 5 | 控制navigationBar的隐藏和显示的过程中会出现头部空白区域,那就是navigationBar隐藏之后,留下的系统Bug, 6 | 在这里提供一个解决方案 7 | 8 | 9 | 10 | 使用例子很简单,如下: 11 | 12 | 比如A控制器 Push 到 B控制 13 | 14 | [self.navigationController pushViewControllerWithNavigationControllerTransition:hiddenNavigationBarViewController]; 15 | 16 | // hiddenNavigationBarViewController就是需要隐藏导航栏的界面了,既是B控制器 17 | 18 | 19 | ## License 20 | 21 | 中文: XHTransformNavigationController 是在MIT协议下使用的,可以在LICENSE文件里面找到相关的使用协议信息. 22 | 23 | English: XHTransformNavigationController is acailable under the MIT license, see the LICENSE file for more information. 24 | 25 | 26 | ======================= 27 | ## 须知 28 | 中文:如果您在您的项目中使用开源组件,请给我们发[电子邮件](mailto:xhzengAIB@gmail.com?subject=From%20GitHub%20XHTransformNavigationController)告诉我们您的应用程序的名称。 29 | 30 | ## Instructions 31 | 32 | English:If you use open source components in your project, please [Email us](mailto:xhzengAIB@gmail.com?subject=From%20GitHub%20XHTransformNavigationController) to tell us the name of your application. 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "size" : "40x40", 10 | "idiom" : "iphone", 11 | "filename" : "114.png", 12 | "scale" : "2x" 13 | }, 14 | { 15 | "size" : "60x60", 16 | "idiom" : "iphone", 17 | "filename" : "120.png", 18 | "scale" : "2x" 19 | }, 20 | { 21 | "idiom" : "ipad", 22 | "size" : "29x29", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "idiom" : "ipad", 27 | "size" : "29x29", 28 | "scale" : "2x" 29 | }, 30 | { 31 | "idiom" : "ipad", 32 | "size" : "40x40", 33 | "scale" : "1x" 34 | }, 35 | { 36 | "idiom" : "ipad", 37 | "size" : "40x40", 38 | "scale" : "2x" 39 | }, 40 | { 41 | "size" : "76x76", 42 | "idiom" : "ipad", 43 | "filename" : "76.png", 44 | "scale" : "1x" 45 | }, 46 | { 47 | "size" : "76x76", 48 | "idiom" : "ipad", 49 | "filename" : "152.png", 50 | "scale" : "2x" 51 | } 52 | ], 53 | "info" : { 54 | "version" : 1, 55 | "author" : "xcode" 56 | } 57 | } -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "filename" : "Default@2x.png", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "extent" : "full-screen", 13 | "idiom" : "iphone", 14 | "subtype" : "retina4", 15 | "filename" : "Default-568h@2x.png", 16 | "minimum-system-version" : "7.0", 17 | "orientation" : "portrait", 18 | "scale" : "2x" 19 | }, 20 | { 21 | "orientation" : "portrait", 22 | "idiom" : "ipad", 23 | "extent" : "full-screen", 24 | "minimum-system-version" : "7.0", 25 | "filename" : "Default-Portrait.png", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "orientation" : "landscape", 30 | "idiom" : "ipad", 31 | "extent" : "full-screen", 32 | "minimum-system-version" : "7.0", 33 | "scale" : "1x" 34 | }, 35 | { 36 | "orientation" : "portrait", 37 | "idiom" : "ipad", 38 | "extent" : "full-screen", 39 | "minimum-system-version" : "7.0", 40 | "filename" : "Default-Portrait@2x.png", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "orientation" : "landscape", 45 | "idiom" : "ipad", 46 | "extent" : "full-screen", 47 | "minimum-system-version" : "7.0", 48 | "scale" : "2x" 49 | } 50 | ], 51 | "info" : { 52 | "version" : 1, 53 | "author" : "xcode" 54 | } 55 | } -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/XHTransformNavigationController-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.JackTeam.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/project.xcworkspace/xcshareddata/XHTransformNavigationController.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 193F5996-F1EF-4C49-8EFA-DC84FF344630 9 | IDESourceControlProjectName 10 | XHTransformNavigationController 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 381B3D7F-D238-4930-A453-016C91B6029C 14 | https://github.com/JackTeam/XHTransformNavigationController.git 15 | 16 | IDESourceControlProjectPath 17 | Project/XHTransformNavigationController.xcodeproj/project.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 381B3D7F-D238-4930-A453-016C91B6029C 21 | ../../.. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/JackTeam/XHTransformNavigationController.git 25 | IDESourceControlProjectVersion 26 | 110 27 | IDESourceControlProjectWCCIdentifier 28 | 381B3D7F-D238-4930-A453-016C91B6029C 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 381B3D7F-D238-4930-A453-016C91B6029C 36 | IDESourceControlWCCName 37 | XHTransformNavigationController 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/RootViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.m 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "RootViewController.h" 10 | #import "UINavigationController+XHNavigationControllerHiddenShowBug.h" 11 | #import "HiddenNavigationBarViewController.h" 12 | 13 | @interface RootViewController () 14 | @end 15 | 16 | @implementation RootViewController 17 | 18 | #pragma mark - Handle 19 | 20 | - (void)badPushBarButtonItemHandle { 21 | HiddenNavigationBarViewController *hiddenNavigationBarViewController = [[HiddenNavigationBarViewController alloc] init]; 22 | [self.navigationController pushViewController:hiddenNavigationBarViewController animated:YES]; 23 | } 24 | 25 | - (void)likePushBarButtonItemHandle { 26 | HiddenNavigationBarViewController *hiddenNavigationBarViewController = [[HiddenNavigationBarViewController alloc] init]; 27 | [self.navigationController pushViewControllerWithNavigationControllerTransition:hiddenNavigationBarViewController]; 28 | } 29 | 30 | #pragma mark - Left cycle init 31 | 32 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 33 | { 34 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 35 | if (self) { 36 | // Custom initialization 37 | } 38 | return self; 39 | } 40 | 41 | - (void)viewDidLoad 42 | { 43 | [super viewDidLoad]; 44 | // Do any additional setup after loading the view. 45 | 46 | self.title = NSLocalizedString(@"主页", @""); 47 | self.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.603 blue:0.417 alpha:1.000]; 48 | 49 | UIBarButtonItem *badPushBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"糟糕的", @"") style:UIBarButtonItemStylePlain target:self action:@selector(badPushBarButtonItemHandle)]; 50 | 51 | UIBarButtonItem *likePushBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"喜欢的", @"") style:UIBarButtonItemStylePlain target:self action:@selector(likePushBarButtonItemHandle)]; 52 | self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:badPushBarButtonItem, likePushBarButtonItem, nil]; 53 | } 54 | 55 | - (void)didReceiveMemoryWarning 56 | { 57 | [super didReceiveMemoryWarning]; 58 | // Dispose of any resources that can be recreated. 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/HiddenNavigationBarViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HiddenNavigationBarViewController.m 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "HiddenNavigationBarViewController.h" 10 | 11 | @interface HiddenNavigationBarViewController () 12 | 13 | @end 14 | 15 | @implementation HiddenNavigationBarViewController 16 | 17 | #pragma mark - handle 18 | 19 | - (void)showAndHiddenHandle:(UIButton *)sender { 20 | sender.selected = !sender.selected; 21 | self.navigationController.navigationBarHidden = sender.selected; 22 | if (sender.selected) { 23 | [sender setTitle:NSLocalizedString(@"显示", @"") forState:UIControlStateNormal]; 24 | } else { 25 | [sender setTitle:NSLocalizedString(@"隐藏", @"") forState:UIControlStateNormal]; 26 | } 27 | } 28 | 29 | #pragma mark - left cycle init 30 | 31 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 32 | { 33 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 34 | if (self) { 35 | // Custom initialization 36 | } 37 | return self; 38 | } 39 | 40 | - (void)viewWillAppear:(BOOL)animated { 41 | [super viewWillAppear:animated]; 42 | self.navigationController.navigationBarHidden = YES; 43 | } 44 | 45 | - (void)viewWillDisappear:(BOOL)animated { 46 | [super viewWillDisappear:animated]; 47 | self.navigationController.navigationBarHidden = NO; 48 | } 49 | 50 | - (void)viewDidLoad 51 | { 52 | [super viewDidLoad]; 53 | // Do any additional setup after loading the view. 54 | self.title = NSLocalizedString(@"隐藏和显示", @""); 55 | self.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.603 blue:0.417 alpha:1.000]; 56 | 57 | UIButton *showNavigationBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 80, 35)]; 58 | showNavigationBarButton.backgroundColor = [UIColor colorWithRed:0.243 green:0.230 blue:1.000 alpha:1.000]; 59 | [showNavigationBarButton setTitle:NSLocalizedString(@"显示", @"") forState:UIControlStateNormal]; 60 | showNavigationBarButton.selected = YES; 61 | [showNavigationBarButton addTarget:self action:@selector(showAndHiddenHandle:) forControlEvents:UIControlEventTouchUpInside]; 62 | showNavigationBarButton.center = self.view.center; 63 | [self.view addSubview:showNavigationBarButton]; 64 | } 65 | 66 | - (void)didReceiveMemoryWarning 67 | { 68 | [super didReceiveMemoryWarning]; 69 | // Dispose of any resources that can be recreated. 70 | } 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "RootViewController.h" 11 | #import "KKNavigationController.h" 12 | 13 | @implementation AppDelegate 14 | 15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 16 | { 17 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 18 | // Override point for customization after application launch. 19 | self.window.backgroundColor = [UIColor whiteColor]; 20 | 21 | RootViewController *rootViewController = [[RootViewController alloc] init]; 22 | KKNavigationController *navigationController = [[KKNavigationController alloc] initWithRootViewController:rootViewController]; 23 | self.window.rootViewController = navigationController; 24 | 25 | [self.window makeKeyAndVisible]; 26 | return YES; 27 | } 28 | 29 | - (void)applicationWillResignActive:(UIApplication *)application 30 | { 31 | // 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. 32 | // 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. 33 | } 34 | 35 | - (void)applicationDidEnterBackground:(UIApplication *)application 36 | { 37 | // 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. 38 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 39 | } 40 | 41 | - (void)applicationWillEnterForeground:(UIApplication *)application 42 | { 43 | // 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. 44 | } 45 | 46 | - (void)applicationDidBecomeActive:(UIApplication *)application 47 | { 48 | // 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. 49 | } 50 | 51 | - (void)applicationWillTerminate:(UIApplication *)application 52 | { 53 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 54 | } 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/xcuserdata/JackMacbook.xcuserdatad/xcschemes/XHTransformNavigationController.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/xcuserdata/Jack.xcuserdatad/xcschemes/XHTransformNavigationController.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Source/UINavigationController+XHNavigationControllerHiddenShowBug.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+XHNavigationControllerHiddenShowBug.m 3 | // XHTransformNavigationController 4 | // 5 | // Created by 曾 宪华 on 13-12-2. 6 | // Copyright (c) 2013年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "UINavigationController+XHNavigationControllerHiddenShowBug.h" 10 | 11 | static CALayer *kXHCurrentLayer = nil; 12 | static CALayer *kXHNextLayer = nil; 13 | static NSTimeInterval const kTransitionDuration = .3f; 14 | 15 | @interface XHNavigationControllerTransitionAnimiationDelegate : NSObject 16 | - (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag; 17 | + (XHNavigationControllerTransitionAnimiationDelegate *)sharedDelegate; 18 | @end 19 | 20 | @implementation XHNavigationControllerTransitionAnimiationDelegate 21 | 22 | - (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag 23 | { 24 | [kXHCurrentLayer removeFromSuperlayer]; 25 | [kXHNextLayer removeFromSuperlayer]; 26 | } 27 | 28 | + (XHNavigationControllerTransitionAnimiationDelegate *)sharedDelegate 29 | { 30 | static dispatch_once_t onceToken; 31 | __strong static id _sharedDelegate = nil; 32 | dispatch_once(&onceToken, ^{ 33 | _sharedDelegate = [[self alloc] init]; 34 | }); 35 | return _sharedDelegate; 36 | } 37 | 38 | @end 39 | 40 | @implementation UINavigationController (XHNavigationControllerHiddenShowBug) 41 | - (void)pushViewControllerWithNavigationControllerTransition:(UIViewController *)viewController 42 | { 43 | kXHCurrentLayer = [self _layerSnapshotWithTransform:CATransform3DIdentity]; 44 | 45 | [self pushViewController:viewController animated:NO]; 46 | 47 | kXHNextLayer = [self _layerSnapshotWithTransform:CATransform3DIdentity]; 48 | kXHNextLayer.frame = (CGRect){{CGRectGetWidth(self.view.bounds), CGRectGetMinY(self.view.bounds)}, self.view.bounds.size}; 49 | 50 | [self.view.layer addSublayer:kXHCurrentLayer]; 51 | [self.view.layer addSublayer:kXHNextLayer]; 52 | 53 | [CATransaction flush]; 54 | 55 | [kXHCurrentLayer addAnimation:[self _animationWithTranslation:-CGRectGetWidth(self.view.bounds)] forKey:nil]; 56 | [kXHNextLayer addAnimation:[self _animationWithTranslation:-CGRectGetWidth(self.view.bounds)] forKey:nil]; 57 | } 58 | 59 | - (void)popViewControllerWithNavigationControllerTransition 60 | { 61 | kXHCurrentLayer = [self _layerSnapshotWithTransform:CATransform3DIdentity]; 62 | 63 | [self popViewControllerAnimated:NO]; 64 | 65 | kXHNextLayer = [self _layerSnapshotWithTransform:CATransform3DIdentity]; 66 | kXHNextLayer.frame = (CGRect){{-CGRectGetWidth(self.view.bounds), CGRectGetMinY(self.view.bounds)}, self.view.bounds.size}; 67 | 68 | [self.view.layer addSublayer:kXHCurrentLayer]; 69 | [self.view.layer addSublayer:kXHNextLayer]; 70 | 71 | [CATransaction flush]; 72 | 73 | [kXHCurrentLayer addAnimation:[self _animationWithTranslation:CGRectGetWidth(self.view.bounds)] forKey:nil]; 74 | [kXHNextLayer addAnimation:[self _animationWithTranslation:CGRectGetWidth(self.view.bounds)] forKey:nil]; 75 | } 76 | 77 | - (CABasicAnimation *)_animationWithTranslation:(CGFloat)translation 78 | { 79 | CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 80 | animation.toValue = [NSValue valueWithCATransform3D:CATransform3DTranslate(CATransform3DIdentity, translation, 0.f, 0.f)]; 81 | animation.duration = kTransitionDuration; 82 | animation.delegate = [XHNavigationControllerTransitionAnimiationDelegate sharedDelegate]; 83 | animation.removedOnCompletion = NO; 84 | animation.fillMode = kCAFillModeForwards; 85 | animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 86 | return animation; 87 | } 88 | 89 | - (CALayer *)_layerSnapshotWithTransform:(CATransform3D)transform 90 | { 91 | if (UIGraphicsBeginImageContextWithOptions){ 92 | UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 93 | } 94 | else { 95 | UIGraphicsBeginImageContext(self.view.bounds.size); 96 | } 97 | 98 | [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 99 | UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); 100 | UIGraphicsEndImageContext(); 101 | 102 | CALayer *snapshotLayer = [CALayer layer]; 103 | snapshotLayer.transform = transform; 104 | snapshotLayer.anchorPoint = CGPointMake(1.f, 1.f); 105 | snapshotLayer.frame = self.view.bounds; 106 | snapshotLayer.contents = (id)snapshot.CGImage; 107 | return snapshotLayer; 108 | } 109 | 110 | @end 111 | 112 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController/KKNavigationController/KKNavigationController.m: -------------------------------------------------------------------------------- 1 | // 2 | // KKNavigationController.m 3 | // TS 4 | // 5 | // Created by Coneboy_K on 13-12-2. 6 | // Copyright (c) 2013年 Coneboy_K. All rights reserved. MIT 7 | // WELCOME TO MY BLOG http://www.coneboy.com 8 | // 9 | 10 | 11 | #import "KKNavigationController.h" 12 | #import 13 | #import 14 | 15 | @interface KKNavigationController () 16 | { 17 | CGFloat startBackViewX; 18 | 19 | CGPoint startTouch; 20 | 21 | UIImageView *lastScreenShotView; 22 | UIView *blackMask; 23 | 24 | // 模糊图片的图片 25 | UIImage *captureImg; 26 | 27 | } 28 | 29 | @property (nonatomic,retain) UIView *backgroundView; 30 | @property (nonatomic,retain) NSMutableArray *screenShotsList; 31 | 32 | @property (nonatomic,assign) BOOL isMoving; 33 | 34 | @end 35 | 36 | @implementation KKNavigationController 37 | 38 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 39 | { 40 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 41 | if (self) { 42 | 43 | self.screenShotsList = [[NSMutableArray alloc]initWithCapacity:2]; 44 | self.canDragBack = YES; 45 | 46 | } 47 | return self; 48 | } 49 | 50 | - (void)dealloc 51 | { 52 | self.screenShotsList = nil; 53 | 54 | [self.backgroundView removeFromSuperview]; 55 | self.backgroundView = nil; 56 | 57 | } 58 | 59 | - (void)viewDidLoad 60 | { 61 | [super viewDidLoad]; 62 | 63 | self.view.layer.shadowColor = [[UIColor blackColor]CGColor]; 64 | self.view.layer.shadowOffset = CGSizeMake(5, 5); 65 | self.view.layer.shadowRadius = 5; 66 | self.view.layer.shadowOpacity = 1; 67 | self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath; 68 | 69 | UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self 70 | action:@selector(paningGestureReceive:)]; 71 | [recognizer delaysTouchesBegan]; 72 | [self.view addGestureRecognizer:recognizer]; 73 | } 74 | 75 | - (void)didReceiveMemoryWarning 76 | { 77 | [super didReceiveMemoryWarning]; 78 | // Dispose of any resources that can be recreated. 79 | } 80 | 81 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 82 | { 83 | [self.screenShotsList addObject:[self capture]]; 84 | 85 | [super pushViewController:viewController animated:animated]; 86 | } 87 | 88 | - (UIViewController *)popViewControllerAnimated:(BOOL)animated 89 | { 90 | [self.screenShotsList removeLastObject]; 91 | 92 | return [super popViewControllerAnimated:animated]; 93 | } 94 | 95 | 96 | #pragma mark - Utility Methods - 97 | 98 | - (UIImage *)capture 99 | { 100 | UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); 101 | [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 102 | 103 | UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 104 | 105 | UIGraphicsEndImageContext(); 106 | 107 | return img; 108 | } 109 | 110 | - (void)moveViewWithX:(float)x 111 | { 112 | CGFloat width = CGRectGetWidth([[UIScreen mainScreen] bounds]); 113 | x = x > width ? width : x; 114 | x = x < 0 ? 0 : x; 115 | 116 | CGRect frame = self.view.frame; 117 | frame.origin.x = x; 118 | self.view.frame = frame; 119 | 120 | float alpha = 0.4 - (x / (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? 2000 : 800)); 121 | 122 | blackMask.alpha = alpha; 123 | 124 | CGFloat aa = abs(startBackViewX)/kkBackViewWidth; 125 | CGFloat y = x*aa; 126 | 127 | CGFloat lastScreenShotViewHeight = kkBackViewHeight; 128 | 129 | [lastScreenShotView setFrame:CGRectMake(startBackViewX+y, 130 | 0, 131 | kkBackViewWidth, 132 | lastScreenShotViewHeight)]; 133 | 134 | } 135 | 136 | 137 | 138 | -(BOOL)isBlurryImg:(CGFloat)tmp 139 | { 140 | return YES; 141 | } 142 | 143 | #pragma mark - Gesture Recognizer - 144 | 145 | - (void)paningGestureReceive:(UIPanGestureRecognizer *)recoginzer 146 | { 147 | if (self.viewControllers.count <= 1 || !self.canDragBack) return; 148 | 149 | CGPoint touchPoint = [recoginzer locationInView:KEY_WINDOW]; 150 | 151 | if (recoginzer.state == UIGestureRecognizerStateBegan) { 152 | 153 | _isMoving = YES; 154 | startTouch = touchPoint; 155 | 156 | if (!self.backgroundView) 157 | { 158 | CGRect frame = self.view.frame; 159 | 160 | self.backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width , frame.size.height)]; 161 | [self.view.superview insertSubview:self.backgroundView belowSubview:self.view]; 162 | 163 | blackMask = [[UIView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width , frame.size.height)]; 164 | blackMask.backgroundColor = [UIColor blackColor]; 165 | [self.backgroundView addSubview:blackMask]; 166 | } 167 | 168 | self.backgroundView.hidden = NO; 169 | 170 | if (lastScreenShotView) [lastScreenShotView removeFromSuperview]; 171 | 172 | 173 | UIImage *lastScreenShot = [self.screenShotsList lastObject]; 174 | 175 | lastScreenShotView = [[UIImageView alloc]initWithImage:lastScreenShot]; 176 | 177 | startBackViewX = startX; 178 | [lastScreenShotView setFrame:CGRectMake(startBackViewX, 179 | lastScreenShotView.frame.origin.y, 180 | lastScreenShotView.frame.size.height, 181 | lastScreenShotView.frame.size.width)]; 182 | 183 | [self.backgroundView insertSubview:lastScreenShotView belowSubview:blackMask]; 184 | 185 | }else if (recoginzer.state == UIGestureRecognizerStateEnded){ 186 | 187 | if (touchPoint.x - startTouch.x > 50) 188 | { 189 | [UIView animateWithDuration:0.3 animations:^{ 190 | [self moveViewWithX:CGRectGetWidth([[UIScreen mainScreen] bounds])]; 191 | } completion:^(BOOL finished) { 192 | 193 | [self popViewControllerAnimated:NO]; 194 | CGRect frame = self.view.frame; 195 | frame.origin.x = 0; 196 | self.view.frame = frame; 197 | 198 | _isMoving = NO; 199 | }]; 200 | } 201 | else 202 | { 203 | [UIView animateWithDuration:0.3 animations:^{ 204 | [self moveViewWithX:0]; 205 | } completion:^(BOOL finished) { 206 | _isMoving = NO; 207 | self.backgroundView.hidden = YES; 208 | }]; 209 | 210 | } 211 | return; 212 | 213 | }else if (recoginzer.state == UIGestureRecognizerStateCancelled){ 214 | 215 | [UIView animateWithDuration:0.3 animations:^{ 216 | [self moveViewWithX:0]; 217 | } completion:^(BOOL finished) { 218 | _isMoving = NO; 219 | self.backgroundView.hidden = YES; 220 | }]; 221 | 222 | return; 223 | } 224 | 225 | if (_isMoving) { 226 | [self moveViewWithX:touchPoint.x - startTouch.x]; 227 | } 228 | } 229 | 230 | 231 | 232 | @end 233 | 234 | 235 | 236 | -------------------------------------------------------------------------------- /Project/XHTransformNavigationController.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | AB0CFE6D184D00A900C6B813 /* KKNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB0CFE6C184D00A900C6B813 /* KKNavigationController.m */; }; 11 | AB0CFE6E184D00A900C6B813 /* KKNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB0CFE6C184D00A900C6B813 /* KKNavigationController.m */; }; 12 | ABF2C665184CB9E5009BC758 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C664184CB9E5009BC758 /* Foundation.framework */; }; 13 | ABF2C667184CB9E5009BC758 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C666184CB9E5009BC758 /* CoreGraphics.framework */; }; 14 | ABF2C669184CB9E5009BC758 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C668184CB9E5009BC758 /* UIKit.framework */; }; 15 | ABF2C66F184CB9E5009BC758 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ABF2C66D184CB9E5009BC758 /* InfoPlist.strings */; }; 16 | ABF2C671184CB9E5009BC758 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C670184CB9E5009BC758 /* main.m */; }; 17 | ABF2C675184CB9E5009BC758 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C674184CB9E5009BC758 /* AppDelegate.m */; }; 18 | ABF2C677184CB9E5009BC758 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ABF2C676184CB9E5009BC758 /* Images.xcassets */; }; 19 | ABF2C67E184CB9E5009BC758 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C67D184CB9E5009BC758 /* XCTest.framework */; }; 20 | ABF2C67F184CB9E5009BC758 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C664184CB9E5009BC758 /* Foundation.framework */; }; 21 | ABF2C680184CB9E5009BC758 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF2C668184CB9E5009BC758 /* UIKit.framework */; }; 22 | ABF2C688184CB9E5009BC758 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ABF2C686184CB9E5009BC758 /* InfoPlist.strings */; }; 23 | ABF2C68A184CB9E5009BC758 /* XHTransformNavigationControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C689184CB9E5009BC758 /* XHTransformNavigationControllerTests.m */; }; 24 | ABF2C696184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C695184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m */; }; 25 | ABF2C697184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C695184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m */; }; 26 | ABF2C69A184CBC01009BC758 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C699184CBC01009BC758 /* RootViewController.m */; }; 27 | ABF2C69B184CBC01009BC758 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C699184CBC01009BC758 /* RootViewController.m */; }; 28 | ABF2C69E184CBDBA009BC758 /* HiddenNavigationBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C69D184CBDBA009BC758 /* HiddenNavigationBarViewController.m */; }; 29 | ABF2C69F184CBDBA009BC758 /* HiddenNavigationBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABF2C69D184CBDBA009BC758 /* HiddenNavigationBarViewController.m */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXContainerItemProxy section */ 33 | ABF2C681184CB9E5009BC758 /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = ABF2C659184CB9E5009BC758 /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = ABF2C660184CB9E5009BC758; 38 | remoteInfo = XHTransformNavigationController; 39 | }; 40 | /* End PBXContainerItemProxy section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | AB0CFE6B184D00A900C6B813 /* KKNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KKNavigationController.h; sourceTree = ""; }; 44 | AB0CFE6C184D00A900C6B813 /* KKNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KKNavigationController.m; sourceTree = ""; }; 45 | ABF2C661184CB9E5009BC758 /* XHTransformNavigationController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XHTransformNavigationController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 46 | ABF2C664184CB9E5009BC758 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 47 | ABF2C666184CB9E5009BC758 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 48 | ABF2C668184CB9E5009BC758 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 49 | ABF2C66C184CB9E5009BC758 /* XHTransformNavigationController-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "XHTransformNavigationController-Info.plist"; sourceTree = ""; }; 50 | ABF2C66E184CB9E5009BC758 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 51 | ABF2C670184CB9E5009BC758 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 52 | ABF2C672184CB9E5009BC758 /* XHTransformNavigationController-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XHTransformNavigationController-Prefix.pch"; sourceTree = ""; }; 53 | ABF2C673184CB9E5009BC758 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 54 | ABF2C674184CB9E5009BC758 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 55 | ABF2C676184CB9E5009BC758 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 56 | ABF2C67C184CB9E5009BC758 /* XHTransformNavigationControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XHTransformNavigationControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | ABF2C67D184CB9E5009BC758 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 58 | ABF2C685184CB9E5009BC758 /* XHTransformNavigationControllerTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "XHTransformNavigationControllerTests-Info.plist"; sourceTree = ""; }; 59 | ABF2C687184CB9E5009BC758 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 60 | ABF2C689184CB9E5009BC758 /* XHTransformNavigationControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XHTransformNavigationControllerTests.m; sourceTree = ""; }; 61 | ABF2C694184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UINavigationController+XHNavigationControllerHiddenShowBug.h"; sourceTree = ""; }; 62 | ABF2C695184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UINavigationController+XHNavigationControllerHiddenShowBug.m"; sourceTree = ""; }; 63 | ABF2C698184CBC01009BC758 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 64 | ABF2C699184CBC01009BC758 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; 65 | ABF2C69C184CBDBA009BC758 /* HiddenNavigationBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HiddenNavigationBarViewController.h; sourceTree = ""; }; 66 | ABF2C69D184CBDBA009BC758 /* HiddenNavigationBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HiddenNavigationBarViewController.m; sourceTree = ""; }; 67 | /* End PBXFileReference section */ 68 | 69 | /* Begin PBXFrameworksBuildPhase section */ 70 | ABF2C65E184CB9E5009BC758 /* Frameworks */ = { 71 | isa = PBXFrameworksBuildPhase; 72 | buildActionMask = 2147483647; 73 | files = ( 74 | ABF2C667184CB9E5009BC758 /* CoreGraphics.framework in Frameworks */, 75 | ABF2C669184CB9E5009BC758 /* UIKit.framework in Frameworks */, 76 | ABF2C665184CB9E5009BC758 /* Foundation.framework in Frameworks */, 77 | ); 78 | runOnlyForDeploymentPostprocessing = 0; 79 | }; 80 | ABF2C679184CB9E5009BC758 /* Frameworks */ = { 81 | isa = PBXFrameworksBuildPhase; 82 | buildActionMask = 2147483647; 83 | files = ( 84 | ABF2C67E184CB9E5009BC758 /* XCTest.framework in Frameworks */, 85 | ABF2C680184CB9E5009BC758 /* UIKit.framework in Frameworks */, 86 | ABF2C67F184CB9E5009BC758 /* Foundation.framework in Frameworks */, 87 | ); 88 | runOnlyForDeploymentPostprocessing = 0; 89 | }; 90 | /* End PBXFrameworksBuildPhase section */ 91 | 92 | /* Begin PBXGroup section */ 93 | AB0CFE6A184D00A900C6B813 /* KKNavigationController */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | AB0CFE6B184D00A900C6B813 /* KKNavigationController.h */, 97 | AB0CFE6C184D00A900C6B813 /* KKNavigationController.m */, 98 | ); 99 | path = KKNavigationController; 100 | sourceTree = ""; 101 | }; 102 | ABF2C658184CB9E5009BC758 = { 103 | isa = PBXGroup; 104 | children = ( 105 | ABF2C693184CBB98009BC758 /* Source */, 106 | ABF2C66A184CB9E5009BC758 /* XHTransformNavigationController */, 107 | ABF2C683184CB9E5009BC758 /* XHTransformNavigationControllerTests */, 108 | ABF2C663184CB9E5009BC758 /* Frameworks */, 109 | ABF2C662184CB9E5009BC758 /* Products */, 110 | ); 111 | sourceTree = ""; 112 | }; 113 | ABF2C662184CB9E5009BC758 /* Products */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | ABF2C661184CB9E5009BC758 /* XHTransformNavigationController.app */, 117 | ABF2C67C184CB9E5009BC758 /* XHTransformNavigationControllerTests.xctest */, 118 | ); 119 | name = Products; 120 | sourceTree = ""; 121 | }; 122 | ABF2C663184CB9E5009BC758 /* Frameworks */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | ABF2C664184CB9E5009BC758 /* Foundation.framework */, 126 | ABF2C666184CB9E5009BC758 /* CoreGraphics.framework */, 127 | ABF2C668184CB9E5009BC758 /* UIKit.framework */, 128 | ABF2C67D184CB9E5009BC758 /* XCTest.framework */, 129 | ); 130 | name = Frameworks; 131 | sourceTree = ""; 132 | }; 133 | ABF2C66A184CB9E5009BC758 /* XHTransformNavigationController */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | AB0CFE6A184D00A900C6B813 /* KKNavigationController */, 137 | ABF2C673184CB9E5009BC758 /* AppDelegate.h */, 138 | ABF2C674184CB9E5009BC758 /* AppDelegate.m */, 139 | ABF2C698184CBC01009BC758 /* RootViewController.h */, 140 | ABF2C699184CBC01009BC758 /* RootViewController.m */, 141 | ABF2C69C184CBDBA009BC758 /* HiddenNavigationBarViewController.h */, 142 | ABF2C69D184CBDBA009BC758 /* HiddenNavigationBarViewController.m */, 143 | ABF2C676184CB9E5009BC758 /* Images.xcassets */, 144 | ABF2C66B184CB9E5009BC758 /* Supporting Files */, 145 | ); 146 | path = XHTransformNavigationController; 147 | sourceTree = ""; 148 | }; 149 | ABF2C66B184CB9E5009BC758 /* Supporting Files */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | ABF2C66C184CB9E5009BC758 /* XHTransformNavigationController-Info.plist */, 153 | ABF2C66D184CB9E5009BC758 /* InfoPlist.strings */, 154 | ABF2C670184CB9E5009BC758 /* main.m */, 155 | ABF2C672184CB9E5009BC758 /* XHTransformNavigationController-Prefix.pch */, 156 | ); 157 | name = "Supporting Files"; 158 | sourceTree = ""; 159 | }; 160 | ABF2C683184CB9E5009BC758 /* XHTransformNavigationControllerTests */ = { 161 | isa = PBXGroup; 162 | children = ( 163 | ABF2C689184CB9E5009BC758 /* XHTransformNavigationControllerTests.m */, 164 | ABF2C684184CB9E5009BC758 /* Supporting Files */, 165 | ); 166 | path = XHTransformNavigationControllerTests; 167 | sourceTree = ""; 168 | }; 169 | ABF2C684184CB9E5009BC758 /* Supporting Files */ = { 170 | isa = PBXGroup; 171 | children = ( 172 | ABF2C685184CB9E5009BC758 /* XHTransformNavigationControllerTests-Info.plist */, 173 | ABF2C686184CB9E5009BC758 /* InfoPlist.strings */, 174 | ); 175 | name = "Supporting Files"; 176 | sourceTree = ""; 177 | }; 178 | ABF2C693184CBB98009BC758 /* Source */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | ABF2C694184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.h */, 182 | ABF2C695184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m */, 183 | ); 184 | name = Source; 185 | path = ../Source; 186 | sourceTree = ""; 187 | }; 188 | /* End PBXGroup section */ 189 | 190 | /* Begin PBXNativeTarget section */ 191 | ABF2C660184CB9E5009BC758 /* XHTransformNavigationController */ = { 192 | isa = PBXNativeTarget; 193 | buildConfigurationList = ABF2C68D184CB9E5009BC758 /* Build configuration list for PBXNativeTarget "XHTransformNavigationController" */; 194 | buildPhases = ( 195 | ABF2C65D184CB9E5009BC758 /* Sources */, 196 | ABF2C65E184CB9E5009BC758 /* Frameworks */, 197 | ABF2C65F184CB9E5009BC758 /* Resources */, 198 | ); 199 | buildRules = ( 200 | ); 201 | dependencies = ( 202 | ); 203 | name = XHTransformNavigationController; 204 | productName = XHTransformNavigationController; 205 | productReference = ABF2C661184CB9E5009BC758 /* XHTransformNavigationController.app */; 206 | productType = "com.apple.product-type.application"; 207 | }; 208 | ABF2C67B184CB9E5009BC758 /* XHTransformNavigationControllerTests */ = { 209 | isa = PBXNativeTarget; 210 | buildConfigurationList = ABF2C690184CB9E5009BC758 /* Build configuration list for PBXNativeTarget "XHTransformNavigationControllerTests" */; 211 | buildPhases = ( 212 | ABF2C678184CB9E5009BC758 /* Sources */, 213 | ABF2C679184CB9E5009BC758 /* Frameworks */, 214 | ABF2C67A184CB9E5009BC758 /* Resources */, 215 | ); 216 | buildRules = ( 217 | ); 218 | dependencies = ( 219 | ABF2C682184CB9E5009BC758 /* PBXTargetDependency */, 220 | ); 221 | name = XHTransformNavigationControllerTests; 222 | productName = XHTransformNavigationControllerTests; 223 | productReference = ABF2C67C184CB9E5009BC758 /* XHTransformNavigationControllerTests.xctest */; 224 | productType = "com.apple.product-type.bundle.unit-test"; 225 | }; 226 | /* End PBXNativeTarget section */ 227 | 228 | /* Begin PBXProject section */ 229 | ABF2C659184CB9E5009BC758 /* Project object */ = { 230 | isa = PBXProject; 231 | attributes = { 232 | LastUpgradeCheck = 0500; 233 | ORGANIZATIONNAME = "曾宪华 开发团队(http://iyilunba.com ) 本人QQ:543413507"; 234 | TargetAttributes = { 235 | ABF2C67B184CB9E5009BC758 = { 236 | TestTargetID = ABF2C660184CB9E5009BC758; 237 | }; 238 | }; 239 | }; 240 | buildConfigurationList = ABF2C65C184CB9E5009BC758 /* Build configuration list for PBXProject "XHTransformNavigationController" */; 241 | compatibilityVersion = "Xcode 3.2"; 242 | developmentRegion = English; 243 | hasScannedForEncodings = 0; 244 | knownRegions = ( 245 | en, 246 | ); 247 | mainGroup = ABF2C658184CB9E5009BC758; 248 | productRefGroup = ABF2C662184CB9E5009BC758 /* Products */; 249 | projectDirPath = ""; 250 | projectRoot = ""; 251 | targets = ( 252 | ABF2C660184CB9E5009BC758 /* XHTransformNavigationController */, 253 | ABF2C67B184CB9E5009BC758 /* XHTransformNavigationControllerTests */, 254 | ); 255 | }; 256 | /* End PBXProject section */ 257 | 258 | /* Begin PBXResourcesBuildPhase section */ 259 | ABF2C65F184CB9E5009BC758 /* Resources */ = { 260 | isa = PBXResourcesBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | ABF2C66F184CB9E5009BC758 /* InfoPlist.strings in Resources */, 264 | ABF2C677184CB9E5009BC758 /* Images.xcassets in Resources */, 265 | ); 266 | runOnlyForDeploymentPostprocessing = 0; 267 | }; 268 | ABF2C67A184CB9E5009BC758 /* Resources */ = { 269 | isa = PBXResourcesBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | ABF2C688184CB9E5009BC758 /* InfoPlist.strings in Resources */, 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | }; 276 | /* End PBXResourcesBuildPhase section */ 277 | 278 | /* Begin PBXSourcesBuildPhase section */ 279 | ABF2C65D184CB9E5009BC758 /* Sources */ = { 280 | isa = PBXSourcesBuildPhase; 281 | buildActionMask = 2147483647; 282 | files = ( 283 | ABF2C675184CB9E5009BC758 /* AppDelegate.m in Sources */, 284 | AB0CFE6D184D00A900C6B813 /* KKNavigationController.m in Sources */, 285 | ABF2C696184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m in Sources */, 286 | ABF2C69E184CBDBA009BC758 /* HiddenNavigationBarViewController.m in Sources */, 287 | ABF2C69A184CBC01009BC758 /* RootViewController.m in Sources */, 288 | ABF2C671184CB9E5009BC758 /* main.m in Sources */, 289 | ); 290 | runOnlyForDeploymentPostprocessing = 0; 291 | }; 292 | ABF2C678184CB9E5009BC758 /* Sources */ = { 293 | isa = PBXSourcesBuildPhase; 294 | buildActionMask = 2147483647; 295 | files = ( 296 | ABF2C68A184CB9E5009BC758 /* XHTransformNavigationControllerTests.m in Sources */, 297 | ABF2C697184CBBAA009BC758 /* UINavigationController+XHNavigationControllerHiddenShowBug.m in Sources */, 298 | ABF2C69F184CBDBA009BC758 /* HiddenNavigationBarViewController.m in Sources */, 299 | ABF2C69B184CBC01009BC758 /* RootViewController.m in Sources */, 300 | AB0CFE6E184D00A900C6B813 /* KKNavigationController.m in Sources */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | /* End PBXSourcesBuildPhase section */ 305 | 306 | /* Begin PBXTargetDependency section */ 307 | ABF2C682184CB9E5009BC758 /* PBXTargetDependency */ = { 308 | isa = PBXTargetDependency; 309 | target = ABF2C660184CB9E5009BC758 /* XHTransformNavigationController */; 310 | targetProxy = ABF2C681184CB9E5009BC758 /* PBXContainerItemProxy */; 311 | }; 312 | /* End PBXTargetDependency section */ 313 | 314 | /* Begin PBXVariantGroup section */ 315 | ABF2C66D184CB9E5009BC758 /* InfoPlist.strings */ = { 316 | isa = PBXVariantGroup; 317 | children = ( 318 | ABF2C66E184CB9E5009BC758 /* en */, 319 | ); 320 | name = InfoPlist.strings; 321 | sourceTree = ""; 322 | }; 323 | ABF2C686184CB9E5009BC758 /* InfoPlist.strings */ = { 324 | isa = PBXVariantGroup; 325 | children = ( 326 | ABF2C687184CB9E5009BC758 /* en */, 327 | ); 328 | name = InfoPlist.strings; 329 | sourceTree = ""; 330 | }; 331 | /* End PBXVariantGroup section */ 332 | 333 | /* Begin XCBuildConfiguration section */ 334 | ABF2C68B184CB9E5009BC758 /* Debug */ = { 335 | isa = XCBuildConfiguration; 336 | buildSettings = { 337 | ALWAYS_SEARCH_USER_PATHS = NO; 338 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 339 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 340 | CLANG_CXX_LIBRARY = "libc++"; 341 | CLANG_ENABLE_MODULES = YES; 342 | CLANG_ENABLE_OBJC_ARC = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_CONSTANT_CONVERSION = YES; 345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 346 | CLANG_WARN_EMPTY_BODY = YES; 347 | CLANG_WARN_ENUM_CONVERSION = YES; 348 | CLANG_WARN_INT_CONVERSION = YES; 349 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 350 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 351 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 352 | COPY_PHASE_STRIP = NO; 353 | GCC_C_LANGUAGE_STANDARD = gnu99; 354 | GCC_DYNAMIC_NO_PIC = NO; 355 | GCC_OPTIMIZATION_LEVEL = 0; 356 | GCC_PREPROCESSOR_DEFINITIONS = ( 357 | "DEBUG=1", 358 | "$(inherited)", 359 | ); 360 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 361 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 362 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 363 | GCC_WARN_UNDECLARED_SELECTOR = YES; 364 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 365 | GCC_WARN_UNUSED_FUNCTION = YES; 366 | GCC_WARN_UNUSED_VARIABLE = YES; 367 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 368 | ONLY_ACTIVE_ARCH = YES; 369 | SDKROOT = iphoneos; 370 | TARGETED_DEVICE_FAMILY = "1,2"; 371 | }; 372 | name = Debug; 373 | }; 374 | ABF2C68C184CB9E5009BC758 /* Release */ = { 375 | isa = XCBuildConfiguration; 376 | buildSettings = { 377 | ALWAYS_SEARCH_USER_PATHS = NO; 378 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 379 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 380 | CLANG_CXX_LIBRARY = "libc++"; 381 | CLANG_ENABLE_MODULES = YES; 382 | CLANG_ENABLE_OBJC_ARC = YES; 383 | CLANG_WARN_BOOL_CONVERSION = YES; 384 | CLANG_WARN_CONSTANT_CONVERSION = YES; 385 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 386 | CLANG_WARN_EMPTY_BODY = YES; 387 | CLANG_WARN_ENUM_CONVERSION = YES; 388 | CLANG_WARN_INT_CONVERSION = YES; 389 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 390 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 391 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 392 | COPY_PHASE_STRIP = YES; 393 | ENABLE_NS_ASSERTIONS = NO; 394 | GCC_C_LANGUAGE_STANDARD = gnu99; 395 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 396 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 397 | GCC_WARN_UNDECLARED_SELECTOR = YES; 398 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 399 | GCC_WARN_UNUSED_FUNCTION = YES; 400 | GCC_WARN_UNUSED_VARIABLE = YES; 401 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 402 | SDKROOT = iphoneos; 403 | TARGETED_DEVICE_FAMILY = "1,2"; 404 | VALIDATE_PRODUCT = YES; 405 | }; 406 | name = Release; 407 | }; 408 | ABF2C68E184CB9E5009BC758 /* Debug */ = { 409 | isa = XCBuildConfiguration; 410 | buildSettings = { 411 | ARCHS = "$(ARCHS_STANDARD)"; 412 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 413 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 414 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 415 | GCC_PREFIX_HEADER = "XHTransformNavigationController/XHTransformNavigationController-Prefix.pch"; 416 | INFOPLIST_FILE = "XHTransformNavigationController/XHTransformNavigationController-Info.plist"; 417 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 418 | PRODUCT_NAME = "$(TARGET_NAME)"; 419 | WRAPPER_EXTENSION = app; 420 | }; 421 | name = Debug; 422 | }; 423 | ABF2C68F184CB9E5009BC758 /* Release */ = { 424 | isa = XCBuildConfiguration; 425 | buildSettings = { 426 | ARCHS = "$(ARCHS_STANDARD)"; 427 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 428 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 429 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 430 | GCC_PREFIX_HEADER = "XHTransformNavigationController/XHTransformNavigationController-Prefix.pch"; 431 | INFOPLIST_FILE = "XHTransformNavigationController/XHTransformNavigationController-Info.plist"; 432 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 433 | PRODUCT_NAME = "$(TARGET_NAME)"; 434 | WRAPPER_EXTENSION = app; 435 | }; 436 | name = Release; 437 | }; 438 | ABF2C691184CB9E5009BC758 /* Debug */ = { 439 | isa = XCBuildConfiguration; 440 | buildSettings = { 441 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 442 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/XHTransformNavigationController.app/XHTransformNavigationController"; 443 | FRAMEWORK_SEARCH_PATHS = ( 444 | "$(SDKROOT)/Developer/Library/Frameworks", 445 | "$(inherited)", 446 | "$(DEVELOPER_FRAMEWORKS_DIR)", 447 | ); 448 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 449 | GCC_PREFIX_HEADER = "XHTransformNavigationController/XHTransformNavigationController-Prefix.pch"; 450 | GCC_PREPROCESSOR_DEFINITIONS = ( 451 | "DEBUG=1", 452 | "$(inherited)", 453 | ); 454 | INFOPLIST_FILE = "XHTransformNavigationControllerTests/XHTransformNavigationControllerTests-Info.plist"; 455 | PRODUCT_NAME = "$(TARGET_NAME)"; 456 | TEST_HOST = "$(BUNDLE_LOADER)"; 457 | WRAPPER_EXTENSION = xctest; 458 | }; 459 | name = Debug; 460 | }; 461 | ABF2C692184CB9E5009BC758 /* Release */ = { 462 | isa = XCBuildConfiguration; 463 | buildSettings = { 464 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 465 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/XHTransformNavigationController.app/XHTransformNavigationController"; 466 | FRAMEWORK_SEARCH_PATHS = ( 467 | "$(SDKROOT)/Developer/Library/Frameworks", 468 | "$(inherited)", 469 | "$(DEVELOPER_FRAMEWORKS_DIR)", 470 | ); 471 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 472 | GCC_PREFIX_HEADER = "XHTransformNavigationController/XHTransformNavigationController-Prefix.pch"; 473 | INFOPLIST_FILE = "XHTransformNavigationControllerTests/XHTransformNavigationControllerTests-Info.plist"; 474 | PRODUCT_NAME = "$(TARGET_NAME)"; 475 | TEST_HOST = "$(BUNDLE_LOADER)"; 476 | WRAPPER_EXTENSION = xctest; 477 | }; 478 | name = Release; 479 | }; 480 | /* End XCBuildConfiguration section */ 481 | 482 | /* Begin XCConfigurationList section */ 483 | ABF2C65C184CB9E5009BC758 /* Build configuration list for PBXProject "XHTransformNavigationController" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | ABF2C68B184CB9E5009BC758 /* Debug */, 487 | ABF2C68C184CB9E5009BC758 /* Release */, 488 | ); 489 | defaultConfigurationIsVisible = 0; 490 | defaultConfigurationName = Release; 491 | }; 492 | ABF2C68D184CB9E5009BC758 /* Build configuration list for PBXNativeTarget "XHTransformNavigationController" */ = { 493 | isa = XCConfigurationList; 494 | buildConfigurations = ( 495 | ABF2C68E184CB9E5009BC758 /* Debug */, 496 | ABF2C68F184CB9E5009BC758 /* Release */, 497 | ); 498 | defaultConfigurationIsVisible = 0; 499 | defaultConfigurationName = Release; 500 | }; 501 | ABF2C690184CB9E5009BC758 /* Build configuration list for PBXNativeTarget "XHTransformNavigationControllerTests" */ = { 502 | isa = XCConfigurationList; 503 | buildConfigurations = ( 504 | ABF2C691184CB9E5009BC758 /* Debug */, 505 | ABF2C692184CB9E5009BC758 /* Release */, 506 | ); 507 | defaultConfigurationIsVisible = 0; 508 | defaultConfigurationName = Release; 509 | }; 510 | /* End XCConfigurationList section */ 511 | }; 512 | rootObject = ABF2C659184CB9E5009BC758 /* Project object */; 513 | } 514 | --------------------------------------------------------------------------------