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
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
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.