├── 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 |
--------------------------------------------------------------------------------