Full Code of Bonway/BBGestureBack for AI

master ce4364bc34d0 cached
109 files
192.8 KB
61.9k tokens
1 symbols
1 requests
Download .txt
Showing preview only (229K chars total). Download the full file or copy to clipboard to get everything.
Repository: Bonway/BBGestureBack
Branch: master
Commit: ce4364bc34d0
Files: 109
Total size: 192.8 KB

Directory structure:
gitextract_fgu9pioj/

├── BBGestureBack.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   ├── xcshareddata/
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── xcuserdata/
│   │       ├── Bonway.xcuserdatad/
│   │       │   └── UserInterfaceState.xcuserstate
│   │       └── user.xcuserdatad/
│   │           └── UserInterfaceState.xcuserstate
│   └── xcuserdata/
│       ├── Bonway.xcuserdatad/
│       │   ├── xcdebugger/
│       │   │   └── Breakpoints_v2.xcbkptlist
│       │   └── xcschemes/
│       │       ├── BBGestureBack_Full_oc.xcscheme
│       │       ├── BBGestureBack_Full_swift.xcscheme
│       │       ├── BBGestureBack_SysFull_oc.xcscheme
│       │       └── xcschememanagement.plist
│       └── user.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               └── xcschememanagement.plist
├── BBGestureBack_Full_oc/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Navigation/
│   │   │   ├── Contents.json
│   │   │   └── bb_navigation_back.imageset/
│   │   │       └── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   ├── HomeViewController.h
│   │   │   │   └── HomeViewController.m
│   │   │   ├── ViewController.h
│   │   │   └── ViewController.m
│   │   ├── Main/
│   │   │   ├── AppDelegate.h
│   │   │   ├── AppDelegate.m
│   │   │   ├── BBGestureBack/
│   │   │   │   ├── BBGestureBack.h
│   │   │   │   ├── BBGestureBackConst.h
│   │   │   │   ├── BBGestureBackConst.m
│   │   │   │   ├── BBGestureBaseController.h
│   │   │   │   └── BBGestureBaseController.m
│   │   │   ├── BBNavigation/
│   │   │   │   ├── BBNavigationController.h
│   │   │   │   └── BBNavigationController.m
│   │   │   ├── BBTabBar/
│   │   │   │   ├── BBTabBarController.h
│   │   │   │   └── BBTabBarController.m
│   │   │   └── BBUserGuider/
│   │   │       ├── BBUserGuiderController.h
│   │   │       └── BBUserGuiderController.m
│   │   ├── Resource/
│   │   │   └── BBUserGuider.bundle/
│   │   │       ├── Root.plist
│   │   │       └── en.lproj/
│   │   │           └── Root.strings
│   │   └── User/
│   │       └── Index/
│   │           ├── UserViewController.h
│   │           └── UserViewController.m
│   ├── Info.plist
│   └── main.m
├── BBGestureBack_Full_swift/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Navigation/
│   │   │   ├── Contents.json
│   │   │   └── bb_navigation_back.imageset/
│   │   │       └── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   └── HomeViewController.swift
│   │   │   └── ViewController.swift
│   │   ├── Main/
│   │   │   ├── AppDelegate.swift
│   │   │   ├── BBGestureBack/
│   │   │   │   ├── BBGestureBackConst.swift
│   │   │   │   └── BBGestureBaseController.swift
│   │   │   ├── BBNavigation/
│   │   │   │   └── BBNavigationController.swift
│   │   │   ├── BBTabBar/
│   │   │   │   └── BBTabBarController.swift
│   │   │   └── BBUserGuider/
│   │   │       └── BBUserGuiderController.swift
│   │   ├── Resource/
│   │   │   └── BBUserGuider.bundle/
│   │   │       ├── Root.plist
│   │   │       └── en.lproj/
│   │   │           └── Root.strings
│   │   └── User/
│   │       └── Index/
│   │           └── UserViewController.swift
│   └── Info.plist
├── BBGestureBack_SysFull_oc/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   ├── HomeViewController.h
│   │   │   │   └── HomeViewController.m
│   │   │   ├── ViewController.h
│   │   │   └── ViewController.m
│   │   ├── Main/
│   │   │   ├── AppDelegate.h
│   │   │   ├── AppDelegate.m
│   │   │   ├── BBNavigation/
│   │   │   │   ├── BBNavigationController.h
│   │   │   │   └── BBNavigationController.m
│   │   │   └── BBTabBar/
│   │   │       ├── BBTabBarController.h
│   │   │       └── BBTabBarController.m
│   │   └── User/
│   │       └── Index/
│   │           ├── UserViewController.h
│   │           └── UserViewController.m
│   ├── Info.plist
│   └── main.m
├── BBGestureBack_SysFull_swift/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   └── HomeViewController.swift
│   │   │   └── ViewController.swift
│   │   ├── Main/
│   │   │   ├── AppDelegate.swift
│   │   │   ├── BBNavigation/
│   │   │   │   └── BBNavigationController.swift
│   │   │   └── BBTabBar/
│   │   │       └── BBTabBarController.swift
│   │   └── User/
│   │       └── Index/
│   │           └── UserViewController.swift
│   └── Info.plist
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: BBGestureBack.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 48;
	objects = {

/* Begin PBXBuildFile section */
		CEC3BBC8206354CE0003CF06 /* BBGestureBackConst.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC3BBC7206354CE0003CF06 /* BBGestureBackConst.m */; };
		CEDECB9C205CC3CD00C08340 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CEDECB9B205CC3CD00C08340 /* Assets.xcassets */; };
		CEDECB9F205CC3CD00C08340 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CEDECB9D205CC3CD00C08340 /* LaunchScreen.storyboard */; };
		CEDECBA2205CC3CD00C08340 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBA1205CC3CD00C08340 /* main.m */; };
		CEDECBCD205CC54D00C08340 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBC7205CC54D00C08340 /* ViewController.m */; };
		CEDECBCE205CC54D00C08340 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBCA205CC54D00C08340 /* AppDelegate.m */; };
		CEDECBD2205CC76800C08340 /* BBTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBD1205CC76800C08340 /* BBTabBarController.m */; };
		CEDECBD7205CC82800C08340 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBD6205CC82800C08340 /* HomeViewController.m */; };
		CEDECBDB205CC8BC00C08340 /* BBNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBDA205CC8BC00C08340 /* BBNavigationController.m */; };
		CEDECBE0205CC94100C08340 /* UserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBDF205CC94100C08340 /* UserViewController.m */; };
		CEDECBE3205CCA4100C08340 /* BBGestureBaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEDECBE2205CCA4100C08340 /* BBGestureBaseController.m */; };
		CF395E1420BD496B00434CC7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF395E1320BD496B00434CC7 /* Assets.xcassets */; };
		CF395E1720BD496B00434CC7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF395E1520BD496B00434CC7 /* LaunchScreen.storyboard */; };
		CF395E2720BD4BD300434CC7 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E1F20BD4BD300434CC7 /* ViewController.swift */; };
		CF395E2820BD4BD300434CC7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E2420BD4BD300434CC7 /* AppDelegate.swift */; };
		CF395E2A20BD4C5800434CC7 /* BBTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E2920BD4C5800434CC7 /* BBTabBarController.swift */; };
		CF395E2C20BD4DC400434CC7 /* BBNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E2B20BD4DC400434CC7 /* BBNavigationController.swift */; };
		CF395E2E20BD4DE300434CC7 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E2D20BD4DE300434CC7 /* HomeViewController.swift */; };
		CF395E3020BD4DF400434CC7 /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF395E2F20BD4DF400434CC7 /* UserViewController.swift */; };
		CF73731D20B5592C00BBE7AC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF73731C20B5592C00BBE7AC /* Assets.xcassets */; };
		CF73732020B5592C00BBE7AC /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF73731E20B5592C00BBE7AC /* LaunchScreen.storyboard */; };
		CF73732320B5592C00BBE7AC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73732220B5592C00BBE7AC /* main.m */; };
		CF73734C20B559D200BBE7AC /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73734520B559D200BBE7AC /* ViewController.m */; };
		CF73734D20B559D200BBE7AC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73734B20B559D200BBE7AC /* AppDelegate.m */; };
		CF73735120B55B0D00BBE7AC /* BBNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73735020B55B0D00BBE7AC /* BBNavigationController.m */; };
		CF73735520B55CA400BBE7AC /* BBTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73735420B55CA400BBE7AC /* BBTabBarController.m */; };
		CF73735820B55D0B00BBE7AC /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73735720B55D0B00BBE7AC /* HomeViewController.m */; };
		CF73735C20B55D3300BBE7AC /* UserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF73735B20B55D3300BBE7AC /* UserViewController.m */; };
		CF808DF122520E6A008F9500 /* BBUserGuiderController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF808DF022520E6A008F9500 /* BBUserGuiderController.m */; };
		CF9A6C07207C9DE3004DD232 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A6C06207C9DE3004DD232 /* ViewController.swift */; };
		CF9A6C0B207CA005004DD232 /* BBGestureBackConst.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A6C0A207CA005004DD232 /* BBGestureBackConst.swift */; };
		CF9B76542252F3C100E6031F /* BBUserGuider.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CF9B76532252F3C100E6031F /* BBUserGuider.bundle */; };
		CF9B765722533D0B00E6031F /* BBUserGuiderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9B765622533D0B00E6031F /* BBUserGuiderController.swift */; };
		CF9B765A22534ABF00E6031F /* BBUserGuider.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CF9B765922534ABF00E6031F /* BBUserGuider.bundle */; };
		CFD0E975207A621C00E58465 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CFD0E974207A621C00E58465 /* Assets.xcassets */; };
		CFD0E978207A621C00E58465 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CFD0E976207A621C00E58465 /* LaunchScreen.storyboard */; };
		CFD0E9A3207BBA5000E58465 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9A2207BBA5000E58465 /* HomeViewController.swift */; };
		CFD0E9A6207BBAA200E58465 /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9A5207BBAA200E58465 /* UserViewController.swift */; };
		CFD0E9AB207BBB3C00E58465 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9AA207BBB3C00E58465 /* AppDelegate.swift */; };
		CFD0E9AD207BBC9A00E58465 /* BBTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9AC207BBC9A00E58465 /* BBTabBarController.swift */; };
		CFD0E9AF207BBCD800E58465 /* BBNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9AE207BBCD800E58465 /* BBNavigationController.swift */; };
		CFD0E9B1207BBD1E00E58465 /* BBGestureBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD0E9B0207BBD1E00E58465 /* BBGestureBaseController.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		CEC3BBC6206354AC0003CF06 /* BBGestureBackConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BBGestureBackConst.h; sourceTree = "<group>"; };
		CEC3BBC7206354CE0003CF06 /* BBGestureBackConst.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BBGestureBackConst.m; sourceTree = "<group>"; };
		CEDECB8F205CC3CD00C08340 /* BBGestureBack_Full_oc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BBGestureBack_Full_oc.app; sourceTree = BUILT_PRODUCTS_DIR; };
		CEDECB9B205CC3CD00C08340 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		CEDECB9E205CC3CD00C08340 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		CEDECBA0205CC3CD00C08340 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		CEDECBA1205CC3CD00C08340 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		CEDECBC6205CC54D00C08340 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
		CEDECBC7205CC54D00C08340 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
		CEDECBC9205CC54D00C08340 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
		CEDECBCA205CC54D00C08340 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
		CEDECBD0205CC76800C08340 /* BBTabBarController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBTabBarController.h; sourceTree = "<group>"; };
		CEDECBD1205CC76800C08340 /* BBTabBarController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BBTabBarController.m; sourceTree = "<group>"; };
		CEDECBD5205CC82800C08340 /* HomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
		CEDECBD6205CC82800C08340 /* HomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
		CEDECBD9205CC8BC00C08340 /* BBNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBNavigationController.h; sourceTree = "<group>"; };
		CEDECBDA205CC8BC00C08340 /* BBNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BBNavigationController.m; sourceTree = "<group>"; };
		CEDECBDE205CC94100C08340 /* UserViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserViewController.h; sourceTree = "<group>"; };
		CEDECBDF205CC94100C08340 /* UserViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserViewController.m; sourceTree = "<group>"; };
		CEDECBE1205CCA4100C08340 /* BBGestureBaseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBGestureBaseController.h; sourceTree = "<group>"; };
		CEDECBE2205CCA4100C08340 /* BBGestureBaseController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BBGestureBaseController.m; sourceTree = "<group>"; };
		CF395E0A20BD496B00434CC7 /* BBGestureBack_SysFull_swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BBGestureBack_SysFull_swift.app; sourceTree = BUILT_PRODUCTS_DIR; };
		CF395E1320BD496B00434CC7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		CF395E1620BD496B00434CC7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		CF395E1820BD496B00434CC7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		CF395E1F20BD4BD300434CC7 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
		CF395E2420BD4BD300434CC7 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		CF395E2920BD4C5800434CC7 /* BBTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBTabBarController.swift; sourceTree = "<group>"; };
		CF395E2B20BD4DC400434CC7 /* BBNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBNavigationController.swift; sourceTree = "<group>"; };
		CF395E2D20BD4DE300434CC7 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
		CF395E2F20BD4DF400434CC7 /* UserViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = "<group>"; };
		CF73731120B5592A00BBE7AC /* BBGestureBack_SysFull_oc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BBGestureBack_SysFull_oc.app; sourceTree = BUILT_PRODUCTS_DIR; };
		CF73731C20B5592C00BBE7AC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		CF73731F20B5592C00BBE7AC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		CF73732120B5592C00BBE7AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		CF73732220B5592C00BBE7AC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		CF73734520B559D200BBE7AC /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
		CF73734720B559D200BBE7AC /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
		CF73734A20B559D200BBE7AC /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
		CF73734B20B559D200BBE7AC /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
		CF73734F20B55B0D00BBE7AC /* BBNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBNavigationController.h; sourceTree = "<group>"; };
		CF73735020B55B0D00BBE7AC /* BBNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BBNavigationController.m; sourceTree = "<group>"; };
		CF73735320B55CA400BBE7AC /* BBTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BBTabBarController.h; sourceTree = "<group>"; };
		CF73735420B55CA400BBE7AC /* BBTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BBTabBarController.m; sourceTree = "<group>"; };
		CF73735620B55D0B00BBE7AC /* HomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
		CF73735720B55D0B00BBE7AC /* HomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
		CF73735A20B55D3300BBE7AC /* UserViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserViewController.h; sourceTree = "<group>"; };
		CF73735B20B55D3300BBE7AC /* UserViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserViewController.m; sourceTree = "<group>"; };
		CF808DEF22520E6A008F9500 /* BBUserGuiderController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBUserGuiderController.h; sourceTree = "<group>"; };
		CF808DF022520E6A008F9500 /* BBUserGuiderController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BBUserGuiderController.m; sourceTree = "<group>"; };
		CF9A6C06207C9DE3004DD232 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
		CF9A6C0A207CA005004DD232 /* BBGestureBackConst.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBGestureBackConst.swift; sourceTree = "<group>"; };
		CF9B76532252F3C100E6031F /* BBUserGuider.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = BBUserGuider.bundle; sourceTree = "<group>"; };
		CF9B765622533D0B00E6031F /* BBUserGuiderController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBUserGuiderController.swift; sourceTree = "<group>"; };
		CF9B765922534ABF00E6031F /* BBUserGuider.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = BBUserGuider.bundle; sourceTree = "<group>"; };
		CFD0E96B207A621C00E58465 /* BBGestureBack_Full_swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BBGestureBack_Full_swift.app; sourceTree = BUILT_PRODUCTS_DIR; };
		CFD0E974207A621C00E58465 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		CFD0E977207A621C00E58465 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		CFD0E979207A621C00E58465 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		CFD0E9A2207BBA5000E58465 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
		CFD0E9A5207BBAA200E58465 /* UserViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = "<group>"; };
		CFD0E9AA207BBB3C00E58465 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		CFD0E9AC207BBC9A00E58465 /* BBTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBTabBarController.swift; sourceTree = "<group>"; };
		CFD0E9AE207BBCD800E58465 /* BBNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBNavigationController.swift; sourceTree = "<group>"; };
		CFD0E9B0207BBD1E00E58465 /* BBGestureBaseController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BBGestureBaseController.swift; sourceTree = "<group>"; };
		CFE80F3722547FF2001CFA34 /* BBGestureBack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BBGestureBack.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		CEDECB8C205CC3CD00C08340 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF395E0720BD496B00434CC7 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF73730E20B5592A00BBE7AC /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CFD0E968207A621C00E58465 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		CEDECB86205CC3CD00C08340 = {
			isa = PBXGroup;
			children = (
				CEDECB91205CC3CD00C08340 /* BBGestureBack_Full_oc */,
				CFD0E96C207A621C00E58465 /* BBGestureBack_Full_swift */,
				CF73731220B5592A00BBE7AC /* BBGestureBack_SysFull_oc */,
				CF395E0B20BD496B00434CC7 /* BBGestureBack_SysFull_swift */,
				CEDECB90205CC3CD00C08340 /* Products */,
			);
			sourceTree = "<group>";
		};
		CEDECB90205CC3CD00C08340 /* Products */ = {
			isa = PBXGroup;
			children = (
				CEDECB8F205CC3CD00C08340 /* BBGestureBack_Full_oc.app */,
				CFD0E96B207A621C00E58465 /* BBGestureBack_Full_swift.app */,
				CF73731120B5592A00BBE7AC /* BBGestureBack_SysFull_oc.app */,
				CF395E0A20BD496B00434CC7 /* BBGestureBack_SysFull_swift.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		CEDECB91205CC3CD00C08340 /* BBGestureBack_Full_oc */ = {
			isa = PBXGroup;
			children = (
				CEDECBC4205CC54D00C08340 /* Classes */,
				CEDECB9B205CC3CD00C08340 /* Assets.xcassets */,
				CEDECB9D205CC3CD00C08340 /* LaunchScreen.storyboard */,
				CEDECBA0205CC3CD00C08340 /* Info.plist */,
				CEDECBA1205CC3CD00C08340 /* main.m */,
			);
			path = BBGestureBack_Full_oc;
			sourceTree = "<group>";
		};
		CEDECBC4205CC54D00C08340 /* Classes */ = {
			isa = PBXGroup;
			children = (
				CF9B76522252F39D00E6031F /* Resource */,
				CEDECBC5205CC54D00C08340 /* Home */,
				CEDECBDC205CC90F00C08340 /* User */,
				CEDECBC8205CC54D00C08340 /* Main */,
			);
			path = Classes;
			sourceTree = "<group>";
		};
		CEDECBC5205CC54D00C08340 /* Home */ = {
			isa = PBXGroup;
			children = (
				CEDECBD3205CC7F500C08340 /* Index */,
				CEDECBC6205CC54D00C08340 /* ViewController.h */,
				CEDECBC7205CC54D00C08340 /* ViewController.m */,
			);
			path = Home;
			sourceTree = "<group>";
		};
		CEDECBC8205CC54D00C08340 /* Main */ = {
			isa = PBXGroup;
			children = (
				CEDECBC9205CC54D00C08340 /* AppDelegate.h */,
				CEDECBCA205CC54D00C08340 /* AppDelegate.m */,
				CF808DEE22520DE3008F9500 /* BBUserGuider */,
				CEDECBD8205CC88500C08340 /* BBNavigation */,
				CEDECBCB205CC54D00C08340 /* BBGestureBack */,
				CEDECBCF205CC72C00C08340 /* BBTabBar */,
			);
			path = Main;
			sourceTree = "<group>";
		};
		CEDECBCB205CC54D00C08340 /* BBGestureBack */ = {
			isa = PBXGroup;
			children = (
				CFE80F3722547FF2001CFA34 /* BBGestureBack.h */,
				CEC3BBC6206354AC0003CF06 /* BBGestureBackConst.h */,
				CEC3BBC7206354CE0003CF06 /* BBGestureBackConst.m */,
				CEDECBE1205CCA4100C08340 /* BBGestureBaseController.h */,
				CEDECBE2205CCA4100C08340 /* BBGestureBaseController.m */,
			);
			path = BBGestureBack;
			sourceTree = "<group>";
		};
		CEDECBCF205CC72C00C08340 /* BBTabBar */ = {
			isa = PBXGroup;
			children = (
				CEDECBD0205CC76800C08340 /* BBTabBarController.h */,
				CEDECBD1205CC76800C08340 /* BBTabBarController.m */,
			);
			path = BBTabBar;
			sourceTree = "<group>";
		};
		CEDECBD3205CC7F500C08340 /* Index */ = {
			isa = PBXGroup;
			children = (
				CEDECBD5205CC82800C08340 /* HomeViewController.h */,
				CEDECBD6205CC82800C08340 /* HomeViewController.m */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CEDECBD8205CC88500C08340 /* BBNavigation */ = {
			isa = PBXGroup;
			children = (
				CEDECBD9205CC8BC00C08340 /* BBNavigationController.h */,
				CEDECBDA205CC8BC00C08340 /* BBNavigationController.m */,
			);
			path = BBNavigation;
			sourceTree = "<group>";
		};
		CEDECBDC205CC90F00C08340 /* User */ = {
			isa = PBXGroup;
			children = (
				CEDECBDD205CC92300C08340 /* Index */,
			);
			path = User;
			sourceTree = "<group>";
		};
		CEDECBDD205CC92300C08340 /* Index */ = {
			isa = PBXGroup;
			children = (
				CEDECBDE205CC94100C08340 /* UserViewController.h */,
				CEDECBDF205CC94100C08340 /* UserViewController.m */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CF395E0B20BD496B00434CC7 /* BBGestureBack_SysFull_swift */ = {
			isa = PBXGroup;
			children = (
				CF395E1D20BD4BD300434CC7 /* Classes */,
				CF395E1320BD496B00434CC7 /* Assets.xcassets */,
				CF395E1520BD496B00434CC7 /* LaunchScreen.storyboard */,
				CF395E1820BD496B00434CC7 /* Info.plist */,
			);
			path = BBGestureBack_SysFull_swift;
			sourceTree = "<group>";
		};
		CF395E1D20BD4BD300434CC7 /* Classes */ = {
			isa = PBXGroup;
			children = (
				CF395E1E20BD4BD300434CC7 /* Home */,
				CF395E2120BD4BD300434CC7 /* User */,
				CF395E2320BD4BD300434CC7 /* Main */,
			);
			path = Classes;
			sourceTree = "<group>";
		};
		CF395E1E20BD4BD300434CC7 /* Home */ = {
			isa = PBXGroup;
			children = (
				CF395E1F20BD4BD300434CC7 /* ViewController.swift */,
				CF395E2020BD4BD300434CC7 /* Index */,
			);
			path = Home;
			sourceTree = "<group>";
		};
		CF395E2020BD4BD300434CC7 /* Index */ = {
			isa = PBXGroup;
			children = (
				CF395E2D20BD4DE300434CC7 /* HomeViewController.swift */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CF395E2120BD4BD300434CC7 /* User */ = {
			isa = PBXGroup;
			children = (
				CF395E2220BD4BD300434CC7 /* Index */,
			);
			path = User;
			sourceTree = "<group>";
		};
		CF395E2220BD4BD300434CC7 /* Index */ = {
			isa = PBXGroup;
			children = (
				CF395E2F20BD4DF400434CC7 /* UserViewController.swift */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CF395E2320BD4BD300434CC7 /* Main */ = {
			isa = PBXGroup;
			children = (
				CF395E2420BD4BD300434CC7 /* AppDelegate.swift */,
				CF395E2520BD4BD300434CC7 /* BBNavigation */,
				CF395E2620BD4BD300434CC7 /* BBTabBar */,
			);
			path = Main;
			sourceTree = "<group>";
		};
		CF395E2520BD4BD300434CC7 /* BBNavigation */ = {
			isa = PBXGroup;
			children = (
				CF395E2B20BD4DC400434CC7 /* BBNavigationController.swift */,
			);
			path = BBNavigation;
			sourceTree = "<group>";
		};
		CF395E2620BD4BD300434CC7 /* BBTabBar */ = {
			isa = PBXGroup;
			children = (
				CF395E2920BD4C5800434CC7 /* BBTabBarController.swift */,
			);
			path = BBTabBar;
			sourceTree = "<group>";
		};
		CF73731220B5592A00BBE7AC /* BBGestureBack_SysFull_oc */ = {
			isa = PBXGroup;
			children = (
				CF73734320B559D200BBE7AC /* Classes */,
				CF73731C20B5592C00BBE7AC /* Assets.xcassets */,
				CF73731E20B5592C00BBE7AC /* LaunchScreen.storyboard */,
				CF73732120B5592C00BBE7AC /* Info.plist */,
				CF73732220B5592C00BBE7AC /* main.m */,
			);
			path = BBGestureBack_SysFull_oc;
			sourceTree = "<group>";
		};
		CF73734320B559D200BBE7AC /* Classes */ = {
			isa = PBXGroup;
			children = (
				CF73734420B559D200BBE7AC /* Home */,
				CF73734820B559D200BBE7AC /* User */,
				CF73734920B559D200BBE7AC /* Main */,
			);
			path = Classes;
			sourceTree = "<group>";
		};
		CF73734420B559D200BBE7AC /* Home */ = {
			isa = PBXGroup;
			children = (
				CF73734620B559D200BBE7AC /* Index */,
				CF73734720B559D200BBE7AC /* ViewController.h */,
				CF73734520B559D200BBE7AC /* ViewController.m */,
			);
			path = Home;
			sourceTree = "<group>";
		};
		CF73734620B559D200BBE7AC /* Index */ = {
			isa = PBXGroup;
			children = (
				CF73735620B55D0B00BBE7AC /* HomeViewController.h */,
				CF73735720B55D0B00BBE7AC /* HomeViewController.m */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CF73734820B559D200BBE7AC /* User */ = {
			isa = PBXGroup;
			children = (
				CF73735920B55D1F00BBE7AC /* Index */,
			);
			path = User;
			sourceTree = "<group>";
		};
		CF73734920B559D200BBE7AC /* Main */ = {
			isa = PBXGroup;
			children = (
				CF73735220B55C7200BBE7AC /* BBTabBar */,
				CF73734E20B55A9B00BBE7AC /* BBNavigation */,
				CF73734A20B559D200BBE7AC /* AppDelegate.h */,
				CF73734B20B559D200BBE7AC /* AppDelegate.m */,
			);
			path = Main;
			sourceTree = "<group>";
		};
		CF73734E20B55A9B00BBE7AC /* BBNavigation */ = {
			isa = PBXGroup;
			children = (
				CF73734F20B55B0D00BBE7AC /* BBNavigationController.h */,
				CF73735020B55B0D00BBE7AC /* BBNavigationController.m */,
			);
			path = BBNavigation;
			sourceTree = "<group>";
		};
		CF73735220B55C7200BBE7AC /* BBTabBar */ = {
			isa = PBXGroup;
			children = (
				CF73735320B55CA400BBE7AC /* BBTabBarController.h */,
				CF73735420B55CA400BBE7AC /* BBTabBarController.m */,
			);
			path = BBTabBar;
			sourceTree = "<group>";
		};
		CF73735920B55D1F00BBE7AC /* Index */ = {
			isa = PBXGroup;
			children = (
				CF73735A20B55D3300BBE7AC /* UserViewController.h */,
				CF73735B20B55D3300BBE7AC /* UserViewController.m */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CF808DEE22520DE3008F9500 /* BBUserGuider */ = {
			isa = PBXGroup;
			children = (
				CF808DEF22520E6A008F9500 /* BBUserGuiderController.h */,
				CF808DF022520E6A008F9500 /* BBUserGuiderController.m */,
			);
			path = BBUserGuider;
			sourceTree = "<group>";
		};
		CF9B76522252F39D00E6031F /* Resource */ = {
			isa = PBXGroup;
			children = (
				CF9B76532252F3C100E6031F /* BBUserGuider.bundle */,
			);
			path = Resource;
			sourceTree = "<group>";
		};
		CF9B765522533C2C00E6031F /* BBUserGuider */ = {
			isa = PBXGroup;
			children = (
				CF9B765622533D0B00E6031F /* BBUserGuiderController.swift */,
			);
			path = BBUserGuider;
			sourceTree = "<group>";
		};
		CF9B765822534ABF00E6031F /* Resource */ = {
			isa = PBXGroup;
			children = (
				CF9B765922534ABF00E6031F /* BBUserGuider.bundle */,
			);
			path = Resource;
			sourceTree = "<group>";
		};
		CFD0E96C207A621C00E58465 /* BBGestureBack_Full_swift */ = {
			isa = PBXGroup;
			children = (
				CFD0E999207A67DA00E58465 /* Classes */,
				CFD0E974207A621C00E58465 /* Assets.xcassets */,
				CFD0E976207A621C00E58465 /* LaunchScreen.storyboard */,
				CFD0E979207A621C00E58465 /* Info.plist */,
			);
			path = BBGestureBack_Full_swift;
			sourceTree = "<group>";
		};
		CFD0E999207A67DA00E58465 /* Classes */ = {
			isa = PBXGroup;
			children = (
				CF9B765822534ABF00E6031F /* Resource */,
				CFD0E99A207A67DA00E58465 /* Home */,
				CFD0E99C207A67DA00E58465 /* User */,
				CFD0E99E207A67DA00E58465 /* Main */,
			);
			path = Classes;
			sourceTree = "<group>";
		};
		CFD0E99A207A67DA00E58465 /* Home */ = {
			isa = PBXGroup;
			children = (
				CF9A6C06207C9DE3004DD232 /* ViewController.swift */,
				CFD0E9A1207BBA2600E58465 /* Index */,
			);
			path = Home;
			sourceTree = "<group>";
		};
		CFD0E99C207A67DA00E58465 /* User */ = {
			isa = PBXGroup;
			children = (
				CFD0E9A4207BBA9000E58465 /* Index */,
			);
			path = User;
			sourceTree = "<group>";
		};
		CFD0E99E207A67DA00E58465 /* Main */ = {
			isa = PBXGroup;
			children = (
				CFD0E9AA207BBB3C00E58465 /* AppDelegate.swift */,
				CF9B765522533C2C00E6031F /* BBUserGuider */,
				CFD0E9A9207BBAF300E58465 /* BBGestureBack */,
				CFD0E9A7207BBAF300E58465 /* BBNavigation */,
				CFD0E9A8207BBAF300E58465 /* BBTabBar */,
			);
			path = Main;
			sourceTree = "<group>";
		};
		CFD0E9A1207BBA2600E58465 /* Index */ = {
			isa = PBXGroup;
			children = (
				CFD0E9A2207BBA5000E58465 /* HomeViewController.swift */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CFD0E9A4207BBA9000E58465 /* Index */ = {
			isa = PBXGroup;
			children = (
				CFD0E9A5207BBAA200E58465 /* UserViewController.swift */,
			);
			path = Index;
			sourceTree = "<group>";
		};
		CFD0E9A7207BBAF300E58465 /* BBNavigation */ = {
			isa = PBXGroup;
			children = (
				CFD0E9AE207BBCD800E58465 /* BBNavigationController.swift */,
			);
			path = BBNavigation;
			sourceTree = "<group>";
		};
		CFD0E9A8207BBAF300E58465 /* BBTabBar */ = {
			isa = PBXGroup;
			children = (
				CFD0E9AC207BBC9A00E58465 /* BBTabBarController.swift */,
			);
			path = BBTabBar;
			sourceTree = "<group>";
		};
		CFD0E9A9207BBAF300E58465 /* BBGestureBack */ = {
			isa = PBXGroup;
			children = (
				CF9A6C0A207CA005004DD232 /* BBGestureBackConst.swift */,
				CFD0E9B0207BBD1E00E58465 /* BBGestureBaseController.swift */,
			);
			path = BBGestureBack;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		CEDECB8E205CC3CD00C08340 /* BBGestureBack_Full_oc */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CEDECBBB205CC3CD00C08340 /* Build configuration list for PBXNativeTarget "BBGestureBack_Full_oc" */;
			buildPhases = (
				CEDECB8B205CC3CD00C08340 /* Sources */,
				CEDECB8C205CC3CD00C08340 /* Frameworks */,
				CEDECB8D205CC3CD00C08340 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = BBGestureBack_Full_oc;
			productName = BBGestureBack;
			productReference = CEDECB8F205CC3CD00C08340 /* BBGestureBack_Full_oc.app */;
			productType = "com.apple.product-type.application";
		};
		CF395E0920BD496B00434CC7 /* BBGestureBack_SysFull_swift */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CF395E1920BD496B00434CC7 /* Build configuration list for PBXNativeTarget "BBGestureBack_SysFull_swift" */;
			buildPhases = (
				CF395E0620BD496B00434CC7 /* Sources */,
				CF395E0720BD496B00434CC7 /* Frameworks */,
				CF395E0820BD496B00434CC7 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = BBGestureBack_SysFull_swift;
			productName = BBGestureBack_SysFull_swift;
			productReference = CF395E0A20BD496B00434CC7 /* BBGestureBack_SysFull_swift.app */;
			productType = "com.apple.product-type.application";
		};
		CF73731020B5592A00BBE7AC /* BBGestureBack_SysFull_oc */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CF73734020B5592C00BBE7AC /* Build configuration list for PBXNativeTarget "BBGestureBack_SysFull_oc" */;
			buildPhases = (
				CF73730D20B5592A00BBE7AC /* Sources */,
				CF73730E20B5592A00BBE7AC /* Frameworks */,
				CF73730F20B5592A00BBE7AC /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = BBGestureBack_SysFull_oc;
			productName = BBGestureBack_SysFull_oc;
			productReference = CF73731120B5592A00BBE7AC /* BBGestureBack_SysFull_oc.app */;
			productType = "com.apple.product-type.application";
		};
		CFD0E96A207A621C00E58465 /* BBGestureBack_Full_swift */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = CFD0E996207A621D00E58465 /* Build configuration list for PBXNativeTarget "BBGestureBack_Full_swift" */;
			buildPhases = (
				CFD0E967207A621C00E58465 /* Sources */,
				CFD0E968207A621C00E58465 /* Frameworks */,
				CFD0E969207A621C00E58465 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = BBGestureBack_Full_swift;
			productName = BBGestureBack_Full_swift;
			productReference = CFD0E96B207A621C00E58465 /* BBGestureBack_Full_swift.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		CEDECB87205CC3CD00C08340 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0930;
				LastUpgradeCheck = 0920;
				ORGANIZATIONNAME = Bonway;
				TargetAttributes = {
					CEDECB8E205CC3CD00C08340 = {
						CreatedOnToolsVersion = 9.2;
						ProvisioningStyle = Automatic;
					};
					CF395E0920BD496B00434CC7 = {
						CreatedOnToolsVersion = 9.3;
						ProvisioningStyle = Automatic;
					};
					CF73731020B5592A00BBE7AC = {
						CreatedOnToolsVersion = 9.3;
						ProvisioningStyle = Automatic;
					};
					CFD0E96A207A621C00E58465 = {
						CreatedOnToolsVersion = 9.2;
						ProvisioningStyle = Automatic;
					};
				};
			};
			buildConfigurationList = CEDECB8A205CC3CD00C08340 /* Build configuration list for PBXProject "BBGestureBack" */;
			compatibilityVersion = "Xcode 8.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = CEDECB86205CC3CD00C08340;
			productRefGroup = CEDECB90205CC3CD00C08340 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				CEDECB8E205CC3CD00C08340 /* BBGestureBack_Full_oc */,
				CFD0E96A207A621C00E58465 /* BBGestureBack_Full_swift */,
				CF73731020B5592A00BBE7AC /* BBGestureBack_SysFull_oc */,
				CF395E0920BD496B00434CC7 /* BBGestureBack_SysFull_swift */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		CEDECB8D205CC3CD00C08340 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CEDECB9F205CC3CD00C08340 /* LaunchScreen.storyboard in Resources */,
				CF9B76542252F3C100E6031F /* BBUserGuider.bundle in Resources */,
				CEDECB9C205CC3CD00C08340 /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF395E0820BD496B00434CC7 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CF395E1720BD496B00434CC7 /* LaunchScreen.storyboard in Resources */,
				CF395E1420BD496B00434CC7 /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF73730F20B5592A00BBE7AC /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CF73732020B5592C00BBE7AC /* LaunchScreen.storyboard in Resources */,
				CF73731D20B5592C00BBE7AC /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CFD0E969207A621C00E58465 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CFD0E978207A621C00E58465 /* LaunchScreen.storyboard in Resources */,
				CF9B765A22534ABF00E6031F /* BBUserGuider.bundle in Resources */,
				CFD0E975207A621C00E58465 /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		CEDECB8B205CC3CD00C08340 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CEDECBE0205CC94100C08340 /* UserViewController.m in Sources */,
				CEDECBCD205CC54D00C08340 /* ViewController.m in Sources */,
				CF808DF122520E6A008F9500 /* BBUserGuiderController.m in Sources */,
				CEDECBA2205CC3CD00C08340 /* main.m in Sources */,
				CEDECBCE205CC54D00C08340 /* AppDelegate.m in Sources */,
				CEDECBD7205CC82800C08340 /* HomeViewController.m in Sources */,
				CEC3BBC8206354CE0003CF06 /* BBGestureBackConst.m in Sources */,
				CEDECBD2205CC76800C08340 /* BBTabBarController.m in Sources */,
				CEDECBE3205CCA4100C08340 /* BBGestureBaseController.m in Sources */,
				CEDECBDB205CC8BC00C08340 /* BBNavigationController.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF395E0620BD496B00434CC7 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CF395E2E20BD4DE300434CC7 /* HomeViewController.swift in Sources */,
				CF395E3020BD4DF400434CC7 /* UserViewController.swift in Sources */,
				CF395E2820BD4BD300434CC7 /* AppDelegate.swift in Sources */,
				CF395E2720BD4BD300434CC7 /* ViewController.swift in Sources */,
				CF395E2A20BD4C5800434CC7 /* BBTabBarController.swift in Sources */,
				CF395E2C20BD4DC400434CC7 /* BBNavigationController.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CF73730D20B5592A00BBE7AC /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CF73735C20B55D3300BBE7AC /* UserViewController.m in Sources */,
				CF73734C20B559D200BBE7AC /* ViewController.m in Sources */,
				CF73732320B5592C00BBE7AC /* main.m in Sources */,
				CF73734D20B559D200BBE7AC /* AppDelegate.m in Sources */,
				CF73735120B55B0D00BBE7AC /* BBNavigationController.m in Sources */,
				CF73735520B55CA400BBE7AC /* BBTabBarController.m in Sources */,
				CF73735820B55D0B00BBE7AC /* HomeViewController.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		CFD0E967207A621C00E58465 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				CFD0E9AB207BBB3C00E58465 /* AppDelegate.swift in Sources */,
				CF9B765722533D0B00E6031F /* BBUserGuiderController.swift in Sources */,
				CFD0E9B1207BBD1E00E58465 /* BBGestureBaseController.swift in Sources */,
				CFD0E9AF207BBCD800E58465 /* BBNavigationController.swift in Sources */,
				CFD0E9AD207BBC9A00E58465 /* BBTabBarController.swift in Sources */,
				CF9A6C07207C9DE3004DD232 /* ViewController.swift in Sources */,
				CFD0E9A6207BBAA200E58465 /* UserViewController.swift in Sources */,
				CF9A6C0B207CA005004DD232 /* BBGestureBackConst.swift in Sources */,
				CFD0E9A3207BBA5000E58465 /* HomeViewController.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		CEDECB9D205CC3CD00C08340 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				CEDECB9E205CC3CD00C08340 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
		CF395E1520BD496B00434CC7 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				CF395E1620BD496B00434CC7 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
		CF73731E20B5592C00BBE7AC /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				CF73731F20B5592C00BBE7AC /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
		CFD0E976207A621C00E58465 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				CFD0E977207A621C00E58465 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		CEDECBB9205CC3CD00C08340 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 11.2;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		CEDECBBA205CC3CD00C08340 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 11.2;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		CEDECBBC205CC3CD00C08340 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = "$(SRCROOT)/BBGestureBack_Full_oc/Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		CEDECBBD205CC3CD00C08340 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = "$(SRCROOT)/BBGestureBack_Full_oc/Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
		CF395E1A20BD496B00434CC7 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = BBGestureBack_SysFull_swift/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 11.3;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.bonway.BBGestureBack-SysFull-swift";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		CF395E1B20BD496B00434CC7 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = BBGestureBack_SysFull_swift/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 11.3;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.bonway.BBGestureBack-SysFull-swift";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
		CF73733A20B5592C00BBE7AC /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CODE_SIGN_STYLE = Automatic;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = BBGestureBack_SysFull_oc/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		CF73733B20B5592C00BBE7AC /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CODE_SIGN_STYLE = Automatic;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = BBGestureBack_SysFull_oc/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
		CFD0E990207A621D00E58465 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = BBGestureBack_Full_swift/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		CFD0E991207A621D00E58465 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = BBGestureBack_Full_swift/Info.plist;
				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = Bonway.com.gestureBack;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		CEDECB8A205CC3CD00C08340 /* Build configuration list for PBXProject "BBGestureBack" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CEDECBB9205CC3CD00C08340 /* Debug */,
				CEDECBBA205CC3CD00C08340 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CEDECBBB205CC3CD00C08340 /* Build configuration list for PBXNativeTarget "BBGestureBack_Full_oc" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CEDECBBC205CC3CD00C08340 /* Debug */,
				CEDECBBD205CC3CD00C08340 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CF395E1920BD496B00434CC7 /* Build configuration list for PBXNativeTarget "BBGestureBack_SysFull_swift" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CF395E1A20BD496B00434CC7 /* Debug */,
				CF395E1B20BD496B00434CC7 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CF73734020B5592C00BBE7AC /* Build configuration list for PBXNativeTarget "BBGestureBack_SysFull_oc" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CF73733A20B5592C00BBE7AC /* Debug */,
				CF73733B20B5592C00BBE7AC /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		CFD0E996207A621D00E58465 /* Build configuration list for PBXNativeTarget "BBGestureBack_Full_swift" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				CFD0E990207A621D00E58465 /* Debug */,
				CFD0E991207A621D00E58465 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = CEDECB87205CC3CD00C08340 /* Project object */;
}


================================================
FILE: BBGestureBack.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:BBGestureBack.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: BBGestureBack.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   uuid = "D758E668-F67A-42BE-8ACE-58488819D3D8"
   type = "1"
   version = "2.0">
</Bucket>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_Full_oc.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0920"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CEDECB8E205CC3CD00C08340"
               BuildableName = "BBGestureBack_Full_oc.app"
               BlueprintName = "BBGestureBack_Full_oc"
               ReferencedContainer = "container:BBGestureBack.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
         <BuildActionEntry
            buildForTesting = "NO"
            buildForRunning = "NO"
            buildForProfiling = "NO"
            buildForArchiving = "NO"
            buildForAnalyzing = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CEDECBA6205CC3CD00C08340"
               BuildableName = "BBGestureBackTests.xctest"
               BlueprintName = "BBGestureBackTests"
               ReferencedContainer = "container:BBGestureBack.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
         <BuildActionEntry
            buildForTesting = "NO"
            buildForRunning = "NO"
            buildForProfiling = "NO"
            buildForArchiving = "NO"
            buildForAnalyzing = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CEDECBB1205CC3CD00C08340"
               BuildableName = "BBGestureBackUITests.xctest"
               BlueprintName = "BBGestureBackUITests"
               ReferencedContainer = "container:BBGestureBack.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CEDECB8E205CC3CD00C08340"
            BuildableName = "BBGestureBack_Full_oc.app"
            BlueprintName = "BBGestureBack_Full_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CEDECB8E205CC3CD00C08340"
            BuildableName = "BBGestureBack_Full_oc.app"
            BlueprintName = "BBGestureBack_Full_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CEDECB8E205CC3CD00C08340"
            BuildableName = "BBGestureBack_Full_oc.app"
            BlueprintName = "BBGestureBack_Full_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_Full_swift.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0930"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CFD0E96A207A621C00E58465"
               BuildableName = "BBGestureBack_Full_swift.app"
               BlueprintName = "BBGestureBack_Full_swift"
               ReferencedContainer = "container:BBGestureBack.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CFD0E96A207A621C00E58465"
            BuildableName = "BBGestureBack_Full_swift.app"
            BlueprintName = "BBGestureBack_Full_swift"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CFD0E96A207A621C00E58465"
            BuildableName = "BBGestureBack_Full_swift.app"
            BlueprintName = "BBGestureBack_Full_swift"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CFD0E96A207A621C00E58465"
            BuildableName = "BBGestureBack_Full_swift.app"
            BlueprintName = "BBGestureBack_Full_swift"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_SysFull_oc.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0930"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "CF73731020B5592A00BBE7AC"
               BuildableName = "BBGestureBack_SysFull_oc.app"
               BlueprintName = "BBGestureBack_SysFull_oc"
               ReferencedContainer = "container:BBGestureBack.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CF73731020B5592A00BBE7AC"
            BuildableName = "BBGestureBack_SysFull_oc.app"
            BlueprintName = "BBGestureBack_SysFull_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CF73731020B5592A00BBE7AC"
            BuildableName = "BBGestureBack_SysFull_oc.app"
            BlueprintName = "BBGestureBack_SysFull_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "CF73731020B5592A00BBE7AC"
            BuildableName = "BBGestureBack_SysFull_oc.app"
            BlueprintName = "BBGestureBack_SysFull_oc"
            ReferencedContainer = "container:BBGestureBack.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SchemeUserState</key>
	<dict>
		<key>BBGestureBack_Full_oc.xcscheme</key>
		<dict>
			<key>isShown</key>
			<true/>
			<key>orderHint</key>
			<integer>0</integer>
		</dict>
		<key>BBGestureBack_Full_swift.xcscheme</key>
		<dict>
			<key>isShown</key>
			<true/>
			<key>orderHint</key>
			<integer>1</integer>
		</dict>
		<key>BBGestureBack_SysFull_oc.xcscheme</key>
		<dict>
			<key>isShown</key>
			<true/>
			<key>orderHint</key>
			<integer>2</integer>
		</dict>
		<key>BBGestureBack_SysFull_swift.xcscheme</key>
		<dict>
			<key>orderHint</key>
			<integer>3</integer>
		</dict>
		<key>BBGestureBack_SysFull_swift.xcscheme_^#shared#^_</key>
		<dict>
			<key>orderHint</key>
			<integer>3</integer>
		</dict>
	</dict>
	<key>SuppressBuildableAutocreation</key>
	<dict>
		<key>CEDECB8E205CC3CD00C08340</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
		<key>CF73731020B5592A00BBE7AC</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
		<key>CFD0E96A207A621C00E58465</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
	</dict>
</dict>
</plist>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   type = "1"
   version = "2.0">
</Bucket>


================================================
FILE: BBGestureBack.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SchemeUserState</key>
	<dict>
		<key>BBGestureBack.xcscheme</key>
		<dict>
			<key>orderHint</key>
			<integer>0</integer>
		</dict>
	</dict>
</dict>
</plist>


================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "83.5x83.5",
      "idiom" : "ipad",
      "filename" : "83.5@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "1024x1024",
      "idiom" : "ios-marketing",
      "filename" : "1024@1x.png",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/Navigation/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/Navigation/bb_navigation_back.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "bb_navigation_back@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "bb_navigation_back@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/TabBar/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  },
  "properties" : {
    "template-rendering-intent" : "original"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  },
  "properties" : {
    "template-rendering-intent" : "original"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Assets.xcassets/logo.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_oc/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="wJ6-tn-oZ6"/>
                        <viewControllerLayoutGuide type="bottom" id="brw-ND-DR7"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="7fk-3g-lDI">
                                <rect key="frame" x="67" y="213.5" width="240" height="240"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="240" id="lbg-7s-TM8"/>
                                    <constraint firstAttribute="width" constant="240" id="opV-cn-Xl0"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您可以为我点个赞吗?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LMs-9Q-pEN">
                                <rect key="frame" x="16" y="473.5" width="343" height="21"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="21" id="IiF-NU-D1J"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="top" secondItem="7fk-3g-lDI" secondAttribute="bottom" constant="20" id="4pq-RP-mNf"/>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leadingMargin" id="CPs-4w-sCY"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="JdY-mR-UbN"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="etK-3r-Gum"/>
                            <constraint firstAttribute="trailingMargin" secondItem="LMs-9Q-pEN" secondAttribute="trailing" id="nVr-AX-uZf"/>
                        </constraints>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="32.5" y="416.5"/>
        </scene>
    </scenes>
    <resources>
        <image name="logo" width="200" height="200"/>
    </resources>
</document>


================================================
FILE: BBGestureBack_Full_oc/Classes/Home/Index/HomeViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
#import "BBGestureBaseController.h"
@interface HomeViewController : BBGestureBaseController

@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Home/Index/HomeViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "HomeViewController.h"
#import "ViewController.h"
@interface HomeViewController ()

@end

@implementation HomeViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIButton *sysBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    sysBtn.backgroundColor = [UIColor blueColor];
    [sysBtn setTitle:@"sysPush" forState:UIControlStateNormal];
    [sysBtn addTarget:self action:@selector(sysPushClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:sysBtn];
    
}

-(void)sysPushClick{
    [self.navigationController pushViewController:[ViewController new] animated:YES];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
}



@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Home/ViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
#import "BBGestureBaseController.h"
@interface ViewController : BBGestureBaseController


@end



================================================
FILE: BBGestureBack_Full_oc/Classes/Home/ViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "ViewController.h"
#import "AppDelegate.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    //iOS12.1 UINavigationController + UITabBarController( UITabBar 磨砂),在 系统的 popViewControllerAnimated 会遇到tabbar布局错乱的问题,所以需添加以下方法。
    //当然你也可以自己选择添加到底层的navigationController,或 baseViewController中,进行处理。
    [[UITabBar appearance]setTranslucent:NO];
    //---------------------------------------
    
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    UIButton *popBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 150, 50)];
    popBtn.backgroundColor = [UIColor redColor];
    [popBtn setTitle:@"BBPop" forState:UIControlStateNormal];
    [popBtn addTarget:self action:@selector(popClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:popBtn];
    
    UIButton *popToVCBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 150, 50)];
    popToVCBtn.backgroundColor = [UIColor redColor];
    [popToVCBtn setTitle:@"BBPopToVC" forState:UIControlStateNormal];
    [popToVCBtn addTarget:self action:@selector(popToClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:popToVCBtn];
    
    UIButton *popToRootBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 300, 150, 50)];
    popToRootBtn.backgroundColor = [UIColor redColor];
    [popToRootBtn setTitle:@"BBPopToRootVC" forState:UIControlStateNormal];
    [popToRootBtn addTarget:self action:@selector(popToRootClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:popToRootBtn];
    
    UIButton *sysPopBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 400, 150, 50)];
    sysPopBtn.backgroundColor = [UIColor blueColor];
    [sysPopBtn setTitle:@"sysPop" forState:UIControlStateNormal];
    [sysPopBtn addTarget:self action:@selector(sysPopClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:sysPopBtn];
    
    
}



-(void)popClick{
    [self bb_popViewController];
}

-(void)popToClick{
    UIViewController *viewController = self.navigationController.viewControllers[0];
    [self bb_popToViewController:viewController];
}

-(void)popToRootClick{
    [self bb_popToRootViewController];
}

-(void)sysPopClick{
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
}


@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/AppDelegate.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
#import "BBGestureBaseController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (nonatomic, strong) BBGestureBaseView *gestureBaseView;
@property (strong, nonatomic) UIWindow *window;
+ (AppDelegate* )shareAppDelegate;

- (void)setupRootViewController:(UIViewController *)rootViewController;

@end



================================================
FILE: BBGestureBack_Full_oc/Classes/Main/AppDelegate.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "AppDelegate.h"

#import "BBGestureBack.h"
#import "BBUserGuiderController.h"
@interface AppDelegate ()

@end

@implementation AppDelegate

+ (AppDelegate* )shareAppDelegate {
    return (AppDelegate*)[UIApplication sharedApplication].delegate;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    [self setupRootController];
    
    [self.window makeKeyAndVisible];
    return YES;
    
}


- (void)applicationWillResignActive:(UIApplication *)application {
    // 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.
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}


- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 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.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
    // 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.
}


- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}



- (void)setupRootController {
    
    if (![BBUserDefault boolForKey:kBBFirstLaunch]) {
        [BBUserDefault setBool:YES forKey:kBBFirstLaunch];
        [self setupRootViewController:[[BBUserGuiderController alloc]init]];
    }else{
        [self setupRootViewController:[[BBTabBarController alloc] init]];
    }
    
}

- (void)setupRootViewController:(UIViewController *)rootViewController {
    
    rootViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [UIView transitionWithView:self.window duration:0.5f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        BOOL oldState = [UIView areAnimationsEnabled];
        [UIView setAnimationsEnabled:NO];
        [UIApplication sharedApplication].keyWindow.rootViewController = rootViewController;
        [UIView setAnimationsEnabled:oldState];
    } completion:nil];
    
    
    if (!self.gestureBaseView) {
        self.window.rootViewController = rootViewController;
        self.gestureBaseView = [[BBGestureBaseView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, self.window.frame.size.height)];
        [self.window insertSubview:self.gestureBaseView atIndex:0];
    }else{
        [self.gestureBaseView removeObserver];
        self.window.rootViewController = rootViewController;
        [self.gestureBaseView addObserver];
        [self.window sendSubviewToBack:self.gestureBaseView];
    }
    
    self.gestureBaseView.hidden = YES;
    
}

@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBack.h
================================================
//
//  BBGestureBack.h
//  BBGestureBack
//
//  Created by Bonway on 2019/4/3.
//  Copyright © 2019 Bonway. All rights reserved.
//

#ifndef BBGestureBack_h
#define BBGestureBack_h

#import "BBGestureBackConst.h"
#import "BBTabBarController.h"
#import "BBGestureBaseController.h"

#endif /* BBGestureBack_h */


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBackConst.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
#import <objc/message.h>

#ifdef DEBUG
#define BBLog(...) NSLog(__VA_ARGS__)
#else
#define BBLog(...)
#endif

#define BBWeakSelf __weak typeof(self) weakSelf = self;
#define BBUserDefault [NSUserDefaults standardUserDefaults]
#define BBDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
#define BBObjectMsgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__)
#define BBObjectMsgTarget(target) (__bridge void *)(target)
#define BBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]

#pragma mark - 手机型号
#define BBSCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
#define BBIS_IPHONEX ((BBSCREEN_HEIGHT-812)==0 || (BBSCREEN_HEIGHT-896)==0)


//The ifrst user guider image (第一次引导图)
UIKIT_EXTERN NSString *const kBBFirstLaunch;
// Open iPhone X Style.(是否打开Phone X风格)
UIKIT_EXTERN const Boolean kBBIsOpenIphoneXStyle;
// The default is 40, iPhone X Style Corner。(默认为40,iPhone X 圆角弧度)
UIKIT_EXTERN const CGFloat kBBIphoneXStyleCorner;
// The default is 3, User guider image count。(默认为3,用户引导图总页数)
UIKIT_EXTERN const NSInteger kBBUserGuiderImgCount;
// Screen system to return gesture.(是否屏蔽系统返回手势)
UIKIT_EXTERN const Boolean kBBIsCanleSystemPan;
// The distance from the left can be automatically returned.(距离左边多少距离,可以自动返回)
UIKIT_EXTERN const CGFloat kBBDistanceToLeft;
// BottomView Scaling.(底层缩放比例)
UIKIT_EXTERN const CGFloat kBBWindowToScale;
// BottomView alpha.(底层透明度)
UIKIT_EXTERN const CGFloat kBBMaskingAlpha;
// Automatic return speed.(自动返回速度)
UIKIT_EXTERN const CGFloat kBBGestureSpeed;
// Range of drag and drop.(拖拽的范围,大于此值才有效果)
UIKIT_EXTERN const CGFloat kBBDistanceToPan;
// The default is 0, 0 for full screen return, and also for distance.(默认为0,0为全屏返回,也可指定距离)
UIKIT_EXTERN const CGFloat kBBDistanceToStart;




================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBackConst.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>

NSString *const kBBFirstLaunch = @"BBFirstLaunch";

const Boolean kBBIsOpenIphoneXStyle = YES;
const CGFloat kBBIphoneXStyleCorner = 40.0;
const NSInteger kBBUserGuiderImgCount = 3;
const Boolean kBBIsCanleSystemPan = YES;
const CGFloat kBBDistanceToLeft = 70.0;
const CGFloat kBBWindowToScale = 0.95;
const CGFloat kBBMaskingAlpha = 0.9;
const CGFloat kBBGestureSpeed = 0.3;
const CGFloat kBBDistanceToPan = 10.0;
const CGFloat kBBDistanceToStart = 0.0;


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBaseController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
typedef enum _BBPopType {
    BBPopTypeViewController  = 0,
    BBPopTypeToViewController,
    BBPopTypeToRootViewController
} BBPopType;

@interface BBGestureBaseController : UIViewController
@property (nonatomic) BBPopType blankType;// default is BBPopTypeViewController.
@property (nonatomic) Boolean isEnablePanGesture;// default is YES.

- (void)bb_popViewController;
- (void)bb_popToViewController:(UIViewController *)viewController;
- (void)bb_popToRootViewController;

@end


@interface BBGestureBaseView : UIView
@property (nonatomic, strong) UIImageView *imgView;
@property (nonatomic, strong) UIView *maskView;
@property (nonatomic, strong) NSMutableArray *arrayImage;

- (void)showEffectChange:(CGPoint)pt;
- (void)restore;
- (void)screenShot;
- (void)removeObserver;
- (void)addObserver;
@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBaseController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "BBGestureBaseController.h"
#import <QuartzCore/QuartzCore.h>
#import "AppDelegate.h"
#import "BBGestureBackConst.h"




static char bbListenTabbarViewMove[] = "bbListenTabbarViewMove";

@interface BBGestureBaseController ()

@property (nonatomic,strong)UIBarButtonItem *bbBackBarItem;

@end

@implementation BBGestureBaseController

- (id)init{
    self = [super init];
    if (self) {
        self.isEnablePanGesture = YES;
        self.blankType = BBPopTypeViewController;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    if (self.navigationController.viewControllers.count > 1) {
        self.navigationItem.leftBarButtonItem = self.bbBackBarItem;
    }
}

-(UIBarButtonItem *)bbBackBarItem{
    if (!_bbBackBarItem) {
        UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        [backBtn setImage:[UIImage imageNamed:@"bb_navigation_back"] forState:UIControlStateNormal];
        backBtn.imageView.contentMode = UIViewContentModeCenter;
        [backBtn addTarget:self action:@selector(dismissSelf) forControlEvents:UIControlEventTouchUpInside];
        _bbBackBarItem = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
        backBtn.frame = CGRectMake(0, 0, 44, 44);
        backBtn.contentEdgeInsets = UIEdgeInsetsMake(0, -25, 0,0);
    }
    return _bbBackBarItem;
}

- (void)dismissSelf{
    
    switch (self.blankType) {
        case BBPopTypeViewController:
            [self bb_popViewController];
            break;
        case BBPopTypeToRootViewController:
            [self bb_popToRootViewController];
            break;
        default:
            break;
    }
    
    
}



-(void)bb_basePopViewController:(UIViewController *)viewController PopType:(BBPopType)popType{
    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    UIViewController *rootVC = appDelegate.window.rootViewController;
    UIViewController *presentedVC = rootVC.presentedViewController;
    appDelegate.gestureBaseView.hidden = NO;
    
    appDelegate.gestureBaseView.maskView.backgroundColor = [UIColor colorWithHue:0 saturation:0 brightness:0 alpha:kBBMaskingAlpha];
    appDelegate.gestureBaseView.imgView.transform = CGAffineTransformMakeScale(kBBWindowToScale, kBBWindowToScale);
    
    [UIView animateWithDuration:kBBGestureSpeed animations:^{
        rootVC.view.transform = CGAffineTransformMakeTranslation(([UIScreen mainScreen].bounds.size.width), 0);
        presentedVC.view.transform = CGAffineTransformMakeTranslation(([UIScreen mainScreen].bounds.size.width), 0);
        if (BBIS_IPHONEX && kBBIsOpenIphoneXStyle) {
            rootVC.view.layer.masksToBounds = YES;
            rootVC.view.layer.cornerRadius = kBBIphoneXStyleCorner;
            presentedVC.view.layer.masksToBounds = YES;
            presentedVC.view.layer.cornerRadius = kBBIphoneXStyleCorner;
        }
    } completion:^(BOOL finished) {
        switch (popType) {
            case BBPopTypeViewController:
                [self.navigationController popViewControllerAnimated:NO];
                break;
            case BBPopTypeToViewController:
                [self.navigationController popToViewController:viewController animated:NO];
                break;
            case BBPopTypeToRootViewController:
                [self.navigationController popToRootViewControllerAnimated:NO];
                break;
            default:
                break;
        }
        rootVC.view.transform = CGAffineTransformIdentity;
        presentedVC.view.transform = CGAffineTransformIdentity;
        if (BBIS_IPHONEX && kBBIsOpenIphoneXStyle) {
            rootVC.view.layer.masksToBounds = NO;
            rootVC.view.layer.cornerRadius = 0;
            presentedVC.view.layer.masksToBounds = NO;
            presentedVC.view.layer.cornerRadius = 0;
        }
        appDelegate.gestureBaseView.hidden = YES;
        
    }];
}

- (void)bb_popViewController{
    [self bb_basePopViewController:nil PopType:BBPopTypeViewController];
}

-(void)bb_popToRootViewController{
    [self bb_basePopViewController:nil PopType:BBPopTypeToRootViewController];
}

-(void)bb_popToViewController:(UIViewController *)viewController{
    [self bb_basePopViewController:viewController PopType:BBPopTypeToViewController];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
@end
@interface BBGestureBaseView()
@property(nonatomic,weak)UIView *rootControllerView;
@end

@implementation BBGestureBaseView
- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.arrayImage = [NSMutableArray array];
        self.backgroundColor = [UIColor blackColor];
        self.imgView = [[UIImageView alloc] initWithFrame:self.bounds];
        if (BBIS_IPHONEX && kBBIsOpenIphoneXStyle) {
            self.imgView.layer.masksToBounds = YES;
            self.imgView.layer.cornerRadius = kBBIphoneXStyleCorner;
        }
        self.maskView = [[UIView alloc] initWithFrame:self.bounds];
        self.maskView.backgroundColor = [UIColor colorWithHue:0 saturation:0 brightness:0 alpha:kBBMaskingAlpha];
        [self addSubview: self.imgView];
        [self addSubview: self.maskView];
        [self addObserver];
    }
    return self;
}

- (void)removeObserver {
    [self.rootControllerView removeObserver:self forKeyPath:@"transform" context:bbListenTabbarViewMove];
}

- (void)addObserver {
    self.rootControllerView = [AppDelegate shareAppDelegate].window.rootViewController.view;
    [self.rootControllerView addObserver:self forKeyPath:@"transform" options:NSKeyValueObservingOptionNew context:bbListenTabbarViewMove];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (context == bbListenTabbarViewMove){
        NSValue *value  = [change objectForKey:NSKeyValueChangeNewKey];
        CGAffineTransform newTransform = [value CGAffineTransformValue];
        [self showEffectChange:CGPointMake(newTransform.tx, 0) ];
    }
}

- (void)showEffectChange:(CGPoint)pt{
    
    if (pt.x > 0){
        _maskView.backgroundColor = [UIColor colorWithHue:0 saturation:0 brightness:0 alpha:-pt.x / ([UIScreen mainScreen].bounds.size.width) * kBBMaskingAlpha + kBBMaskingAlpha];
        _imgView.transform = CGAffineTransformMakeScale(kBBWindowToScale + (pt.x / ([UIScreen mainScreen].bounds.size.width) * (1 - kBBWindowToScale)), kBBWindowToScale + (pt.x / ([UIScreen mainScreen].bounds.size.width) * (1 - kBBWindowToScale)));
    }
    if (pt.x < 0){
        _maskView.backgroundColor = [UIColor colorWithHue:0 saturation:0 brightness:0 alpha:0.5];
        _imgView.transform = CGAffineTransformIdentity;
    }
}

- (void)restore {
    if (_maskView && _imgView){
        _maskView.backgroundColor = [UIColor colorWithHue:0 saturation:0 brightness:0 alpha:kBBMaskingAlpha];
        _imgView.transform = CGAffineTransformMakeScale(kBBWindowToScale, kBBWindowToScale);
    }
}

- (void)screenShot{
    AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
    UIGraphicsBeginImageContextWithOptions(CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height), YES, 0);
    [appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    CGImageRef imageRef = viewImage.CGImage;
    UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRef];
    self.imgView.image = sendImage;
    self.imgView.transform = CGAffineTransformMakeScale(kBBWindowToScale, kBBWindowToScale);
}

- (void)dealloc{
    [self removeObserver];
}

- (void)layoutSubviews{
    [super layoutSubviews];
}
@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBNavigation/BBNavigationController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>

@interface BBNavigationController : UINavigationController
@property (strong ,nonatomic) NSMutableArray *arrayScreenshot;
@property (nonatomic, strong) UIPanGestureRecognizer *panGesture;
@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBNavigation/BBNavigationController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "BBNavigationController.h"

#import "BBGestureBack.h"
#import "AppDelegate.h"
@interface BBNavigationController ()<UIGestureRecognizerDelegate,UINavigationControllerDelegate>
@end

@implementation BBNavigationController

-(NSMutableArray *)arrayScreenshot{
    if (!_arrayScreenshot) {
        _arrayScreenshot = [NSMutableArray array];
    }
    return _arrayScreenshot;
}

- (void)viewDidLoad{
    [super viewDidLoad];
    //屏蔽系统的手势
    self.interactivePopGestureRecognizer.enabled = !kBBIsCanleSystemPan;
    self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
    _panGesture.delegate = self;
    [self.view addGestureRecognizer:_panGesture];
}

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
    if (gestureRecognizer.view == self.view && [gestureRecognizer locationInView:self.view].x < (kBBDistanceToStart == 0 ? UIScreen.mainScreen.bounds.size.width : kBBDistanceToStart)) {
        BBGestureBaseController *topView = (BBGestureBaseController *)self.topViewController;
        if (!topView.isEnablePanGesture)
            return NO;
        else {
            CGPoint translate = [gestureRecognizer translationInView:self.view];
            BOOL possible = translate.x != 0 && fabs(translate.y) == 0;
            if (possible)
                return YES;
            else
                return NO;
            return YES;
        }
    }
    return NO;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if ([otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")] || [otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIPanGestureRecognizer")]|| [otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIScrollViewPagingSwipeGestureRecognizer")]) {
        UIView *aView = otherGestureRecognizer.view;
        if ([aView isKindOfClass:[UIScrollView class]]) {
            UIScrollView *sv = (UIScrollView *)aView;
            if (sv.contentOffset.x==0) {
                if ([otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")] && otherGestureRecognizer.state != UIGestureRecognizerStateBegan) {
                    return NO;
                }else{
                    return YES;
                }
            }
        }
        return NO;
    }
    return YES;
}

- (void)handlePanGesture:(UIPanGestureRecognizer *)panGesture {
    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    UIViewController *rootVC = appDelegate.window.rootViewController;
    UIViewController *presentedVC = rootVC.presentedViewController;
    if (self.viewControllers.count == 1) {
        return;
    }
    if (panGesture.state == UIGestureRecognizerStateBegan) {
        if (BBIS_IPHONEX && kBBIsOpenIphoneXStyle) {
            rootVC.view.layer.masksToBounds = YES;
            rootVC.view.layer.cornerRadius = kBBIphoneXStyleCorner;
            presentedVC.view.layer.masksToBounds = YES;
            presentedVC.view.layer.cornerRadius = kBBIphoneXStyleCorner;
        }
        appDelegate.gestureBaseView.hidden = NO;
    }
    else if (panGesture.state == UIGestureRecognizerStateChanged) {
        CGPoint point_inView = [panGesture translationInView:self.view];
        if (point_inView.x >= kBBDistanceToPan) {
            rootVC.view.transform = CGAffineTransformMakeTranslation(point_inView.x - kBBDistanceToPan, 0);
            presentedVC.view.transform = CGAffineTransformMakeTranslation(point_inView.x - kBBDistanceToPan, 0);
        }
    }
    else if (panGesture.state == UIGestureRecognizerStateEnded) {
        CGPoint point_inView = [panGesture translationInView:self.view];
        if (point_inView.x >= kBBDistanceToLeft) {
            [UIView animateWithDuration:kBBGestureSpeed animations:^{
                rootVC.view.transform = CGAffineTransformMakeTranslation(([UIScreen mainScreen].bounds.size.width), 0);
                presentedVC.view.transform = CGAffineTransformMakeTranslation(([UIScreen mainScreen].bounds.size.width), 0);
            } completion:^(BOOL finished) {
                [self popViewControllerAnimated:NO];
                rootVC.view.transform = CGAffineTransformIdentity;
                presentedVC.view.transform = CGAffineTransformIdentity;
                appDelegate.gestureBaseView.hidden = YES;
            }];
        }
        else {
            [UIView animateWithDuration:kBBGestureSpeed animations:^{
                rootVC.view.transform = CGAffineTransformIdentity;
                presentedVC.view.transform = CGAffineTransformIdentity;
            } completion:^(BOOL finished) {
                if (BBIS_IPHONEX && kBBIsOpenIphoneXStyle) {
                    rootVC.view.layer.masksToBounds = NO;
                    rootVC.view.layer.cornerRadius = 0;
                    presentedVC.view.layer.masksToBounds = NO;
                    presentedVC.view.layer.cornerRadius = 0;
                }
                appDelegate.gestureBaseView.hidden = YES;
            }];
        }
    }
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    BBGestureBaseController *topView = (BBGestureBaseController *)self.topViewController;
    if (topView.isEnablePanGesture == NO)     return NO;
    if (self.viewControllers.count <= 1)    return NO;
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        CGPoint point = [touch locationInView:gestureRecognizer.view];
        if (point.x < [UIScreen mainScreen].bounds.size.width) {
            return YES;
        }
    }
    return NO;
}
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated {
    NSArray *arr = [super popToViewController:viewController animated:animated];
    if (self.arrayScreenshot.count > arr.count){
        for (int i = 0; i < arr.count; i++) {
            [self.arrayScreenshot removeLastObject];
        }
    }
    return arr;
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.viewControllers.count == 0) {
        return [super pushViewController:viewController animated:animated];
    }else if (self.viewControllers.count >= 1) {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(appdelegate.window.frame.size.width, appdelegate.window.frame.size.height), YES, 0);
    [appdelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [self.arrayScreenshot addObject:viewImage];
    appdelegate.gestureBaseView.imgView.image = viewImage;
    [super pushViewController:viewController animated:animated];
}
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
    
    AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    [self.arrayScreenshot removeLastObject];
    UIImage *image = [self.arrayScreenshot lastObject];
    if (image)
        appdelegate.gestureBaseView.imgView.image = image;
    UIViewController *viewController = [super popViewControllerAnimated:animated];
    
    return viewController;
}
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated {
    AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    if (self.arrayScreenshot.count > 2) {
        [self.arrayScreenshot removeObjectsInRange:NSMakeRange(1, self.arrayScreenshot.count - 1)];
    }
    UIImage *image = [self.arrayScreenshot lastObject];
    if (image)
        appdelegate.gestureBaseView.imgView.image = image;
    return [super popToRootViewControllerAnimated:animated];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}



@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBTabBar/BBTabBarController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>

@interface BBTabBarController : UITabBarController
 
@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBTabBar/BBTabBarController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.



#import "BBTabBarController.h"

#import "BBNavigationController.h"

#import "HomeViewController.h"
#import "UserViewController.h"

@interface BBTabBarController ()

@end

@implementation BBTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUpAllChildViewController];
    
    //iOS 闪动问题,明白了一看就懂
    [[UITabBar appearance] setTranslucent:NO];
    [[UINavigationBar appearance]setTranslucent:NO];
    self.tabBar.tintColor = [UIColor blueColor];
    self.tabBar.barTintColor = [UIColor whiteColor];
}
- (void)setUpAllChildViewController {
    HomeViewController *home = [[HomeViewController alloc] init];
    [self setUpOneChildViewController:home image:[UIImage imageNamed:@"TabBarHomeNormal"] selectedImage:[UIImage imageNamed:@"TabBarHomeSelected"] title:@"Home"];
    UserViewController *user = [[UserViewController alloc] init];
    [self setUpOneChildViewController:user image:[UIImage imageNamed:@"TabBarUserNormal"] selectedImage:[UIImage imageNamed:@"TabBarUserSelected"] title:@"User"];
}
- (void)setUpOneChildViewController:(UIViewController *)vc image:(UIImage *)image selectedImage:(UIImage *)selectedImage title:(NSString *)title {
    vc.title = title;
    vc.tabBarItem.image = image;
    vc.tabBarItem.selectedImage = selectedImage;
    BBNavigationController *nav = [[BBNavigationController alloc] initWithRootViewController:vc];
    [self addChildViewController:nav];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBUserGuider/BBUserGuiderController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "BBGestureBaseController.h"
NS_ASSUME_NONNULL_BEGIN

@interface BBUserGuiderController : BBGestureBaseController

@end

NS_ASSUME_NONNULL_END


================================================
FILE: BBGestureBack_Full_oc/Classes/Main/BBUserGuider/BBUserGuiderController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "BBUserGuiderController.h"
#import "AppDelegate.h"
#import "BBGestureBack.h"
@interface BBUserGuiderController ()<UIScrollViewDelegate>

@property (nonatomic,strong)UIScrollView  *userGuiderScrollView;
@property (nonatomic,strong)UIButton  *startBtn;
@property (nonatomic,weak)UIImageView   *userGuiderImgView;

@end

@implementation BBUserGuiderController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.view addSubview:self.userGuiderScrollView];
}

- (UIScrollView *)userGuiderScrollView{
    if (!_userGuiderScrollView) {
        _userGuiderScrollView=[[UIScrollView  alloc] initWithFrame:self.view.bounds];
        
        NSString *fileStr = [[NSBundle mainBundle] pathForResource:@"BBUserGuider" ofType:@"bundle"];
        NSBundle *imageBundle=[NSBundle bundleWithPath:fileStr];
        
        for (int i=0; i<kBBUserGuiderImgCount; i++) {
            UIImageView  *imageView=[[UIImageView alloc] initWithFrame:CGRectMake((self.view.frame.size.width)*i, 0,self.view.frame.size.width,self.view.frame.size.height)];
            NSString *path = [NSString string];
            path = [imageBundle pathForResource:[NSString stringWithFormat:@"BBUserGuider%1d@2x",i] ofType:@"png" inDirectory:@"GuiderImage"];
            imageView.image = [UIImage imageWithContentsOfFile:path];
            [_userGuiderScrollView  addSubview:imageView];
            if (i==kBBUserGuiderImgCount-1) {
                imageView.userInteractionEnabled = YES;
                self.userGuiderImgView=imageView;
                [imageView addSubview:self.startBtn];
            }
            
            _userGuiderScrollView.contentSize=CGSizeMake((kBBUserGuiderImgCount+1)*(self.view.frame.size.width), self.view.frame.size.height);
            _userGuiderScrollView.pagingEnabled=YES;
            _userGuiderScrollView.showsVerticalScrollIndicator=NO;
            _userGuiderScrollView.showsHorizontalScrollIndicator=NO;
            _userGuiderScrollView.bounces=NO;
            _userGuiderScrollView.delegate = self;
        }
    }
    
    return _userGuiderScrollView;
}

-(UIButton *)startBtn{
    if (!_startBtn) {
        _startBtn=[[UIButton  alloc] init];
        _startBtn.backgroundColor = [UIColor clearColor];
        _startBtn.frame = self.view.frame;
        [_startBtn  addTarget:self action:@selector(startClick) forControlEvents: UIControlEventTouchUpInside];
    }
    return  _startBtn;
    
}


- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if (scrollView.contentOffset.x > (kBBUserGuiderImgCount - 1)*(self.view.frame.size.width)) {
        [self startClick];
    }
}

//此处为 替换 rootViewController
- (void)startClick{
    [[AppDelegate shareAppDelegate] setupRootViewController:[[BBTabBarController alloc] init]];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
}
@end


================================================
FILE: BBGestureBack_Full_oc/Classes/Resource/BBUserGuider.bundle/Root.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>StringsTable</key>
	<string>Root</string>
	<key>PreferenceSpecifiers</key>
	<array>
		<dict>
			<key>Type</key>
			<string>PSGroupSpecifier</string>
			<key>Title</key>
			<string>Group</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSTextFieldSpecifier</string>
			<key>Title</key>
			<string>Name</string>
			<key>Key</key>
			<string>name_preference</string>
			<key>DefaultValue</key>
			<string></string>
			<key>IsSecure</key>
			<false/>
			<key>KeyboardType</key>
			<string>Alphabet</string>
			<key>AutocapitalizationType</key>
			<string>None</string>
			<key>AutocorrectionType</key>
			<string>No</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSToggleSwitchSpecifier</string>
			<key>Title</key>
			<string>Enabled</string>
			<key>Key</key>
			<string>enabled_preference</string>
			<key>DefaultValue</key>
			<true/>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSSliderSpecifier</string>
			<key>Key</key>
			<string>slider_preference</string>
			<key>DefaultValue</key>
			<real>0.5</real>
			<key>MinimumValue</key>
			<integer>0</integer>
			<key>MaximumValue</key>
			<integer>1</integer>
			<key>MinimumValueImage</key>
			<string></string>
			<key>MaximumValueImage</key>
			<string></string>
		</dict>
	</array>
	<key>ApplicationGroupContainerIdentifier</key>
	<string></string>
</dict>
</plist>


================================================
FILE: BBGestureBack_Full_oc/Classes/User/Index/UserViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>
#import "BBGestureBaseController.h"

@interface UserViewController : BBGestureBaseController

@end


================================================
FILE: BBGestureBack_Full_oc/Classes/User/Index/UserViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import "UserViewController.h"

@interface UserViewController ()

@end

@implementation UserViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
}


@end


================================================
FILE: BBGestureBack_Full_oc/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>$(DEVELOPMENT_LANGUAGE)</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: BBGestureBack_Full_oc/main.m
================================================
//
//  main.m
//  BBGestureBack
//
//  Created by user on 2018/3/17.
//  Copyright © 2018年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}


================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "83.5x83.5",
      "idiom" : "ipad",
      "filename" : "83.5@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "1024x1024",
      "idiom" : "ios-marketing",
      "filename" : "1024@1x.png",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/Navigation/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/Navigation/bb_navigation_back.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "bb_navigation_back@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "bb_navigation_back@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/TabBar/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Assets.xcassets/logo.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_Full_swift/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="wJ6-tn-oZ6"/>
                        <viewControllerLayoutGuide type="bottom" id="brw-ND-DR7"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="7fk-3g-lDI">
                                <rect key="frame" x="67" y="213.5" width="240" height="240"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="240" id="lbg-7s-TM8"/>
                                    <constraint firstAttribute="width" constant="240" id="opV-cn-Xl0"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您可以为我点个赞吗?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LMs-9Q-pEN">
                                <rect key="frame" x="16" y="473.5" width="343" height="21"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="21" id="IiF-NU-D1J"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="top" secondItem="7fk-3g-lDI" secondAttribute="bottom" constant="20" id="4pq-RP-mNf"/>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leadingMargin" id="CPs-4w-sCY"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="JdY-mR-UbN"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="etK-3r-Gum"/>
                            <constraint firstAttribute="trailingMargin" secondItem="LMs-9Q-pEN" secondAttribute="trailing" id="nVr-AX-uZf"/>
                        </constraints>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="32.5" y="416.5"/>
        </scene>
    </scenes>
    <resources>
        <image name="logo" width="200" height="200"/>
    </resources>
</document>


================================================
FILE: BBGestureBack_Full_swift/Classes/Home/Index/HomeViewController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

class HomeViewController: BBGestureBaseController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //iOS12.1 UINavigationController + UITabBarController( UITabBar 磨砂),在 系统的 popViewControllerAnimated 会遇到tabbar布局错乱的问题,所以需添加以下方法。
        //当然你也可以自己选择添加到底层的navigationController或 baseViewController中,进行处理。
        UITabBar.appearance().isTranslucent = false
        //---------------------------------------
        
        let btn = UIButton()
        btn.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
        
        btn.backgroundColor = UIColor.blue
        btn.setTitle("sysPush", for: UIControlState.normal)
        btn.addTarget(self, action: #selector(pushClick), for: UIControlEvents.touchUpInside)
        
        self.view.addSubview(btn)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    
    @objc func pushClick() {
        self.navigationController?.pushViewController(ViewController(), animated: true)
    }


}


================================================
FILE: BBGestureBack_Full_swift/Classes/Home/ViewController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

class ViewController: BBGestureBaseController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let popBtn = UIButton()
        popBtn.frame = CGRect(x: 100, y: 100, width: 150, height: 50)
        popBtn.backgroundColor = UIColor.red
        popBtn.setTitle("BBPop", for: UIControlState.normal)
        popBtn.addTarget(self, action: #selector(popClick), for: UIControlEvents.touchUpInside)
        self.view.addSubview(popBtn)
        
        let popToVCBtn = UIButton()
        popToVCBtn.frame = CGRect(x: 100, y: 200, width: 150, height: 50)
        
        popToVCBtn.backgroundColor = UIColor.red
        popToVCBtn.setTitle("BBPopToVC", for: UIControlState.normal)
        popToVCBtn.addTarget(self, action: #selector(popToClick), for: UIControlEvents.touchUpInside)
        self.view.addSubview(popToVCBtn)
        
        let popToRootBtn = UIButton()
        popToRootBtn.frame = CGRect(x: 100, y: 300, width: 150, height: 50)
        popToRootBtn.backgroundColor = UIColor.red
        popToRootBtn.setTitle("BBPopToRootVC", for: UIControlState.normal)
        popToRootBtn.addTarget(self, action: #selector(popToRootClick), for: UIControlEvents.touchUpInside)
        self.view.addSubview(popToRootBtn)
        
        let sysPopBtn = UIButton()
        sysPopBtn.frame = CGRect(x: 100, y: 400, width: 150, height: 50)
        sysPopBtn.backgroundColor = UIColor.blue
        sysPopBtn.setTitle("sysPop", for: UIControlState.normal)
        sysPopBtn.addTarget(self, action: #selector(sysPopClick), for: UIControlEvents.touchUpInside)
        self.view.addSubview(sysPopBtn)
    }

    @objc func popClick() {
        self.bb_popViewController();
    }
    
    @objc func popToClick() {
        self.bb_popToViewController(viewController: (self.navigationController?.viewControllers[0])!)
    }
    
    @objc func popToRootClick() {
        self.bb_popToRootViewController()
    }
    
    @objc func sysPopClick() {
        self.navigationController?.popViewController(animated: true)
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }


}



================================================
FILE: BBGestureBack_Full_swift/Classes/Main/AppDelegate.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var gestureBaseView: BBGestureBaseView?
    var tabBarViewController : BBTabBarController?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.backgroundColor = UIColor.white
        
        setupRootController();
        
        
        window?.makeKeyAndVisible()
        
        return true
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // 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.
        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // 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.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // 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.
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }


    private func setupRootController(){
        
        
        if !UserDefaults.standard.bool(forKey: kBBFirstLaunch) {
            UserDefaults.standard.set(true, forKey: kBBFirstLaunch)
            setupRootViewController(rootViewController: BBUserGuiderController())
        }else{
            setupRootViewController(rootViewController: BBTabBarController())
        }
        
    }
    
    public func setupRootViewController(rootViewController:UIViewController) {
        
        rootViewController.modalTransitionStyle = .flipHorizontal
        UIView.transition(with: window!, duration: 0.5, options: .transitionCrossDissolve, animations: {
            
            let oldState = UIView.areAnimationsEnabled
            UIView.setAnimationsEnabled(false)
            UIApplication.shared.keyWindow?.rootViewController = rootViewController
            UIView.setAnimationsEnabled(oldState)
        
        }, completion: { completed in
            
        })
        
        if gestureBaseView == nil {
            window?.rootViewController = rootViewController
            gestureBaseView = BBGestureBaseView.init(frame: CGRect(x: 0, y: 0, width: (window?.frame.size.width)!, height: (window?.frame.size.height)!))
            window?.insertSubview(gestureBaseView!, at: 0)
        }else{
            gestureBaseView!.removeObserver()
            window?.rootViewController = rootViewController
            gestureBaseView!.addObserver()
            window?.sendSubview(toBack: gestureBaseView!)
        }
        
        gestureBaseView?.isHidden = true;
        
    }
    
    
}



================================================
FILE: BBGestureBack_Full_swift/Classes/Main/BBGestureBack/BBGestureBackConst.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit


func BBColor(rgbValue: UInt) -> UIColor {
    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}
let bbScreenWidth = UIScreen.main.bounds.width
/// 屏幕的高度
let bbScreenHeight = UIScreen.main.bounds.height
let bb_IsIphone = (bbScreenHeight - 812 == 0 || bbScreenHeight - 896 == 0) ? true : false

//The ifrst user guider image (第一次引导图)
let kBBFirstLaunch:String = "BBFirstLaunch"
// Open iPhone X Style.(是否打开Phone X风格)
let kBBIsOpenIphoneXStyle:Bool = true
// The default is 40, iPhone X Style Corner。(默认为40,iPhone X 圆角弧度)
let kBBIphoneXStyleCorner:CGFloat! = 40
// The default is 3, User guider image count。(默认为3,用户引导图总页数)
let kBBUserGuiderImgCount:Int = 3
// Screen system to return gesture.(是否屏蔽系统返回手势)
let kBBIsCanleSystemPan:Bool = true
// The distance from the left can be automatically returned.(距离左边多少距离,可以自动返回)
let kBBDistanceToLeft:CGFloat! = 70.0
// BottomView Scaling.(底层缩放比例)
let kBBWindowToScale:CGFloat! = 0.95
// BottomView alpha.(底层透明度)
let kBBMaskingAlpha:CGFloat! = 0.9
// Automatic return speed.(自动返回速度)
let kBBGestureSpeed:TimeInterval! = 0.3
// Range of drag and drop.(拖拽的范围,大于此值才有效果)
let kBBDistanceToPan:CGFloat! = 10
// The default is 0, 0 for full screen return, and also for distance.(默认为0,0为全屏返回,也可指定距离)
let kBBDistanceToStart:CGFloat! = 100


================================================
FILE: BBGestureBack_Full_swift/Classes/Main/BBGestureBack/BBGestureBaseController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

enum BBPopType:Int{
    case viewController = 0
    case toViewController
    case toRootViewController
}

class BBGestureBaseController: UIViewController {

    /**
     用了自定义的手势返回,则系统的手势返回屏蔽
     不用自定义的手势返回,则系统的手势返回启用
     */
    var isEnablePanGesture : Bool
    var blankType: BBPopType
    
    lazy var bbBackBarItem : UIBarButtonItem = {
        
        let backBtn = UIButton(type: .custom)
        backBtn.setImage(UIImage(named: "bb_navigation_back"), for: .normal)
        backBtn.imageView?.contentMode = .center
        backBtn.addTarget(self, action: #selector(dismissSelf), for: .touchUpInside)
        backBtn.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
        backBtn.contentEdgeInsets = UIEdgeInsetsMake(0, -25, 0, 0)
        
        let bbBackBarItem = UIBarButtonItem(customView: backBtn)
        return bbBackBarItem
    }()
    
    @objc private func dismissSelf(){
        switch blankType {
        case .viewController:
            bb_popViewController()
            break
        case .toRootViewController:
            bb_popToRootViewController()
            break
        
        default:
            break
        }
    
    }
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        isEnablePanGesture = true
        blankType = .viewController;
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        
    }
    
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        if navigationController?.viewControllers.count ?? 0 > 1 {
            navigationItem.leftBarButtonItem = bbBackBarItem
        }
    }
    
    private func bb_basePopViewController(viewController: UIViewController?,popType: BBPopType) {
        
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let rootVC = appDelegate.window?.rootViewController
        let presentedVC = rootVC?.presentedViewController
        appDelegate.gestureBaseView?.isHidden = false;
        
        appDelegate.gestureBaseView?.maskedView?.backgroundColor = UIColor.init(hue: 0, saturation: 0, brightness: 0, alpha: kBBMaskingAlpha)
        appDelegate.gestureBaseView?.imgView?.transform = CGAffineTransform(scaleX: kBBWindowToScale, y: kBBWindowToScale);
        
        
        UIView.animate(withDuration: kBBGestureSpeed, animations: {
            rootVC?.view.transform = CGAffineTransform(translationX: (UIScreen.main.bounds.size.width), y: 0);
            presentedVC?.view.transform = CGAffineTransform(translationX: (UIScreen.main.bounds.size.width), y: 0);
        }) { (finished) in
            switch popType {
                case .viewController:
                    self.navigationController?.popViewController(animated: false)
                case .toViewController:
                    self.navigationController?.popToViewController(viewController!, animated: false)
                case .toRootViewController:
                    self.navigationController?.popToRootViewController(animated: false)
            }
            rootVC?.view.transform = CGAffineTransform.identity;
            presentedVC?.view.transform = CGAffineTransform.identity;
            appDelegate.gestureBaseView?.isHidden = true;
        }
        
    }
    
    
    
    func bb_popViewController() {
        
        self.bb_basePopViewController(viewController: nil, popType: BBPopType.viewController)
    }
    
    func bb_popToViewController(viewController: UIViewController) {
        
        self.bb_basePopViewController(viewController: viewController, popType: BBPopType.toViewController)
    }
    
    func bb_popToRootViewController() {
        
        self.bb_basePopViewController(viewController: nil, popType: BBPopType.toRootViewController)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}


class BBGestureBaseView: UIView {
    var imgView : UIImageView?
    var maskedView : UIView?
    var arrayImage : NSMutableArray?
    var rootControllerView: UIView?
    static var bbListenTabbarViewMove = Array("bbListenTabbarViewMove");
    
    override init(frame:CGRect){
        super.init(frame: frame)
        arrayImage = NSMutableArray.init()
        backgroundColor = UIColor.black
        imgView = UIImageView.init(frame: self.bounds)
        
        if (bb_IsIphone && kBBIsOpenIphoneXStyle) {
            imgView!.layer.masksToBounds = true;
            imgView!.layer.cornerRadius = kBBIphoneXStyleCorner;
        }
        
        maskedView = UIView.init(frame: self.bounds)
        maskedView?.backgroundColor = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.4)
        self.addSubview(imgView!)
        self.addSubview(maskedView!)
        
        addObserver()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if (context == &BBGestureBaseView.bbListenTabbarViewMove) {
            let value = change?[NSKeyValueChangeKey.newKey] as! NSValue
            let newTransform = value.cgAffineTransformValue
            showEffectChange(pt: CGPoint(x: newTransform.tx, y: 0))
        }
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
    }
    
    public func showEffectChange(pt:CGPoint) {
        if (pt.x > 0) {
            maskedView?.backgroundColor = UIColor.init(hue: 0, saturation: 0, brightness: 0, alpha: -pt.x / UIScreen.main.bounds.width * 0.4 + 0.4)
            self.imgView?.transform = CGAffineTransform(scaleX: kBBWindowToScale + (pt.x / UIScreen.main.bounds.width * (1 - kBBWindowToScale)), y: kBBWindowToScale + (pt.x / UIScreen.main.bounds.width * (1 - kBBWindowToScale)))
        }
    }
    
    public func restore() {
        if ((maskedView != nil) && (imgView != nil)) {
            maskedView?.backgroundColor = UIColor.init(hue: 0, saturation: 0, brightness: 0, alpha: 0.4)
            imgView?.transform = CGAffineTransform(scaleX: kBBWindowToScale, y: kBBWindowToScale)
        }
    }
    
    public func screenShot() {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        UIGraphicsBeginImageContextWithOptions(CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height), true, 0)
        appDelegate.window?.layer.render(in: UIGraphicsGetCurrentContext()!)
        let viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext()
        let imageRef = viewImage?.cgImage
        let sendImage = UIImage.init(cgImage: imageRef!)
        imgView?.image = sendImage
        imgView?.transform = CGAffineTransform(scaleX: kBBWindowToScale, y: kBBWindowToScale)
    }
    
    public func removeObserver(){
        
        rootControllerView?.removeObserver(self, forKeyPath: "transform", context: &BBGestureBaseView.bbListenTabbarViewMove)
    }
    public func addObserver(){
        rootControllerView = UIApplication.shared.delegate?.window??.rootViewController?.view
        rootControllerView?.addObserver(self, forKeyPath: "transform", options: NSKeyValueObservingOptions.new, context: &BBGestureBaseView.bbListenTabbarViewMove)
    }
    
    deinit {
        removeObserver()
    }
}


================================================
FILE: BBGestureBack_Full_swift/Classes/Main/BBNavigation/BBNavigationController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

class BBNavigationController: UINavigationController,UIGestureRecognizerDelegate,UINavigationControllerDelegate{

    var arrayScreenshot : NSMutableArray!
    var panGesture : UIPanGestureRecognizer?
    var webURL : String = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.interactivePopGestureRecognizer?.isEnabled = !kBBIsCanleSystemPan
        
        arrayScreenshot = NSMutableArray.init()
        panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
        view.addGestureRecognizer(panGesture!)
        panGesture?.delegate = self
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        
        if (gestureRecognizer.view == self.view && gestureRecognizer.location(in: view).x < (kBBDistanceToStart == 0 ? UIScreen.main.bounds.width : kBBDistanceToStart)) {
            let topView = topViewController as! BBGestureBaseController
            if (!topView.isEnablePanGesture) {
                return false;
            } else {
                let gesture = gestureRecognizer as! UIPanGestureRecognizer
                let translate = gesture.translation(in :view)
                let possible = translate.x != 0 && fabs(translate.y) == 0;
                
                if (possible){
                    return true
                }else {
                    return false
                }
            }
        }
        return false
    }
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        if otherGestureRecognizer.isKind(of: NSClassFromString("UIScrollViewPanGestureRecognizer")!) || otherGestureRecognizer.isKind(of: NSClassFromString("UIPanGestureRecognizer")!) || otherGestureRecognizer.isKind(of: NSClassFromString("UIScrollViewPagingSwipeGestureRecognizer")!) {
            
            let aView = otherGestureRecognizer.view
            if aView!.isKind(of: UIScrollView.self) {
                let sv = aView as! UIScrollView
                if sv.contentOffset.x == 0 {
                    
                    if otherGestureRecognizer.isKind(of: NSClassFromString("UIScrollViewPanGestureRecognizer")!) && otherGestureRecognizer.state != .began {
                        return false
                    }
                    
                    return true
                    
                }
            }
            
            return false
        }
        return true
    }
    
    @objc func handlePanGesture(_ panGesture : UIPanGestureRecognizer) {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let rootVC = appDelegate.window?.rootViewController
        let presentedVC = rootVC?.presentedViewController
        
        
        
        if (self.viewControllers.count == 1) {
            return
        }
        if (panGesture.state == UIGestureRecognizerState.began) {
            
            if (bb_IsIphone && kBBIsOpenIphoneXStyle) {
                rootVC?.view.layer.masksToBounds = true;
                rootVC?.view.layer.cornerRadius = kBBIphoneXStyleCorner;
                presentedVC?.view.layer.masksToBounds = true;
                presentedVC?.view.layer.cornerRadius = kBBIphoneXStyleCorner;
            }
            
            appDelegate.gestureBaseView?.isHidden = false;
        }
        else if (panGesture.state == UIGestureRecognizerState.changed) {
            let point_inView = panGesture.translation(in: view)
            if (point_inView.x >= 10) {
                rootVC?.view.transform = CGAffineTransform(translationX: point_inView.x - 10, y: 0)
                presentedVC?.view.transform = CGAffineTransform(translationX: point_inView.x - 10, y: 0)
            }
        }
        else if (panGesture.state == UIGestureRecognizerState.ended) {
            
            let point_inView = panGesture.translation(in: view)
            if (point_inView.x >= kBBDistanceToLeft) {
                UIView.animate(withDuration: 0.3, animations: {
                    rootVC?.view.transform = CGAffineTransform(translationX: UIScreen.main.bounds.size.width, y: 0)
                    presentedVC?.view.transform = CGAffineTransform(translationX: UIScreen.main.bounds.size.width, y: 0)
                }, completion: { (true) in
                    self.popViewController(animated: false)
                    rootVC?.view.transform = CGAffineTransform.identity
                    presentedVC?.view.transform = CGAffineTransform.identity
                    appDelegate.gestureBaseView?.isHidden = true
                })
            } else {
                UIView.animate(withDuration: 0.3, animations: {
                    rootVC?.view.transform = CGAffineTransform.identity
                    presentedVC?.view.transform = CGAffineTransform.identity
                }, completion: { (true) in
                    
                    if (bb_IsIphone && kBBIsOpenIphoneXStyle) {
                        rootVC?.view.layer.masksToBounds = false;
                        rootVC?.view.layer.cornerRadius = 0;
                        presentedVC?.view.layer.masksToBounds = false;
                        presentedVC?.view.layer.cornerRadius = 0;
                    }
                    appDelegate.gestureBaseView?.isHidden = true
                })
            }
        }
        
    }
    
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        if (viewControllers.count == 0) {
            return super.pushViewController(viewController, animated: animated)
        }else if (viewControllers.count>=1) {
            viewController.hidesBottomBarWhenPushed = true//隐藏二级页面的tabbar
        }
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        UIGraphicsBeginImageContextWithOptions(CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height), true, 0);
        appDelegate.window?.layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        arrayScreenshot.add(image!)
        appDelegate.gestureBaseView?.imgView?.image = image
        super.pushViewController(viewController, animated: animated)
    }
    
    @discardableResult
    override func popViewController(animated: Bool) -> UIViewController? {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        arrayScreenshot.removeLastObject()
        let image = arrayScreenshot.lastObject
        if (image != nil) {
            appDelegate.gestureBaseView?.imgView?.image = image as! UIImage?;
        }
        return super.popViewController(animated: animated)
    }
    
    override func popToRootViewController(animated: Bool) -> [UIViewController]? {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        if (arrayScreenshot.count > 2) {
            arrayScreenshot.removeObjects(in: NSMakeRange(1, arrayScreenshot.count - 1))
        }
        let image = arrayScreenshot.lastObject
        if (image != nil) {
            appDelegate.gestureBaseView?.imgView?.image = image as! UIImage?
        }
        return super.popToRootViewController(animated: animated)
    }
    
    @discardableResult
    override func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]? {
        let arr = super.popToViewController(viewController, animated: animated)
        if (self.arrayScreenshot.count > (arr?.count)!) {
            for _ in 0  ..< (arr?.count)! {
                arrayScreenshot.removeLastObject()
            }
        }
        return arr;
    }
}


================================================
FILE: BBGestureBack_Full_swift/Classes/Main/BBTabBar/BBTabBarController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//
import UIKit

class BBTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        setUpAllChildViewController()
        
        //iOS 闪动问题,明白了一看就懂
        UITabBar.appearance().isTranslucent = false
        UINavigationBar.appearance().isTranslucent = false
        self.tabBar.tintColor = UIColor.blue
        self.tabBar.barTintColor = UIColor .white
    }

    func setUpAllChildViewController() {
        setUpOneChildViewController(vc: HomeViewController(), image: UIImage(named:  "TabBarHomeNormal")!, selectedImage: UIImage(named: "TabBarHomeSelected")!, title: "Home")
        setUpOneChildViewController(vc: UserViewController(), image: UIImage(named:  "TabBarUserNormal")!, selectedImage: UIImage(named: "TabBarUserSelected")!, title: "User")
    }
    
    func setUpOneChildViewController(vc:UIViewController,image:UIImage,selectedImage:UIImage,title:String) {

        vc.title = title
        vc.tabBarItem.image = image
        vc.tabBarItem.selectedImage = image
        let navVC = BBNavigationController(rootViewController: vc)
        addChildViewController(navVC)
    }

    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    

}


================================================
FILE: BBGestureBack_Full_swift/Classes/Main/BBUserGuider/BBUserGuiderController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

class BBUserGuiderController: BBGestureBaseController {

    lazy var userGuiderScrollView: UIScrollView = {
        
        let userGuiderScrollView = UIScrollView(frame: view.bounds)
        let fileStr = Bundle.main.path(forResource: "BBUserGuider", ofType: "bundle")
        let imageBundle = Bundle(path: fileStr!)
        
        for i in 0..<kBBUserGuiderImgCount {
            let imageView: UIImageView = UIImageView.init(frame: CGRect(x: (view.frame.size.width) * CGFloat(i) ,y: 0, width: view.frame.size.width, height: view.frame.size.height))
            let path = imageBundle?.path(forResource: "BBUserGuider\(i)@2x", ofType: "png", inDirectory: "GuiderImage")
            imageView.image = UIImage.init(contentsOfFile: path!)
            userGuiderScrollView.addSubview(imageView)
            if i == kBBUserGuiderImgCount - 1 {
                imageView.isUserInteractionEnabled = true
                userGuiderImgView = imageView
                imageView.addSubview(startBtn)
            }
            
            userGuiderScrollView.contentSize = CGSize(width: CGFloat(kBBUserGuiderImgCount+1)*(view.frame.size.width), height: view.frame.size.height)
            userGuiderScrollView.isPagingEnabled = true
            userGuiderScrollView.showsVerticalScrollIndicator = false
            userGuiderScrollView.showsHorizontalScrollIndicator = false
            userGuiderScrollView.bounces = false
            userGuiderScrollView.delegate = self
        }
        return userGuiderScrollView
    }()
    
    lazy var startBtn: UIButton = {
        let startBtn = UIButton()
        startBtn.backgroundColor = UIColor.clear
        startBtn.frame = view.frame
        startBtn.addTarget(self, action: #selector(startClick), for: .touchUpInside)
        return startBtn
    }()
    var userGuiderImgView: UIImageView?
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(userGuiderScrollView)
        
    }
    
    @objc func startClick() {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.setupRootViewController(rootViewController: BBTabBarController())
    }
}

extension BBUserGuiderController : UIScrollViewDelegate {

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView.contentOffset.x > CGFloat(kBBUserGuiderImgCount - 1)*(view.frame.size.width) {
            startClick()
        }
    }
}


================================================
FILE: BBGestureBack_Full_swift/Classes/Resource/BBUserGuider.bundle/Root.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>StringsTable</key>
	<string>Root</string>
	<key>PreferenceSpecifiers</key>
	<array>
		<dict>
			<key>Type</key>
			<string>PSGroupSpecifier</string>
			<key>Title</key>
			<string>Group</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSTextFieldSpecifier</string>
			<key>Title</key>
			<string>Name</string>
			<key>Key</key>
			<string>name_preference</string>
			<key>DefaultValue</key>
			<string></string>
			<key>IsSecure</key>
			<false/>
			<key>KeyboardType</key>
			<string>Alphabet</string>
			<key>AutocapitalizationType</key>
			<string>None</string>
			<key>AutocorrectionType</key>
			<string>No</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSToggleSwitchSpecifier</string>
			<key>Title</key>
			<string>Enabled</string>
			<key>Key</key>
			<string>enabled_preference</string>
			<key>DefaultValue</key>
			<true/>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSSliderSpecifier</string>
			<key>Key</key>
			<string>slider_preference</string>
			<key>DefaultValue</key>
			<real>0.5</real>
			<key>MinimumValue</key>
			<integer>0</integer>
			<key>MaximumValue</key>
			<integer>1</integer>
			<key>MinimumValueImage</key>
			<string></string>
			<key>MaximumValueImage</key>
			<string></string>
		</dict>
	</array>
	<key>ApplicationGroupContainerIdentifier</key>
	<string></string>
</dict>
</plist>


================================================
FILE: BBGestureBack_Full_swift/Classes/User/Index/UserViewController.swift
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

import UIKit

class UserViewController: BBGestureBaseController {

    override func viewDidLoad() {
        super.viewDidLoad()

        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    


}


================================================
FILE: BBGestureBack_Full_swift/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>$(DEVELOPMENT_LANGUAGE)</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "83.5x83.5",
      "idiom" : "ipad",
      "filename" : "83.5@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "1024x1024",
      "idiom" : "ios-marketing",
      "filename" : "1024@1x.png",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  },
  "properties" : {
    "template-rendering-intent" : "original"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  },
  "properties" : {
    "template-rendering-intent" : "original"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Assets.xcassets/logo.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_oc/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="wJ6-tn-oZ6"/>
                        <viewControllerLayoutGuide type="bottom" id="brw-ND-DR7"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="7fk-3g-lDI">
                                <rect key="frame" x="67" y="213.5" width="240" height="240"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="240" id="lbg-7s-TM8"/>
                                    <constraint firstAttribute="width" constant="240" id="opV-cn-Xl0"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您可以为我点个赞吗?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LMs-9Q-pEN">
                                <rect key="frame" x="16" y="473.5" width="343" height="21"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="21" id="IiF-NU-D1J"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="top" secondItem="7fk-3g-lDI" secondAttribute="bottom" constant="20" id="4pq-RP-mNf"/>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leadingMargin" id="CPs-4w-sCY"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="JdY-mR-UbN"/>
                            <constraint firstItem="7fk-3g-lDI" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="etK-3r-Gum"/>
                            <constraint firstAttribute="trailingMargin" secondItem="LMs-9Q-pEN" secondAttribute="trailing" id="nVr-AX-uZf"/>
                        </constraints>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="32.5" y="416.5"/>
        </scene>
    </scenes>
    <resources>
        <image name="logo" width="200" height="200"/>
    </resources>
</document>


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Home/Index/HomeViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface HomeViewController : UIViewController

@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Home/Index/HomeViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "HomeViewController.h"
#import "ViewController.h"
@interface HomeViewController ()

@end

@implementation HomeViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    UIButton *sysBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    sysBtn.backgroundColor = [UIColor blueColor];
    [sysBtn setTitle:@"sysPush" forState:UIControlStateNormal];
    [sysBtn addTarget:self action:@selector(sysPushClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:sysBtn];
}


- (void)sysPushClick {
    [self.navigationController pushViewController:[ViewController new] animated:YES];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Home/ViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController


@end



================================================
FILE: BBGestureBack_SysFull_oc/Classes/Home/ViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //iOS12.1 UINavigationController + UITabBarController( UITabBar 磨砂),在 系统的 popViewControllerAnimated 会遇到tabbar布局错乱的问题,所以需添加以下方法。
    //当然你也可以自己选择添加到底层的navigationController中,进行处理。
    [[UITabBar appearance]setTranslucent:NO];
    //---------------------------------------
    
    self.view.backgroundColor = [UIColor whiteColor];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    
}


@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/AppDelegate.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end



================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/AppDelegate.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "AppDelegate.h"
#import "BBTabBarController.h"
#import "BBNavigationController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    self.window.rootViewController = [[BBTabBarController alloc] init];;
    
    [self.window makeKeyAndVisible];
    
    return YES;
}


- (void)applicationWillResignActive:(UIApplication *)application {
    // 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.
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}


- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 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.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
    // 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.
}


- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/BBNavigation/BBNavigationController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BBNavigationController : UINavigationController

- (void)addFullScreenPopBlackListItem:(UIViewController *)viewController;
- (void)removeFromFullScreenPopBlackList:(UIViewController *)viewController;

@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/BBNavigation/BBNavigationController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "BBNavigationController.h"

@interface BBNavigationController () <UIGestureRecognizerDelegate>

@property(nonatomic, strong) NSMutableArray *blackList;

@end

@implementation BBNavigationController

#pragma mark - Lazy load
- (NSMutableArray *)blackList {
    if (!_blackList) {
        _blackList = [NSMutableArray array];
    }
    return _blackList;
}

#pragma mark - Public
- (void)addFullScreenPopBlackListItem:(UIViewController *)viewController {
    if (!viewController) {
        return ;
    }
    [self.blackList addObject:viewController];
}

- (void)removeFromFullScreenPopBlackList:(UIViewController *)viewController {
    for (UIViewController *vc in self.blackList) {
        if (vc == viewController) {
            [self.blackList removeObject:vc];
        }
    }
}

#pragma mark - Life cycle
- (void)viewDidLoad {
    [super viewDidLoad];

    id target = self.interactivePopGestureRecognizer.delegate;

    SEL handler = NSSelectorFromString(@"handleNavigationTransition:");

    UIView *targetView = self.interactivePopGestureRecognizer.view;
    

    UIPanGestureRecognizer * fullScreenGes = [[UIPanGestureRecognizer alloc]initWithTarget:target action:handler];
    fullScreenGes.delegate = self;
    [targetView addGestureRecognizer:fullScreenGes];

    [self.interactivePopGestureRecognizer setEnabled:NO];
}

#pragma mark - UIGestureRecognizerDelegate

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
   
    for (UIViewController *viewController in self.blackList) {
        if ([self topViewController] == viewController) {
            return NO;
        }
    }
    
    if ([[self valueForKey:@"_isTransitioning"] boolValue]) {
        return NO;
    }
    
    
    CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view];
    if (translation.x <= 0) {
        return NO;
    }
    
    return self.childViewControllers.count == 1 ? NO : YES;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/BBTabBar/BBTabBarController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//


#import <UIKit/UIKit.h>

@interface BBTabBarController : UITabBarController
 
@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/Main/BBTabBar/BBTabBarController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.



#import "BBTabBarController.h"

#import "BBNavigationController.h"

#import "HomeViewController.h"
#import "UserViewController.h"

@interface BBTabBarController ()

@end

@implementation BBTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUpAllChildViewController];
}
- (void)setUpAllChildViewController {
    HomeViewController *home = [[HomeViewController alloc] init];
    [self setUpOneChildViewController:home image:[UIImage imageNamed:@"TabBarHomeNormal"] selectedImage:[UIImage imageNamed:@"TabBarHomeSelected"] title:@"Home"];
    UserViewController *user = [[UserViewController alloc] init];
    [self setUpOneChildViewController:user image:[UIImage imageNamed:@"TabBarUserNormal"] selectedImage:[UIImage imageNamed:@"TabBarUserSelected"] title:@"User"];
}
- (void)setUpOneChildViewController:(UIViewController *)vc image:(UIImage *)image selectedImage:(UIImage *)selectedImage title:(NSString *)title {
    vc.title = title;
    vc.tabBarItem.image = image;
    vc.tabBarItem.selectedImage = selectedImage;
    BBNavigationController *nav = [[BBNavigationController alloc] initWithRootViewController:vc];
    [self addChildViewController:nav];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/User/Index/UserViewController.h
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UserViewController : UIViewController

@end


================================================
FILE: BBGestureBack_SysFull_oc/Classes/User/Index/UserViewController.m
================================================
//  希望您的举手之劳,能为我点颗赞,谢谢~
//  代码地址: https://github.com/Bonway/BBGestureBack
//  BBGestureBack
//  Created by Bonway on 2016/3/17.
//  Copyright © 2016年 Bonway. All rights reserved.
//

#import "UserViewController.h"

@interface UserViewController ()

@end

@implementation UserViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


================================================
FILE: BBGestureBack_SysFull_oc/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>$(DEVELOPMENT_LANGUAGE)</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: BBGestureBack_SysFull_oc/main.m
================================================
//
//  main.m
//  BBGestureBack_SysFull_oc
//
//  Created by Bonway on 2018/5/23.
//  Copyright © 2018年 Bonway. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}


================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "20@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "29@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@2x-1.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "40@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "60@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "76@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "83.5x83.5",
      "idiom" : "ipad",
      "filename" : "83.5@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "1024x1024",
      "idiom" : "ios-marketing",
      "filename" : "1024@1x.png",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarHomeSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserNormal@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "TabBarUserSelected@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Assets.xcassets/logo.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "logo@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: BBGestureBack_SysFull_swift/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="wJ6-tn-oZ6"/>
                        <viewControllerLayoutGuide type="bottom" id="brw-ND-DR7"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="7fk-3g-lDI">
                                <rect key="frame" x="67" y="213.5" width="240" height="240"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="240" id="lbg-7s-TM8"/>
                                    <constraint firstAttribute="width" constant="240" id="opV-cn-Xl0"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您可以为我点个赞吗?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LMs-9Q-pEN">
                                <rect key="frame" x="16" y="473.5" width="343" height="21"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="21" id="IiF-NU-D1J"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="LMs-9Q-pEN" firstAttribute="top" secondItem="7fk-3g-lDI" secondAttribute="bottom" constant="20" id="4pq-RP-mNf"/>
                            <constr
Download .txt
gitextract_fgu9pioj/

├── BBGestureBack.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   ├── xcshareddata/
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── xcuserdata/
│   │       ├── Bonway.xcuserdatad/
│   │       │   └── UserInterfaceState.xcuserstate
│   │       └── user.xcuserdatad/
│   │           └── UserInterfaceState.xcuserstate
│   └── xcuserdata/
│       ├── Bonway.xcuserdatad/
│       │   ├── xcdebugger/
│       │   │   └── Breakpoints_v2.xcbkptlist
│       │   └── xcschemes/
│       │       ├── BBGestureBack_Full_oc.xcscheme
│       │       ├── BBGestureBack_Full_swift.xcscheme
│       │       ├── BBGestureBack_SysFull_oc.xcscheme
│       │       └── xcschememanagement.plist
│       └── user.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               └── xcschememanagement.plist
├── BBGestureBack_Full_oc/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Navigation/
│   │   │   ├── Contents.json
│   │   │   └── bb_navigation_back.imageset/
│   │   │       └── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   ├── HomeViewController.h
│   │   │   │   └── HomeViewController.m
│   │   │   ├── ViewController.h
│   │   │   └── ViewController.m
│   │   ├── Main/
│   │   │   ├── AppDelegate.h
│   │   │   ├── AppDelegate.m
│   │   │   ├── BBGestureBack/
│   │   │   │   ├── BBGestureBack.h
│   │   │   │   ├── BBGestureBackConst.h
│   │   │   │   ├── BBGestureBackConst.m
│   │   │   │   ├── BBGestureBaseController.h
│   │   │   │   └── BBGestureBaseController.m
│   │   │   ├── BBNavigation/
│   │   │   │   ├── BBNavigationController.h
│   │   │   │   └── BBNavigationController.m
│   │   │   ├── BBTabBar/
│   │   │   │   ├── BBTabBarController.h
│   │   │   │   └── BBTabBarController.m
│   │   │   └── BBUserGuider/
│   │   │       ├── BBUserGuiderController.h
│   │   │       └── BBUserGuiderController.m
│   │   ├── Resource/
│   │   │   └── BBUserGuider.bundle/
│   │   │       ├── Root.plist
│   │   │       └── en.lproj/
│   │   │           └── Root.strings
│   │   └── User/
│   │       └── Index/
│   │           ├── UserViewController.h
│   │           └── UserViewController.m
│   ├── Info.plist
│   └── main.m
├── BBGestureBack_Full_swift/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Navigation/
│   │   │   ├── Contents.json
│   │   │   └── bb_navigation_back.imageset/
│   │   │       └── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   └── HomeViewController.swift
│   │   │   └── ViewController.swift
│   │   ├── Main/
│   │   │   ├── AppDelegate.swift
│   │   │   ├── BBGestureBack/
│   │   │   │   ├── BBGestureBackConst.swift
│   │   │   │   └── BBGestureBaseController.swift
│   │   │   ├── BBNavigation/
│   │   │   │   └── BBNavigationController.swift
│   │   │   ├── BBTabBar/
│   │   │   │   └── BBTabBarController.swift
│   │   │   └── BBUserGuider/
│   │   │       └── BBUserGuiderController.swift
│   │   ├── Resource/
│   │   │   └── BBUserGuider.bundle/
│   │   │       ├── Root.plist
│   │   │       └── en.lproj/
│   │   │           └── Root.strings
│   │   └── User/
│   │       └── Index/
│   │           └── UserViewController.swift
│   └── Info.plist
├── BBGestureBack_SysFull_oc/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   ├── HomeViewController.h
│   │   │   │   └── HomeViewController.m
│   │   │   ├── ViewController.h
│   │   │   └── ViewController.m
│   │   ├── Main/
│   │   │   ├── AppDelegate.h
│   │   │   ├── AppDelegate.m
│   │   │   ├── BBNavigation/
│   │   │   │   ├── BBNavigationController.h
│   │   │   │   └── BBNavigationController.m
│   │   │   └── BBTabBar/
│   │   │       ├── BBTabBarController.h
│   │   │       └── BBTabBarController.m
│   │   └── User/
│   │       └── Index/
│   │           ├── UserViewController.h
│   │           └── UserViewController.m
│   ├── Info.plist
│   └── main.m
├── BBGestureBack_SysFull_swift/
│   ├── Assets.xcassets/
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── TabBar/
│   │   │   ├── Contents.json
│   │   │   ├── TabBarHomeNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarHomeSelected.imageset/
│   │   │   │   └── Contents.json
│   │   │   ├── TabBarUserNormal.imageset/
│   │   │   │   └── Contents.json
│   │   │   └── TabBarUserSelected.imageset/
│   │   │       └── Contents.json
│   │   └── logo.imageset/
│   │       └── Contents.json
│   ├── Base.lproj/
│   │   └── LaunchScreen.storyboard
│   ├── Classes/
│   │   ├── Home/
│   │   │   ├── Index/
│   │   │   │   └── HomeViewController.swift
│   │   │   └── ViewController.swift
│   │   ├── Main/
│   │   │   ├── AppDelegate.swift
│   │   │   ├── BBNavigation/
│   │   │   │   └── BBNavigationController.swift
│   │   │   └── BBTabBar/
│   │   │       └── BBTabBarController.swift
│   │   └── User/
│   │       └── Index/
│   │           └── UserViewController.swift
│   └── Info.plist
└── README.md
Download .txt
SYMBOL INDEX (1 symbols across 1 files)

FILE: BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBaseController.h
  type BBPopType (line 10) | typedef enum _BBPopType {
Condensed preview — 109 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (226K chars).
[
  {
    "path": "BBGestureBack.xcodeproj/project.pbxproj",
    "chars": 51724,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 48;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "BBGestureBack.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 158,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:BBGestureBack.x"
  },
  {
    "path": "BBGestureBack.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "chars": 140,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   uuid = \"D758E668-F67A-42BE-8ACE-58488819D3D8\"\n   type = \"1\"\n   version"
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_Full_oc.xcscheme",
    "chars": 4643,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0920\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_Full_swift.xcscheme",
    "chars": 3463,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0930\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/BBGestureBack_SysFull_oc.xcscheme",
    "chars": 3463,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0930\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/Bonway.xcuserdatad/xcschemes/xcschememanagement.plist",
    "chars": 1246,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "chars": 91,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   type = \"1\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "BBGestureBack.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist",
    "chars": 336,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2176,
    "preview": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"20@2x-1.png\",\n      \"scale\""
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/Navigation/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/Navigation/bb_navigation_back.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/TabBar/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json",
    "chars": 431,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json",
    "chars": 431,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Assets.xcassets/logo.imageset/Contents.json",
    "chars": 338,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_oc/Base.lproj/LaunchScreen.storyboard",
    "chars": 4439,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Home/Index/HomeViewController.h",
    "chars": 306,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Home/Index/HomeViewController.m",
    "chars": 914,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Home/ViewController.h",
    "chars": 304,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Home/ViewController.m",
    "chars": 2622,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/AppDelegate.h",
    "chars": 535,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/AppDelegate.m",
    "chars": 3898,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBack.h",
    "chars": 310,
    "preview": "//\n//  BBGestureBack.h\n//  BBGestureBack\n//\n//  Created by Bonway on 2019/4/3.\n//  Copyright © 2019 Bonway. All rights r"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBackConst.h",
    "chars": 1996,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBackConst.m",
    "chars": 664,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBaseController.h",
    "chars": 1014,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBGestureBack/BBGestureBaseController.m",
    "chars": 8028,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBNavigation/BBNavigationController.h",
    "chars": 402,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBNavigation/BBNavigationController.m",
    "chars": 8246,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBTabBar/BBTabBarController.h",
    "chars": 267,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBTabBar/BBTabBarController.m",
    "chars": 1675,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBUserGuider/BBUserGuiderController.h",
    "chars": 357,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Main/BBUserGuider/BBUserGuiderController.m",
    "chars": 3031,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/Resource/BBUserGuider.bundle/Root.plist",
    "chars": 1523,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/User/Index/UserViewController.h",
    "chars": 307,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Classes/User/Index/UserViewController.m",
    "chars": 432,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_oc/Info.plist",
    "chars": 1353,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_Full_oc/main.m",
    "chars": 331,
    "preview": "//\n//  main.m\n//  BBGestureBack\n//\n//  Created by user on 2018/3/17.\n//  Copyright © 2018年 Bonway. All rights reserved.\n"
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2176,
    "preview": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"20@2x-1.png\",\n      \"scale\""
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/Navigation/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/Navigation/bb_navigation_back.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/TabBar/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json",
    "chars": 362,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json",
    "chars": 362,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Assets.xcassets/logo.imageset/Contents.json",
    "chars": 338,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_Full_swift/Base.lproj/LaunchScreen.storyboard",
    "chars": 4439,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Home/Index/HomeViewController.swift",
    "chars": 1229,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Home/ViewController.swift",
    "chars": 2355,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/AppDelegate.swift",
    "chars": 4056,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/BBGestureBack/BBGestureBackConst.swift",
    "chars": 1637,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/BBGestureBack/BBGestureBaseController.swift",
    "chars": 7721,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/BBNavigation/BBNavigationController.swift",
    "chars": 8077,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/BBTabBar/BBTabBarController.swift",
    "chars": 1438,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Main/BBUserGuider/BBUserGuiderController.swift",
    "chars": 2642,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/Resource/BBUserGuider.bundle/Root.plist",
    "chars": 1523,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_Full_swift/Classes/User/Index/UserViewController.swift",
    "chars": 439,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_Full_swift/Info.plist",
    "chars": 1353,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2176,
    "preview": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"20@2x-1.png\",\n      \"scale\""
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json",
    "chars": 431,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json",
    "chars": 431,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_oc/Assets.xcassets/logo.imageset/Contents.json",
    "chars": 338,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_oc/Base.lproj/LaunchScreen.storyboard",
    "chars": 4439,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Home/Index/HomeViewController.h",
    "chars": 263,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Home/Index/HomeViewController.m",
    "chars": 1017,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Home/ViewController.h",
    "chars": 261,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Home/ViewController.m",
    "chars": 753,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/AppDelegate.h",
    "chars": 326,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/AppDelegate.m",
    "chars": 2357,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/BBNavigation/BBNavigationController.h",
    "chars": 425,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/BBNavigation/BBNavigationController.m",
    "chars": 2263,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/BBTabBar/BBTabBarController.h",
    "chars": 267,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/Main/BBTabBar/BBTabBarController.m",
    "chars": 1445,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/User/Index/UserViewController.h",
    "chars": 263,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Classes/User/Index/UserViewController.m",
    "chars": 876,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  代码地址: https://github.com/Bonway/BBGestureBack\n//  BBGestureBack\n//  Created by Bonway on 201"
  },
  {
    "path": "BBGestureBack_SysFull_oc/Info.plist",
    "chars": 1353,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "BBGestureBack_SysFull_oc/main.m",
    "chars": 344,
    "preview": "//\n//  main.m\n//  BBGestureBack_SysFull_oc\n//\n//  Created by Bonway on 2018/5/23.\n//  Copyright © 2018年 Bonway. All righ"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2176,
    "preview": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"20@2x-1.png\",\n      \"scale\""
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarHomeNormal.imageset/Contents.json",
    "chars": 362,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarHomeSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarUserNormal.imageset/Contents.json",
    "chars": 362,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/TabBar/TabBarUserSelected.imageset/Contents.json",
    "chars": 366,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Assets.xcassets/logo.imageset/Contents.json",
    "chars": 338,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n     "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Base.lproj/LaunchScreen.storyboard",
    "chars": 4439,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/Home/Index/HomeViewController.swift",
    "chars": 1292,
    "preview": "//\n//  HomeViewController.swift\n//  BBGestureBack_SysFull_swift\n//\n//  Created by Bonway on 2018/5/29.\n//  Copyright © 2"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/Home/ViewController.swift",
    "chars": 552,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  I hope you can star for me. Thank you.\n//  代码地址: https://github.com/Bonway/BBGestureBack\n// "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/Main/AppDelegate.swift",
    "chars": 2402,
    "preview": "//  希望您的举手之劳,能为我点颗赞,谢谢~\n//  I hope you can star for me. Thank you.\n//  代码地址: https://github.com/Bonway/BBGestureBack\n// "
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/Main/BBNavigation/BBNavigationController.swift",
    "chars": 1203,
    "preview": "//\n//  BBNavigationController.swift\n//  BBGestureBack_SysFull_swift\n//\n//  Created by Bonway on 2018/5/29.\n//  Copyright"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/Main/BBTabBar/BBTabBarController.swift",
    "chars": 1170,
    "preview": "//\n//  BBTabBarController.swift\n//  BBGestureBack_SysFull_swift\n//\n//  Created by Bonway on 2018/5/29.\n//  Copyright © 2"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Classes/User/Index/UserViewController.swift",
    "chars": 507,
    "preview": "//\n//  UserViewController.swift\n//  BBGestureBack_SysFull_swift\n//\n//  Created by Bonway on 2018/5/29.\n//  Copyright © 2"
  },
  {
    "path": "BBGestureBack_SysFull_swift/Info.plist",
    "chars": 1353,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "README.md",
    "chars": 4952,
    "preview": "# BBGestureBack\n\nFull screen return gesture(全屏手势返回 滑动返回 pop 动画效果)\n在此感谢大家提的建议!!!\n\n[如果你在天朝,请点击这里,速度会很快哦~](https://blog.csd"
  }
]

// ... and 4 more files (download for full content)

About this extraction

This page contains the full source code of the Bonway/BBGestureBack GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 109 files (192.8 KB), approximately 61.9k tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!