├── doctor ├── LJTabbarController │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── tabbar │ │ │ ├── Contents.json │ │ │ ├── tab_normal │ │ │ │ ├── Contents.json │ │ │ │ ├── me_normal.imageset │ │ │ │ │ ├── me_normal@2x.png │ │ │ │ │ ├── me_normal@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── home_normal.imageset │ │ │ │ │ ├── home_normal@2x.png │ │ │ │ │ ├── home_normal@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── doctor_normal.imageset │ │ │ │ │ ├── doctor_normal@2x.png │ │ │ │ │ ├── doctor_normal@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── share_normal.imageset │ │ │ │ │ ├── share_normal@2x.png │ │ │ │ │ ├── share_normal@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── shendeng_normal.imageset │ │ │ │ │ ├── shendeng_normal@2x.png │ │ │ │ │ ├── shendeng_normal@3x.png │ │ │ │ │ └── Contents.json │ │ │ ├── tab_selelcted │ │ │ │ ├── Contents.json │ │ │ │ ├── home-sel │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── home_sel1.imageset │ │ │ │ │ │ ├── home_sel1@2x.png │ │ │ │ │ │ ├── home_sel1@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── home_sel2.imageset │ │ │ │ │ │ ├── home_sel2@2x.png │ │ │ │ │ │ ├── home_sel2@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── home_sel3.imageset │ │ │ │ │ │ ├── home_sel3@2x.png │ │ │ │ │ │ ├── home_sel3@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ ├── me-sel │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── me_sel1.imageset │ │ │ │ │ │ ├── me_sel1@2x.png │ │ │ │ │ │ ├── me_sel1@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── me_sel2.imageset │ │ │ │ │ │ ├── me_sel2@2x.png │ │ │ │ │ │ ├── me_sel2@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── me_sel3.imageset │ │ │ │ │ │ ├── me_sel3@2x.png │ │ │ │ │ │ ├── me_sel3@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ ├── share-sel │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── share_sel1.imageset │ │ │ │ │ │ ├── share_sel1@2x.png │ │ │ │ │ │ ├── share_sel1@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── share_sel2.imageset │ │ │ │ │ │ ├── share_sel2@2x.png │ │ │ │ │ │ ├── share_sel2@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── share_sel3.imageset │ │ │ │ │ │ ├── share_sel3@2x.png │ │ │ │ │ │ ├── share_sel3@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doctor-sel │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── doctor_sel1.imageset │ │ │ │ │ │ ├── doctor_sel1@2x.png │ │ │ │ │ │ ├── doctor_sel1@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── doctor_sel2.imageset │ │ │ │ │ │ ├── doctor_sel2@2x.png │ │ │ │ │ │ ├── doctor_sel2@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── doctor_sel3.imageset │ │ │ │ │ │ ├── doctor_sel3@2x.png │ │ │ │ │ │ ├── doctor_sel3@3x.png │ │ │ │ │ │ └── Contents.json │ │ │ │ └── shendeng-sel │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── shendeng_sel1.imageset │ │ │ │ │ ├── shengdeng_sel1@2x.png │ │ │ │ │ ├── shengdeng_sel1@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── shendeng_sel2.imageset │ │ │ │ │ ├── shengdeng_sel2@2x.png │ │ │ │ │ ├── shengdeng_sel2@3x.png │ │ │ │ │ └── Contents.json │ │ │ │ │ └── shendeng_sel3.imageset │ │ │ │ │ ├── shengdeng_sel3@2x.png │ │ │ │ │ ├── shengdeng_sel3@3x.png │ │ │ │ │ └── Contents.json │ │ │ └── tabbar_bg │ │ │ │ ├── Contents.json │ │ │ │ ├── tabbar_bg.imageset │ │ │ │ ├── tabbar_bg@2x.png │ │ │ │ ├── tabbar_bg@3x.png │ │ │ │ └── Contents.json │ │ │ │ └── tabbar_np_normal.imageset │ │ │ │ ├── tabbar_np_normal@2x.png │ │ │ │ ├── tabbar_np_normal@3x.png │ │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base │ │ ├── LJTabbar.h │ │ ├── LJNaviControllrer.h │ │ ├── LJTabbarController.h │ │ ├── LJNaviControllrer.m │ │ ├── LJTabbar.m │ │ └── LJTabbarController.m │ ├── Controllers │ │ ├── C2CViewController.h │ │ ├── HomeViewController.h │ │ ├── MineViewController.h │ │ ├── C3CViewController.h │ │ ├── C4CViewController.h │ │ ├── MineViewController.m │ │ ├── C2CViewController.m │ │ ├── C3CViewController.m │ │ ├── C4CViewController.m │ │ └── HomeViewController.m │ ├── AppDelegate.h │ ├── main.m │ ├── UIView+Frame │ │ ├── UIView+Frame.h │ │ └── UIView+Frame.m │ ├── Info.plist │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── AppDelegate.m ├── LJTabbarController.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── project.pbxproj ├── LJTabbarControllerTests │ ├── Info.plist │ └── LJTabbarControllerTests.m └── LJTabbarControllerUITests │ ├── Info.plist │ └── LJTabbarControllerUITests.m ├── xianyu ├── TabBarController │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── TabBar │ │ │ ├── Contents.json │ │ │ ├── fish_normal.imageset │ │ │ │ ├── fish_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── home_normal.imageset │ │ │ │ ├── home_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── post_normal.imageset │ │ │ │ ├── post_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── mycity_normal.imageset │ │ │ │ ├── mycity_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── account_normal.imageset │ │ │ │ ├── account_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── fish_highlight.imageset │ │ │ │ ├── fish_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ ├── home_highlight.imageset │ │ │ │ ├── home_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ ├── message_normal.imageset │ │ │ │ ├── message_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── tapbar_top_line.imageset │ │ │ │ ├── tapbar_top_line@2x.png │ │ │ │ └── Contents.json │ │ │ ├── account_highlight.imageset │ │ │ │ ├── account_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ ├── message_highlight.imageset │ │ │ │ ├── message_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ └── mycity_highlight.imageset │ │ │ │ ├── mycity_highlight@2x.png │ │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ ├── AppIcon60x60@3x.png │ │ │ └── Contents.json │ │ ├── LaunchImage.launchimage │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x-1.png │ │ │ ├── LaunchImage-568h@2x.png │ │ │ ├── LaunchImage-800-667h@2x.png │ │ │ ├── LaunchImage-800-Portrait-736h@3x.png │ │ │ └── Contents.json │ │ ├── header_back_icon.imageset │ │ │ ├── header_back_icon.png │ │ │ ├── header_back_icon@2x.png │ │ │ └── Contents.json │ │ └── header_back_icon_highlight.imageset │ │ │ ├── header_back_icon_highlight.png │ │ │ ├── header_back_icon_highlight@2x.png │ │ │ └── Contents.json │ ├── ViewController.h │ ├── Base │ │ ├── LJNaviControllrer.h │ │ ├── LJTabbarController.h │ │ ├── LJNaviControllrer.m │ │ ├── LJTabbar.h │ │ ├── LJTabbar.m │ │ └── LJTabbarController.m │ ├── Controllers │ │ ├── LJFishViewController.h │ │ ├── LJHomeViewController.h │ │ ├── LJMineViewController.h │ │ ├── LJPlusBtnViewController.h │ │ ├── LJMeassageViewController.h │ │ ├── LJPlusBtnViewController.m │ │ ├── LJFishViewController.m │ │ ├── LJHomeViewController.m │ │ ├── LJMineViewController.m │ │ └── LJMeassageViewController.m │ ├── UIView+Frame │ │ ├── UIImage+Image.h │ │ ├── UIView+Frame.h │ │ ├── UIImage+Image.m │ │ └── UIView+Frame.m │ ├── AppDelegate.h │ ├── main.m │ ├── ViewController.m │ ├── Info.plist │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ └── AppDelegate.m ├── TabBarController.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── project.pbxproj ├── TabBarControllerTests │ ├── Info.plist │ └── TabBarControllerTests.m └── TabBarControllerUITests │ ├── Info.plist │ └── TabBarControllerUITests.m ├── .gitignore └── README.md /doctor/LJTabbarController/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage@2x-1.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-568h@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/fish_normal.imageset/fish_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/fish_normal.imageset/fish_normal@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/home_normal.imageset/home_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/home_normal.imageset/home_normal@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/post_normal.imageset/post_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/post_normal.imageset/post_normal@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon.imageset/header_back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/header_back_icon.imageset/header_back_icon.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/mycity_normal.imageset/mycity_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/mycity_normal.imageset/mycity_normal@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon.imageset/header_back_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/header_back_icon.imageset/header_back_icon@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/account_normal.imageset/account_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/account_normal.imageset/account_normal@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/fish_highlight.imageset/fish_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/fish_highlight.imageset/fish_highlight@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/home_highlight.imageset/home_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/home_highlight.imageset/home_highlight@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/message_normal.imageset/message_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/message_normal.imageset/message_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/me_normal.imageset/me_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/me_normal.imageset/me_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/me_normal.imageset/me_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/me_normal.imageset/me_normal@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_bg.imageset/tabbar_bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_bg.imageset/tabbar_bg@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_bg.imageset/tabbar_bg@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_bg.imageset/tabbar_bg@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/tapbar_top_line.imageset/tapbar_top_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/tapbar_top_line.imageset/tapbar_top_line@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/account_highlight.imageset/account_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/account_highlight.imageset/account_highlight@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/message_highlight.imageset/message_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/message_highlight.imageset/message_highlight@2x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/mycity_highlight.imageset/mycity_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/TabBar/mycity_highlight.imageset/mycity_highlight@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/home_normal.imageset/home_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/home_normal.imageset/home_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/home_normal.imageset/home_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/home_normal.imageset/home_normal@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/doctor_normal.imageset/doctor_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/doctor_normal.imageset/doctor_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/doctor_normal.imageset/doctor_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/doctor_normal.imageset/doctor_normal@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/share_normal.imageset/share_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/share_normal.imageset/share_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/share_normal.imageset/share_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/share_normal.imageset/share_normal@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel1.imageset/me_sel1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel1.imageset/me_sel1@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel1.imageset/me_sel1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel1.imageset/me_sel1@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel2.imageset/me_sel2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel2.imageset/me_sel2@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel2.imageset/me_sel2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel2.imageset/me_sel2@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel3.imageset/me_sel3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel3.imageset/me_sel3@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel3.imageset/me_sel3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel3.imageset/me_sel3@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/shendeng_normal.imageset/shendeng_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/shendeng_normal.imageset/shendeng_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/shendeng_normal.imageset/shendeng_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/shendeng_normal.imageset/shendeng_normal@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel1.imageset/home_sel1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel1.imageset/home_sel1@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel1.imageset/home_sel1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel1.imageset/home_sel1@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel2.imageset/home_sel2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel2.imageset/home_sel2@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel2.imageset/home_sel2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel2.imageset/home_sel2@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel3.imageset/home_sel3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel3.imageset/home_sel3@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel3.imageset/home_sel3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel3.imageset/home_sel3@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_np_normal.imageset/tabbar_np_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_np_normal.imageset/tabbar_np_normal@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_np_normal.imageset/tabbar_np_normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_np_normal.imageset/tabbar_np_normal@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon_highlight.imageset/header_back_icon_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/header_back_icon_highlight.imageset/header_back_icon_highlight.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel1.imageset/share_sel1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel1.imageset/share_sel1@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel1.imageset/share_sel1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel1.imageset/share_sel1@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel2.imageset/share_sel2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel2.imageset/share_sel2@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel2.imageset/share_sel2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel2.imageset/share_sel2@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel3.imageset/share_sel3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel3.imageset/share_sel3@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel3.imageset/share_sel3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel3.imageset/share_sel3@3x.png -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon_highlight.imageset/header_back_icon_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/xianyu/TabBarController/Assets.xcassets/header_back_icon_highlight.imageset/header_back_icon_highlight@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel1.imageset/doctor_sel1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel1.imageset/doctor_sel1@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel1.imageset/doctor_sel1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel1.imageset/doctor_sel1@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel2.imageset/doctor_sel2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel2.imageset/doctor_sel2@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel2.imageset/doctor_sel2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel2.imageset/doctor_sel2@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel3.imageset/doctor_sel3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel3.imageset/doctor_sel3@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel3.imageset/doctor_sel3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel3.imageset/doctor_sel3@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel1.imageset/shengdeng_sel1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel1.imageset/shengdeng_sel1@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel1.imageset/shengdeng_sel1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel1.imageset/shengdeng_sel1@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel2.imageset/shengdeng_sel2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel2.imageset/shengdeng_sel2@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel2.imageset/shengdeng_sel2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel2.imageset/shengdeng_sel2@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel3.imageset/shengdeng_sel3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel3.imageset/shengdeng_sel3@2x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel3.imageset/shengdeng_sel3@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CandyGentleman/TabBarController/HEAD/doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel3.imageset/shengdeng_sel3@3x.png -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJTabbar.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbar.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJTabbar : UITabBar 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C2CViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // C2CViewController.h 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface C2CViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJNaviControllrer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJNaviControllrer.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJNaviControllrer : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJTabbarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarController.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJTabbarController : UITabBarController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/HomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.h 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HomeViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/MineViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MineViewController.h 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MineViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJNaviControllrer.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJNaviControllrer.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJNaviControllrer : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJTabbarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarController.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJTabbarController : UITabBarController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C3CViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // C3CViewController.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface C3CViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C4CViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // C4CViewController.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface C4CViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJFishViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJFishViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJFishViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJHomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJHomeViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJHomeViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJMineViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJMineViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJMineViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJPlusBtnViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJPlusBtnViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/12/3. 6 | // Copyright © 2018 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJPlusBtnViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJMeassageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJMeassageViewController.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJMeassageViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /xianyu/TabBarController/UIView+Frame/UIImage+Image.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+image.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/12/3. 6 | // Copyright © 2018 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Image) 12 | 13 | + (UIImage *)imageWithColor:(UIColor *)color; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /xianyu/TabBarController/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /xianyu/TabBarController/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJNaviControllrer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJNaviControllrer.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJNaviControllrer.h" 10 | 11 | @interface LJNaviControllrer () 12 | 13 | @end 14 | 15 | @implementation LJNaviControllrer 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJNaviControllrer.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJNaviControllrer.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJNaviControllrer.h" 10 | 11 | @interface LJNaviControllrer () 12 | 13 | @end 14 | 15 | @implementation LJNaviControllrer 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/fish_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "fish_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/home_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/post_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "post_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/mycity_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/account_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/fish_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "fish_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/home_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/message_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/mycity_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/tapbar_top_line.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tapbar_top_line@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/account_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/TabBar/message_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/me_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "me_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "me_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tabbar_bg@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tabbar_bg@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "header_back_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "header_back_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/home_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "home_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "me_sel1@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "me_sel1@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "me_sel2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "me_sel2@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/me-sel/me_sel3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "me_sel3@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "me_sel3@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJTabbar.h: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbar.h 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | @class LJTabbar; 11 | 12 | @protocol LJTabBarDelegate 13 | @optional 14 | - (void)tabBarPlusBtnClick:(LJTabbar *)tabBar; 15 | @end 16 | 17 | 18 | @interface LJTabbar : UITabBar 19 | 20 | /** tabbar的代理 */ 21 | @property (nonatomic, weak) id myDelegate; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/doctor_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "doctor_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "doctor_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/share_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "share_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "share_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_sel1@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "home_sel1@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_sel2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "home_sel2@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/home-sel/home_sel3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_sel3@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "home_sel3@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "share_sel1@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "share_sel1@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "share_sel2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "share_sel2@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/share-sel/share_sel3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "share_sel3@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "share_sel3@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_normal/shendeng_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shendeng_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "shendeng_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "doctor_sel1@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "doctor_sel1@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "doctor_sel2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "doctor_sel2@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/doctor-sel/doctor_sel3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "doctor_sel3@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "doctor_sel3@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tabbar_bg/tabbar_np_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tabbar_np_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tabbar_np_normal@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shengdeng_sel1@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "shengdeng_sel1@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shengdeng_sel2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "shengdeng_sel2@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/tabbar/tab_selelcted/shendeng-sel/shendeng_sel3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shengdeng_sel3@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "shengdeng_sel3@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/header_back_icon_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "header_back_icon_highlight.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "header_back_icon_highlight@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/MineViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MineViewController.m 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import "MineViewController.h" 10 | 11 | @interface MineViewController () 12 | 13 | @end 14 | 15 | @implementation MineViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | self.view.backgroundColor = [UIColor purpleColor]; 21 | self.navigationItem.title = @"我的"; 22 | } 23 | 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /xianyu/TabBarController/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | NSLog(@"1111"); 20 | NSLog(@"3333"); 21 | } 22 | 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /doctor/LJTabbarControllerTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /xianyu/TabBarControllerTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /xianyu/TabBarControllerUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /doctor/LJTabbarControllerUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /xianyu/TabBarController/UIView+Frame/UIView+Frame.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #import 4 | 5 | @interface UIView (Frame) 6 | 7 | @property (nonatomic, assign) CGFloat lj_x; 8 | @property (nonatomic, assign) CGFloat lj_y; 9 | @property (nonatomic, assign) CGFloat lj_maxX; 10 | @property (nonatomic, assign) CGFloat lj_maxY; 11 | @property (nonatomic, assign) CGFloat lj_width; 12 | @property (nonatomic, assign) CGFloat lj_height; 13 | @property (nonatomic, assign) CGFloat lj_centerX; 14 | @property (nonatomic, assign) CGFloat lj_centerY; 15 | @property (nonatomic, assign) CGFloat lj_top; 16 | @property (nonatomic, assign) CGFloat lj_left; 17 | @property (nonatomic, assign) CGFloat lj_bottom; 18 | @property (nonatomic, assign) CGFloat lj_right; 19 | 20 | 21 | @property (nonatomic, assign) CGSize lj_size; 22 | @property (nonatomic, assign) CGPoint lj_origin; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/UIView+Frame/UIView+Frame.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #import 4 | 5 | @interface UIView (Frame) 6 | 7 | @property (nonatomic, assign) CGFloat lj_x; 8 | @property (nonatomic, assign) CGFloat lj_y; 9 | @property (nonatomic, assign) CGFloat lj_maxX; 10 | @property (nonatomic, assign) CGFloat lj_maxY; 11 | @property (nonatomic, assign) CGFloat lj_width; 12 | @property (nonatomic, assign) CGFloat lj_height; 13 | @property (nonatomic, assign) CGFloat lj_centerX; 14 | @property (nonatomic, assign) CGFloat lj_centerY; 15 | @property (nonatomic, assign) CGFloat lj_top; 16 | @property (nonatomic, assign) CGFloat lj_left; 17 | @property (nonatomic, assign) CGFloat lj_bottom; 18 | @property (nonatomic, assign) CGFloat lj_right; 19 | 20 | 21 | @property (nonatomic, assign) CGSize lj_size; 22 | @property (nonatomic, assign) CGPoint lj_origin; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /xianyu/TabBarController/UIView+Frame/UIImage+Image.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+image.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/12/3. 6 | // Copyright © 2018 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Image.h" 10 | 11 | @implementation UIImage (Image) 12 | + (UIImage *)imageWithColor:(UIColor *)color{ 13 | //描述一个矩形 14 | CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 15 | //开启图形上下文 16 | UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0); 17 | 18 | //获得图形上下文 19 | CGContextRef ctx = UIGraphicsGetCurrentContext(); 20 | 21 | //使用color演示填充上下文 22 | CGContextSetFillColorWithColor(ctx, [color CGColor]); 23 | 24 | //渲染上下文 25 | CGContextFillRect(ctx, rect); 26 | 27 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 28 | 29 | //关闭图形上下文 30 | UIGraphicsEndImageContext(); 31 | 32 | return image; 33 | 34 | } 35 | @end 36 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJPlusBtnViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJPlusBtnViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/12/3. 6 | // Copyright © 2018 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJPlusBtnViewController.h" 10 | 11 | @interface LJPlusBtnViewController () 12 | 13 | @end 14 | 15 | @implementation LJPlusBtnViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.title = @"popVC"; 20 | [self setUpNav]; 21 | 22 | } 23 | 24 | - (void)setUpNav{ 25 | 26 | UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"header_back_icon"] style:UIBarButtonItemStyleDone target:self action:@selector(pop)]; 27 | self.navigationItem.leftBarButtonItem = backItem; 28 | 29 | } 30 | 31 | 32 | - (void)pop{ 33 | 34 | [self dismissViewControllerAnimated:YES completion:nil]; 35 | 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJFishViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJFishViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJFishViewController.h" 10 | 11 | @interface LJFishViewController () 12 | 13 | @end 14 | 15 | @implementation LJFishViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJHomeViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJHomeViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJHomeViewController.h" 10 | 11 | @interface LJHomeViewController () 12 | 13 | @end 14 | 15 | @implementation LJHomeViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJMineViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJMineViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJMineViewController.h" 10 | 11 | @interface LJMineViewController () 12 | 13 | @end 14 | 15 | @implementation LJMineViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Controllers/LJMeassageViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJMeassageViewController.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJMeassageViewController.h" 10 | 11 | @interface LJMeassageViewController () 12 | 13 | @end 14 | 15 | @implementation LJMeassageViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C2CViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // C2CViewController.m 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import "C2CViewController.h" 10 | 11 | @interface C2CViewController () 12 | 13 | @end 14 | 15 | @implementation C2CViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | self.view.backgroundColor = [UIColor grayColor]; 21 | self.navigationItem.title = @"医生"; 22 | } 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | /* 30 | #pragma mark - Navigation 31 | 32 | // In a storyboard-based application, you will often want to do a little preparation before navigation 33 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 34 | // Get the new view controller using [segue destinationViewController]. 35 | // Pass the selected object to the new view controller. 36 | } 37 | */ 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C3CViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // C3CViewController.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "C3CViewController.h" 10 | 11 | @interface C3CViewController () 12 | 13 | @end 14 | 15 | @implementation C3CViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor darkGrayColor]; 20 | self.navigationItem.title = @"医生神灯"; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/C4CViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // C4CViewController.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "C4CViewController.h" 10 | 11 | @interface C4CViewController () 12 | 13 | @end 14 | 15 | @implementation C4CViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor darkGrayColor]; 20 | self.navigationItem.title = @"分享"; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Controllers/HomeViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.m 3 | // TabBarAnimation 4 | // 5 | // Created by 袁小荣 on 2018/8/24. 6 | // Copyright © 2018年 Bruceyuan. All rights reserved. 7 | // 8 | 9 | #import "HomeViewController.h" 10 | 11 | @interface HomeViewController () 12 | 13 | @end 14 | 15 | @implementation HomeViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | self.view.backgroundColor = [UIColor greenColor]; 21 | self.navigationItem.title = @"首页"; 22 | } 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | /* 30 | #pragma mark - Navigation 31 | 32 | // In a storyboard-based application, you will often want to do a little preparation before navigation 33 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 34 | // Get the new view controller using [segue destinationViewController]. 35 | // Pass the selected object to the new view controller. 36 | } 37 | */ 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /xianyu/TabBarControllerTests/TabBarControllerTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // TabBarControllerTests.m 3 | // TabBarControllerTests 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TabBarControllerTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation TabBarControllerTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /doctor/LJTabbarControllerTests/LJTabbarControllerTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarControllerTests.m 3 | // LJTabbarControllerTests 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJTabbarControllerTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation LJTabbarControllerTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /xianyu/TabBarControllerUITests/TabBarControllerUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // TabBarControllerUITests.m 3 | // TabBarControllerUITests 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TabBarControllerUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation TabBarControllerUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /doctor/LJTabbarControllerUITests/LJTabbarControllerUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarControllerUITests.m 3 | // LJTabbarControllerUITests 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LJTabbarControllerUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation LJTabbarControllerUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | 咸鱼 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | # CocoaPods 32 | # 33 | # We recommend against adding the Pods directory to your .gitignore. However 34 | # you should judge for yourself, the pros and cons are mentioned at: 35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 36 | # 37 | # Pods/ 38 | 39 | # Carthage 40 | # 41 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 42 | # Carthage/Checkouts 43 | 44 | Carthage/Build 45 | 46 | # fastlane 47 | # 48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 49 | # screenshots whenever they are needed. 50 | # For more information about the recommended setup visit: 51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 52 | 53 | fastlane/report.xml 54 | fastlane/Preview.html 55 | fastlane/screenshots/**/*.png 56 | fastlane/test_output 57 | 58 | # Code Injection 59 | # 60 | # After new code Injection tools there's a generated folder /iOSInjectionProject 61 | # https://github.com/johnno1962/injectionforxcode 62 | 63 | iOSInjectionProject/ 64 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "extent" : "full-screen", 5 | "idiom" : "iphone", 6 | "subtype" : "736h", 7 | "filename" : "LaunchImage-800-Portrait-736h@3x.png", 8 | "minimum-system-version" : "8.0", 9 | "orientation" : "portrait", 10 | "scale" : "3x" 11 | }, 12 | { 13 | "orientation" : "landscape", 14 | "idiom" : "iphone", 15 | "extent" : "full-screen", 16 | "minimum-system-version" : "8.0", 17 | "subtype" : "736h", 18 | "scale" : "3x" 19 | }, 20 | { 21 | "extent" : "full-screen", 22 | "idiom" : "iphone", 23 | "subtype" : "667h", 24 | "filename" : "LaunchImage-800-667h@2x.png", 25 | "minimum-system-version" : "8.0", 26 | "orientation" : "portrait", 27 | "scale" : "2x" 28 | }, 29 | { 30 | "orientation" : "portrait", 31 | "idiom" : "iphone", 32 | "extent" : "full-screen", 33 | "minimum-system-version" : "7.0", 34 | "scale" : "2x" 35 | }, 36 | { 37 | "extent" : "full-screen", 38 | "idiom" : "iphone", 39 | "subtype" : "retina4", 40 | "filename" : "LaunchImage-568h@2x.png", 41 | "minimum-system-version" : "7.0", 42 | "orientation" : "portrait", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "orientation" : "portrait", 47 | "idiom" : "iphone", 48 | "filename" : "LaunchImage.png", 49 | "extent" : "full-screen", 50 | "scale" : "1x" 51 | }, 52 | { 53 | "orientation" : "portrait", 54 | "idiom" : "iphone", 55 | "filename" : "LaunchImage@2x-1.png", 56 | "extent" : "full-screen", 57 | "scale" : "2x" 58 | }, 59 | { 60 | "orientation" : "portrait", 61 | "idiom" : "iphone", 62 | "extent" : "full-screen", 63 | "subtype" : "retina4", 64 | "scale" : "2x" 65 | } 66 | ], 67 | "info" : { 68 | "version" : 1, 69 | "author" : "xcode" 70 | } 71 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJTabbar.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbar.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJTabbar.h" 10 | #import "UIView+Frame.h" 11 | 12 | @interface LJTabbar () 13 | 14 | @property (nonatomic, strong) UIImageView *imageView; 15 | @property (nonatomic, strong) UIView *btn; 16 | @end 17 | 18 | 19 | @implementation LJTabbar 20 | 21 | - (instancetype)initWithFrame:(CGRect)frame{ 22 | 23 | if (self=[super initWithFrame:frame]) { 24 | self.barStyle = UIBarStyleBlack; // 设置样式, 去除tabbar上面的黑线 25 | self.backgroundImage = [UIImage imageNamed:@"tabbar_bg"]; // 设置tabbar 背景图片 26 | } 27 | return self; 28 | } 29 | 30 | 31 | - (void)layoutSubviews{ 32 | [super layoutSubviews]; 33 | Class class = NSClassFromString(@"UITabBarButton"); 34 | int btnIndex = 0; 35 | for (UIView *btn in self.subviews){ 36 | if ([btn isKindOfClass:class]) { 37 | if (btnIndex == 2) { // btnIndex == 2 的时候, 为中间按钮, 添加一个背景图片 38 | self.imageView.frame = CGRectMake(5, -17, btn.lj_width - 10, btn.lj_height + 17); 39 | [btn insertSubview:self.imageView atIndex:0]; 40 | self.btn = btn; 41 | } 42 | btnIndex++; 43 | } 44 | } 45 | } 46 | 47 | -(UIImageView *)imageView{ 48 | if (!_imageView) { 49 | _imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tabbar_np_normal"]]; 50 | } 51 | return _imageView; 52 | } 53 | 54 | 55 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 56 | if (self.isHidden == NO) { 57 | CGPoint newP = [self convertPoint:point toView:self.imageView]; 58 | //判断如果这个新的点是在发布按钮身上,那么处理点击事件最合适的view就是发布按钮 59 | if ( [self.imageView pointInside:newP withEvent:event]) { 60 | return self.btn; 61 | }else{ //如果点不在发布按钮身上,直接让系统处理就可以了 62 | return [super hitTest:point withEvent:event]; 63 | } 64 | } 65 | else { //tabbar隐藏了,那么说明已经push到其他的页面了,这个时候还是让系统去判断最合适的view处理就好了 66 | return [super hitTest:point withEvent:event]; 67 | } 68 | } 69 | 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "size" : "29x29", 15 | "idiom" : "iphone", 16 | "filename" : "AppIcon29x29@2x.png", 17 | "scale" : "2x" 18 | }, 19 | { 20 | "size" : "29x29", 21 | "idiom" : "iphone", 22 | "filename" : "AppIcon29x29@3x.png", 23 | "scale" : "3x" 24 | }, 25 | { 26 | "size" : "40x40", 27 | "idiom" : "iphone", 28 | "filename" : "AppIcon40x40@2x.png", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "size" : "40x40", 33 | "idiom" : "iphone", 34 | "filename" : "AppIcon40x40@3x.png", 35 | "scale" : "3x" 36 | }, 37 | { 38 | "size" : "60x60", 39 | "idiom" : "iphone", 40 | "filename" : "AppIcon60x60@2x.png", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "size" : "60x60", 45 | "idiom" : "iphone", 46 | "filename" : "AppIcon60x60@3x.png", 47 | "scale" : "3x" 48 | }, 49 | { 50 | "idiom" : "ipad", 51 | "size" : "20x20", 52 | "scale" : "1x" 53 | }, 54 | { 55 | "idiom" : "ipad", 56 | "size" : "20x20", 57 | "scale" : "2x" 58 | }, 59 | { 60 | "idiom" : "ipad", 61 | "size" : "29x29", 62 | "scale" : "1x" 63 | }, 64 | { 65 | "idiom" : "ipad", 66 | "size" : "29x29", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "idiom" : "ipad", 71 | "size" : "40x40", 72 | "scale" : "1x" 73 | }, 74 | { 75 | "idiom" : "ipad", 76 | "size" : "40x40", 77 | "scale" : "2x" 78 | }, 79 | { 80 | "idiom" : "ipad", 81 | "size" : "76x76", 82 | "scale" : "1x" 83 | }, 84 | { 85 | "idiom" : "ipad", 86 | "size" : "76x76", 87 | "scale" : "2x" 88 | }, 89 | { 90 | "idiom" : "ipad", 91 | "size" : "83.5x83.5", 92 | "scale" : "2x" 93 | }, 94 | { 95 | "idiom" : "ios-marketing", 96 | "size" : "1024x1024", 97 | "scale" : "1x" 98 | } 99 | ], 100 | "info" : { 101 | "version" : 1, 102 | "author" : "xcode" 103 | } 104 | } -------------------------------------------------------------------------------- /doctor/LJTabbarController/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "LJTabbarController.h" 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | 19 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 20 | 21 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 22 | self.window.backgroundColor = [UIColor whiteColor]; 23 | self.window.rootViewController = [[LJTabbarController alloc] init]; 24 | [self.window makeKeyAndVisible]; 25 | 26 | return YES; 27 | } 28 | 29 | 30 | - (void)applicationWillResignActive:(UIApplication *)application { 31 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 32 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 33 | } 34 | 35 | 36 | - (void)applicationDidEnterBackground:(UIApplication *)application { 37 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 38 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 39 | } 40 | 41 | 42 | - (void)applicationWillEnterForeground:(UIApplication *)application { 43 | // 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. 44 | } 45 | 46 | 47 | - (void)applicationDidBecomeActive:(UIApplication *)application { 48 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 49 | } 50 | 51 | 52 | - (void)applicationWillTerminate:(UIApplication *)application { 53 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 54 | } 55 | 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /xianyu/TabBarController/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // TabBarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/30. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "LJTabbarController.h" 11 | #import "LJTabbar.h" 12 | 13 | 14 | 15 | @interface AppDelegate () 16 | 17 | @end 18 | 19 | @implementation AppDelegate 20 | 21 | 22 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 23 | 24 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 25 | LJTabbarController *tabBarVc = [[LJTabbarController alloc] init]; 26 | 27 | CATransition *anim = [[CATransition alloc] init]; 28 | anim.type = @"rippleEffect"; 29 | anim.duration = 1.0; 30 | 31 | [self.window.layer addAnimation:anim forKey:nil]; 32 | 33 | self.window.rootViewController = tabBarVc; 34 | 35 | [self.window makeKeyAndVisible]; 36 | 37 | return YES; 38 | } 39 | 40 | 41 | - (void)applicationWillResignActive:(UIApplication *)application { 42 | // 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. 43 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 44 | } 45 | 46 | 47 | - (void)applicationDidEnterBackground:(UIApplication *)application { 48 | // 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. 49 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 50 | } 51 | 52 | 53 | - (void)applicationWillEnterForeground:(UIApplication *)application { 54 | // 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. 55 | } 56 | 57 | 58 | - (void)applicationDidBecomeActive:(UIApplication *)application { 59 | // 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. 60 | } 61 | 62 | 63 | - (void)applicationWillTerminate:(UIApplication *)application { 64 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 65 | } 66 | 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/UIView+Frame/UIView+Frame.m: -------------------------------------------------------------------------------- 1 | 2 | 3 | #import "UIView+Frame.h" 4 | 5 | @implementation UIView (Frame) 6 | 7 | - (void)setLj_x:(CGFloat)lj_x{ 8 | 9 | CGRect frame = self.frame; 10 | frame.origin.x = lj_x; 11 | self.frame = frame; 12 | } 13 | 14 | - (CGFloat)lj_x { 15 | 16 | return self.frame.origin.x; 17 | } 18 | 19 | - (void)setLj_y:(CGFloat)lj_y { 20 | 21 | CGRect frame = self.frame; 22 | frame.origin.y = lj_y; 23 | self.frame = frame; 24 | } 25 | 26 | - (CGFloat)lj_y { 27 | 28 | return self.frame.origin.y; 29 | } 30 | 31 | - (CGFloat)lj_maxX { 32 | 33 | return CGRectGetMaxX(self.frame); 34 | } 35 | 36 | - (void)setLj_maxX:(CGFloat)lj_maxX {} 37 | 38 | - (CGFloat)lj_maxY { 39 | 40 | return CGRectGetMaxY(self.frame); 41 | } 42 | 43 | - (void)setLj_maxY:(CGFloat)lj_maxY {} 44 | 45 | - (void)setLj_width:(CGFloat)lj_width { 46 | CGRect frame = self.frame; 47 | frame.size.width = lj_width; 48 | self.frame = frame; 49 | } 50 | 51 | - (CGFloat)lj_width { 52 | 53 | return self.frame.size.width; 54 | } 55 | 56 | - (void)setLj_height:(CGFloat)lj_height { 57 | CGRect frame = self.frame; 58 | frame.size.height = lj_height; 59 | self.frame = frame; 60 | } 61 | 62 | - (CGFloat)lj_height { 63 | 64 | return self.frame.size.height; 65 | } 66 | 67 | - (void)setLj_size:(CGSize)lj_size { 68 | 69 | CGRect frame = self.frame; 70 | frame.size = lj_size; 71 | self.frame = frame; 72 | } 73 | 74 | - (CGSize)lj_size { 75 | 76 | return self.frame.size; 77 | } 78 | 79 | - (void)setLj_origin:(CGPoint)lj_origin { 80 | 81 | CGRect frame = self.frame; 82 | frame.origin = lj_origin; 83 | self.frame = frame; 84 | } 85 | 86 | - (CGPoint)lj_origin { 87 | 88 | return self.frame.origin; 89 | } 90 | 91 | - (void)setLj_centerX:(CGFloat)lj_centerX { 92 | 93 | CGPoint center = self.center; 94 | center.x = lj_centerX; 95 | self.center = center; 96 | } 97 | 98 | - (CGFloat)lj_centerX { 99 | 100 | return self.center.x; 101 | } 102 | 103 | - (void)setLj_centerY:(CGFloat)lj_centerY { 104 | 105 | CGPoint center = self.center; 106 | center.y = lj_centerY; 107 | self.center = center; 108 | } 109 | 110 | - (CGFloat)lj_centerY { 111 | 112 | return self.center.y; 113 | } 114 | 115 | - (void)setLj_top:(CGFloat)lj_top { 116 | CGRect frame = self.frame; 117 | frame.origin.y = lj_top; 118 | self.frame = frame; 119 | } 120 | 121 | - (CGFloat)lj_top { 122 | return self.frame.origin.y; 123 | } 124 | 125 | - (void)setLj_left:(CGFloat)lj_left { 126 | CGRect frame = self.frame; 127 | frame.origin.x = lj_left; 128 | self.frame = frame; 129 | } 130 | 131 | - (CGFloat)lj_left { 132 | return self.frame.origin.x; 133 | } 134 | 135 | - (void)setLj_bottom:(CGFloat)lj_bottom { 136 | CGRect frame = self.frame; 137 | frame.origin.y = lj_bottom - self.lj_height; 138 | self.frame = frame; 139 | } 140 | 141 | - (CGFloat)lj_bottom { 142 | return self.frame.origin.y + self.lj_height; 143 | } 144 | 145 | - (void)setLj_right:(CGFloat)lj_right { 146 | CGRect frame = self.frame; 147 | frame.origin.x = lj_right - self.lj_width; 148 | self.frame = frame; 149 | } 150 | 151 | - (CGFloat)lj_right { 152 | return self.frame.origin.x + self.lj_width; 153 | } 154 | 155 | @end 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /xianyu/TabBarController/UIView+Frame/UIView+Frame.m: -------------------------------------------------------------------------------- 1 | 2 | 3 | #import "UIView+Frame.h" 4 | 5 | @implementation UIView (Frame) 6 | 7 | - (void)setLj_x:(CGFloat)lj_x{ 8 | 9 | CGRect frame = self.frame; 10 | frame.origin.x = lj_x; 11 | self.frame = frame; 12 | } 13 | 14 | - (CGFloat)lj_x { 15 | 16 | return self.frame.origin.x; 17 | } 18 | 19 | - (void)setLj_y:(CGFloat)lj_y { 20 | 21 | CGRect frame = self.frame; 22 | frame.origin.y = lj_y; 23 | self.frame = frame; 24 | } 25 | 26 | - (CGFloat)lj_y { 27 | 28 | return self.frame.origin.y; 29 | } 30 | 31 | - (CGFloat)lj_maxX { 32 | 33 | return CGRectGetMaxX(self.frame); 34 | } 35 | 36 | - (void)setLj_maxX:(CGFloat)lj_maxX {} 37 | 38 | - (CGFloat)lj_maxY { 39 | 40 | return CGRectGetMaxY(self.frame); 41 | } 42 | 43 | - (void)setLj_maxY:(CGFloat)lj_maxY {} 44 | 45 | - (void)setLj_width:(CGFloat)lj_width { 46 | CGRect frame = self.frame; 47 | frame.size.width = lj_width; 48 | self.frame = frame; 49 | } 50 | 51 | - (CGFloat)lj_width { 52 | 53 | return self.frame.size.width; 54 | } 55 | 56 | - (void)setLj_height:(CGFloat)lj_height { 57 | CGRect frame = self.frame; 58 | frame.size.height = lj_height; 59 | self.frame = frame; 60 | } 61 | 62 | - (CGFloat)lj_height { 63 | 64 | return self.frame.size.height; 65 | } 66 | 67 | - (void)setLj_size:(CGSize)lj_size { 68 | 69 | CGRect frame = self.frame; 70 | frame.size = lj_size; 71 | self.frame = frame; 72 | } 73 | 74 | - (CGSize)lj_size { 75 | 76 | return self.frame.size; 77 | } 78 | 79 | - (void)setLj_origin:(CGPoint)lj_origin { 80 | 81 | CGRect frame = self.frame; 82 | frame.origin = lj_origin; 83 | self.frame = frame; 84 | } 85 | 86 | - (CGPoint)lj_origin { 87 | 88 | return self.frame.origin; 89 | } 90 | 91 | - (void)setLj_centerX:(CGFloat)lj_centerX { 92 | 93 | CGPoint center = self.center; 94 | center.x = lj_centerX; 95 | self.center = center; 96 | } 97 | 98 | - (CGFloat)lj_centerX { 99 | 100 | return self.center.x; 101 | } 102 | 103 | - (void)setLj_centerY:(CGFloat)lj_centerY { 104 | 105 | CGPoint center = self.center; 106 | center.y = lj_centerY; 107 | self.center = center; 108 | } 109 | 110 | - (CGFloat)lj_centerY { 111 | 112 | return self.center.y; 113 | } 114 | 115 | - (void)setLj_top:(CGFloat)lj_top { 116 | CGRect frame = self.frame; 117 | frame.origin.y = lj_top; 118 | self.frame = frame; 119 | } 120 | 121 | - (CGFloat)lj_top { 122 | return self.frame.origin.y; 123 | } 124 | 125 | - (void)setLj_left:(CGFloat)lj_left { 126 | CGRect frame = self.frame; 127 | frame.origin.x = lj_left; 128 | self.frame = frame; 129 | } 130 | 131 | - (CGFloat)lj_left { 132 | return self.frame.origin.x; 133 | } 134 | 135 | - (void)setLj_bottom:(CGFloat)lj_bottom { 136 | CGRect frame = self.frame; 137 | frame.origin.y = lj_bottom - self.lj_height; 138 | self.frame = frame; 139 | } 140 | 141 | - (CGFloat)lj_bottom { 142 | return self.frame.origin.y + self.lj_height; 143 | } 144 | 145 | - (void)setLj_right:(CGFloat)lj_right { 146 | CGRect frame = self.frame; 147 | frame.origin.x = lj_right - self.lj_width; 148 | self.frame = frame; 149 | } 150 | 151 | - (CGFloat)lj_right { 152 | return self.frame.origin.x + self.lj_width; 153 | } 154 | 155 | @end 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJTabbar.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbar.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJTabbar.h" 10 | #import "UIView+Frame.h" 11 | #import "UIImage+Image.h" 12 | 13 | 14 | #define LJMagin 10 15 | 16 | 17 | @interface LJTabbar () 18 | 19 | /** plus按钮 */ 20 | @property (nonatomic, weak) UIButton *plusBtn ; 21 | 22 | @end 23 | 24 | 25 | @implementation LJTabbar 26 | 27 | - (instancetype)initWithFrame:(CGRect)frame 28 | { 29 | if (self=[super initWithFrame:frame]) { 30 | 31 | self.backgroundColor = [UIColor whiteColor]; 32 | [self setShadowImage:[UIImage imageWithColor:[UIColor clearColor]]]; 33 | 34 | UIButton *plusBtn = [[UIButton alloc] init]; 35 | [plusBtn setBackgroundImage:[UIImage imageNamed:@"post_normal"] forState:UIControlStateNormal]; 36 | [plusBtn setBackgroundImage:[UIImage imageNamed:@"post_normal"] forState:UIControlStateHighlighted]; 37 | 38 | self.plusBtn = plusBtn; 39 | 40 | 41 | [plusBtn addTarget:self action:@selector(plusBtnDidClick) forControlEvents:UIControlEventTouchUpInside]; 42 | 43 | [self addSubview:plusBtn]; 44 | 45 | } 46 | return self; 47 | } 48 | 49 | - (void)layoutSubviews{ 50 | 51 | [super layoutSubviews]; 52 | //系统自带的按钮类型是UITabBarButton,找出这些类型的按钮,然后重新排布位置,空出中间的位置 53 | Class class = NSClassFromString(@"UITabBarButton"); 54 | 55 | self.plusBtn.lj_centerX = self.lj_centerX; 56 | //调整发布按钮的中线点Y值 57 | self.plusBtn.lj_centerY = self.lj_height * 0.5 - 2* LJMagin ; 58 | 59 | self.plusBtn.lj_size = CGSizeMake(self.plusBtn.currentBackgroundImage.size.width, self.plusBtn.currentBackgroundImage.size.height); 60 | 61 | UILabel *label = [[UILabel alloc] init]; 62 | label.text = @"发布"; 63 | label.font = [UIFont systemFontOfSize:11]; 64 | [label sizeToFit]; 65 | label.textColor = [UIColor grayColor]; 66 | [self addSubview:label]; 67 | label.lj_centerX = self.plusBtn.lj_centerX; 68 | label.lj_centerY = CGRectGetMaxY(self.plusBtn.frame) + LJMagin ; 69 | 70 | int btnIndex = 0; 71 | for (UIView *btn in self.subviews) {//遍历tabbar的子控件 72 | if ([btn isKindOfClass:class]) { 73 | btn.lj_width = self.lj_width / 5; 74 | 75 | btn.lj_x = btn.lj_width * btnIndex; 76 | 77 | btnIndex++; 78 | if (btnIndex == 2) { 79 | btnIndex++; 80 | } 81 | } 82 | } 83 | 84 | [self bringSubviewToFront:self.plusBtn]; 85 | } 86 | 87 | //点击了发布按钮 88 | - (void)plusBtnDidClick{ 89 | // 如果tabbar的代理实现了对应的代理方法,那么就调用代理的该方法 90 | if ([self.delegate respondsToSelector:@selector(tabBarPlusBtnClick:)]) { 91 | [self.myDelegate tabBarPlusBtnClick:self]; 92 | } 93 | 94 | } 95 | 96 | 97 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 98 | if (self.isHidden == NO) { 99 | 100 | //将当前tabbar的触摸点转换坐标系,转换到发布按钮的身上,生成一个新的点 101 | CGPoint newP = [self convertPoint:point toView:self.plusBtn]; 102 | 103 | //判断如果这个新的点是在发布按钮身上,那么处理点击事件最合适的view就是发布按钮 104 | if ( [self.plusBtn pointInside:newP withEvent:event]) { 105 | return self.plusBtn; 106 | }else{//如果点不在发布按钮身上,直接让系统处理就可以了 107 | 108 | return [super hitTest:point withEvent:event]; 109 | } 110 | } 111 | 112 | else {//tabbar隐藏了,那么说明已经push到其他的页面了,这个时候还是让系统去判断最合适的view处理就好了 113 | return [super hitTest:point withEvent:event]; 114 | } 115 | } 116 | 117 | 118 | @end 119 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TabBarController 2 | ### 1. 防闲鱼app 3 | ###### 效果图如下: 4 | ![xianyu.gif](https://upload-images.jianshu.io/upload_images/1471722-3626a44d6b9a4079.gif?imageMogr2/auto-orient/strip) 5 | ###### 实现思路: 6 | - 此时的tabbar的话也是遵循主流,自定义一个继承自系统UITabbar的LJTabbar,然后用KVC和系统的进行替换。 7 | - 中间的凸起按钮和tabbar内部的子控件不是同一类型,中间的按钮是一个自定义的button。 8 | - 最后给tabbar弄一个代理,添加一个点击中间凸起按钮的代理方法,让LJTabBarController成为它的代理,实现对应代理方法即可实现按钮点击。 9 | ###### 核心方法: 10 | - 动态添加button 后,重新布局子控件代码 11 | ``` 12 | int btnIndex = 0; 13 | for (UIView *btn in self.subviews) {//遍历tabbar的子控件 14 | if ([btn isKindOfClass:class]) { 15 | btn.lj_width = self.lj_width / 5; 16 | btn.lj_x = btn.lj_width * btnIndex; 17 | btnIndex++; 18 | if (btnIndex == 2) { 19 | btnIndex++; 20 | } 21 | } 22 | } 23 | ``` 24 | ``` objc 25 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 26 | if (self.isHidden == NO) { 27 | //将当前tabbar的触摸点转换坐标系,转换到发布按钮的身上,生成一个新的点 28 | CGPoint newP = [self convertPoint:point toView:self.plusBtn]; 29 | //判断如果这个新的点是在发布按钮身上,那么处理点击事件最合适的view就是发布按钮 30 | if ( [self.plusBtn pointInside:newP withEvent:event]) { 31 | return self.plusBtn; 32 | }else{//如果点不在发布按钮身上,直接让系统处理就可以了 33 | return [super hitTest:point withEvent:event]; 34 | } 35 | } 36 | else {//tabbar隐藏了,那么说明已经push到其他的页面了,这个时候还是让系统去判断最合适的view处理就好了 37 | return [super hitTest:point withEvent:event]; 38 | } 39 | } 40 | ``` 41 | ### 2. 防金琉璃app(一款医疗软件) 42 | > 这个实现思路比较推荐,特色点是“选中对应 tabbarItem 不仅有动画效果, 而且tabbar上的按钮都为tabbarItem , 没有使用自定义的button, 点击顺序非常好控制, 不需要再次处理中的凸出按钮的点击事件了” 43 | ###### 效果图如下: 44 | ![doctor.gif](https://upload-images.jianshu.io/upload_images/1471722-67321f84bfa601f5.gif?imageMogr2/auto-orient/strip) 45 | ###### 实现思路: 46 | - 此时的tabbar也是一个继承自系统UITabbar的LJTabbar,用KVC和系统的进行替换,这样方便为tabbar 增加一个中间按钮的背景图片, 使其凸出来!代码如下: 47 | ``` 48 | - (void)layoutSubviews{ 49 | [super layoutSubviews]; 50 | Class class = NSClassFromString(@"UITabBarButton"); 51 | int btnIndex = 0; 52 | for (UIView *btn in self.subviews){ 53 | if ([btn isKindOfClass:class]) { 54 | if (btnIndex == 2) { // btnIndex == 2 的时候, 为中间按钮, 添加一个背景图片 55 | self.imageView.frame = CGRectMake(5, -17, btn.lj_width - 10, btn.lj_height + 17); 56 | [btn insertSubview:self.imageView atIndex:0]; 57 | self.btn = btn; 58 | } 59 | btnIndex++; 60 | } 61 | } 62 | } 63 | ``` 64 | 65 | - 为了使突出来的按钮也有点击事件, 也需要重写hitTest方法, 但此时要计算转换背景按钮的坐标系, 以便计算出来, 点击按钮 的响应区域。 66 | ``` 67 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {} 68 | if (self.isHidden == NO) { 69 | CGPoint newP = [self convertPoint:point toView:self.imageView]; 70 | //判断如果这个新的点是在发布按钮身上,那么处理点击事件最合适的view就是发布按钮 71 | if ( [self.imageView pointInside:newP withEvent:event]) { 72 | return self.btn; 73 | }else{ //如果点不在发布按钮身上,直接让系统处理就可以了 74 | return [super hitTest:point withEvent:event]; 75 | } 76 | } 77 | else { //tabbar隐藏了,那么说明已经push到其他的页面了,这个时候还是让系统去判断最合适的view处理就好了 78 | return [super hitTest:point withEvent:event]; 79 | } 80 | } 81 | ``` 82 | - 动画效果的实现, 是实现TabBarController 的 tabBarController:shouldSelectViewController: 这个代理方法, 并且添加一个选中的item 动态添加一个动画组, 如下代码: 83 | ``` 84 | - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 85 | NSInteger index = [tabBarController.childViewControllers indexOfObject:viewController]; // 获取当前选中的控制器位置 86 | UIButton *tabBarBtn = tabBarController.tabBar.subviews[index+1]; 87 | Class clase = NSClassFromString(@"UITabBarSwappableImageView"); 88 | UIImageView *imageView = nil; // 获取对应的ImageView,添加动画。 89 | for (UIView *view in tabBarBtn.subviews) { 90 | if ([view isKindOfClass:clase]) { 91 | imageView = (UIImageView *)view; 92 | } 93 | } 94 | imageView.animationImages = self.allImages[index]; 95 | imageView.animationRepeatCount = 1; 96 | imageView.animationDuration = ImageCount * 0.08; 97 | [imageView startAnimating]; 98 | return YES; 99 | } 100 | ``` 101 | > 这样就能实现上述的效果了,选择对应的按钮, 有动画、 选中颜色也有对应的色彩,tabbar顺序也不会更改。 102 | 103 | -------------------------------------------------------------------------------- /xianyu/TabBarController/Base/LJTabbarController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarController.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJTabbarController.h" 10 | #import "LJNaviControllrer.h" 11 | #import "LJTabbar.h" 12 | 13 | #import "LJHomeViewController.h" 14 | #import "LJFishViewController.h" 15 | #import "LJPlusBtnViewController.h" 16 | #import "LJMeassageViewController.h" 17 | #import "LJMineViewController.h" 18 | 19 | 20 | @interface LJTabbarController () 21 | 22 | 23 | @end 24 | 25 | @implementation LJTabbarController 26 | 27 | #pragma mark - 第一次使用当前类的时候对设置UITabBarItem的主题 28 | + (void)initialize 29 | { 30 | if (@available(iOS 9.0, *)) { 31 | UITabBarItem *tabBarItem = [UITabBarItem appearanceWhenContainedInInstancesOfClasses:@[self]]; 32 | 33 | NSMutableDictionary *dictNormal = [NSMutableDictionary dictionary]; 34 | dictNormal[NSForegroundColorAttributeName] = [UIColor grayColor]; 35 | dictNormal[NSFontAttributeName] = [UIFont systemFontOfSize:11]; 36 | 37 | NSMutableDictionary *dictSelected = [NSMutableDictionary dictionary]; 38 | dictSelected[NSForegroundColorAttributeName] = [UIColor darkGrayColor]; 39 | dictSelected[NSFontAttributeName] = [UIFont systemFontOfSize:11]; 40 | 41 | [tabBarItem setTitleTextAttributes:dictNormal forState:UIControlStateNormal]; 42 | [tabBarItem setTitleTextAttributes:dictSelected forState:UIControlStateSelected]; 43 | } else { 44 | // Fallback on earlier versions 45 | } 46 | 47 | } 48 | 49 | - (void)viewDidLoad { 50 | [super viewDidLoad]; 51 | 52 | [self setUpAllChildVc]; 53 | 54 | //创建自己的tabbar,然后用kvc将自己的tabbar和系统的tabBar替换下 55 | LJTabbar *tabbar = [[LJTabbar alloc] init]; 56 | tabbar.myDelegate = self; 57 | [self setValue:tabbar forKeyPath:@"tabBar"]; 58 | 59 | } 60 | 61 | 62 | #pragma mark - ------------------------------------------------------------------ 63 | #pragma mark - 初始化tabBar上除了中间按钮之外所有的按钮 64 | 65 | - (void)setUpAllChildVc{ 66 | 67 | 68 | LJHomeViewController *HomeVC = [[LJHomeViewController alloc] init]; 69 | [self setUpOneChildVcWithVc:HomeVC Image:@"home_normal" selectedImage:@"home_highlight" title:@"首页"]; 70 | 71 | LJFishViewController *FishVC = [[LJFishViewController alloc] init]; 72 | [self setUpOneChildVcWithVc:FishVC Image:@"fish_normal" selectedImage:@"fish_highlight" title:@"鱼塘"]; 73 | 74 | LJMeassageViewController *MessageVC = [[LJMeassageViewController alloc] init]; 75 | [self setUpOneChildVcWithVc:MessageVC Image:@"message_normal" selectedImage:@"message_highlight" title:@"消息"]; 76 | 77 | LJMineViewController *MineVC = [[LJMineViewController alloc] init]; 78 | [self setUpOneChildVcWithVc:MineVC Image:@"account_normal" selectedImage:@"account_highlight" title:@"我的"]; 79 | 80 | 81 | } 82 | 83 | #pragma mark - 初始化设置tabBar上面单个按钮的方法 84 | 85 | /** 86 | * @author li bo, 16/05/10 87 | * 88 | * 设置单个tabBarButton 89 | * 90 | * @param Vc 每一个按钮对应的控制器 91 | * @param image 每一个按钮对应的普通状态下图片 92 | * @param selectedImage 每一个按钮对应的选中状态下的图片 93 | * @param title 每一个按钮对应的标题 94 | */ 95 | - (void)setUpOneChildVcWithVc:(UIViewController *)Vc Image:(NSString *)image selectedImage:(NSString *)selectedImage title:(NSString *)title 96 | { 97 | LJNaviControllrer *nav = [[LJNaviControllrer alloc] initWithRootViewController:Vc]; 98 | 99 | 100 | Vc.view.backgroundColor = [self randomColor]; 101 | 102 | UIImage *myImage = [UIImage imageNamed:image]; 103 | myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 104 | 105 | //tabBarItem,是系统提供模型,专门负责tabbar上按钮的文字以及图片展示 106 | Vc.tabBarItem.image = myImage; 107 | 108 | UIImage *mySelectedImage = [UIImage imageNamed:selectedImage]; 109 | mySelectedImage = [mySelectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 110 | 111 | Vc.tabBarItem.selectedImage = mySelectedImage; 112 | 113 | Vc.tabBarItem.title = title; 114 | 115 | Vc.navigationItem.title = title; 116 | 117 | [self addChildViewController:nav]; 118 | 119 | } 120 | 121 | 122 | 123 | #pragma mark - ------------------------------------------------------------------ 124 | #pragma mark - LBTabBarDelegate 125 | //点击中间按钮的代理方法 126 | - (void)tabBarPlusBtnClick:(LJTabbar *)tabBar{ 127 | 128 | LJPlusBtnViewController *plusVC = [[LJPlusBtnViewController alloc] init]; 129 | plusVC.view.backgroundColor = [self randomColor]; 130 | LJNaviControllrer *navVc = [[LJNaviControllrer alloc] initWithRootViewController:plusVC]; 131 | [self presentViewController:navVc animated:YES completion:nil]; 132 | 133 | } 134 | 135 | 136 | - (UIColor *)randomColor{ 137 | CGFloat r = arc4random_uniform(256); 138 | CGFloat g = arc4random_uniform(256); 139 | CGFloat b = arc4random_uniform(256); 140 | return [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0]; 141 | } 142 | 143 | 144 | 145 | @end 146 | -------------------------------------------------------------------------------- /doctor/LJTabbarController/Base/LJTabbarController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LJTabbarController.m 3 | // LJTabbarController 4 | // 5 | // Created by 刘鹿杰的mac on 2018/11/29. 6 | // Copyright © 2018年 刘鹿杰的mac. All rights reserved. 7 | // 8 | 9 | #import "LJTabbarController.h" 10 | #import "LJNaviControllrer.h" 11 | #import "LJTabbar.h" 12 | 13 | #import "HomeViewController.h" 14 | #import "C2CViewController.h" 15 | #import "C3CViewController.h" 16 | #import "C4CViewController.h" 17 | #import "MineViewController.h" 18 | 19 | 20 | static NSInteger const ImageCount = 3; // 动画图片个数 21 | #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1] 22 | 23 | @interface LJTabbarController () 24 | 25 | /** 四个tabbar对应的动画图片数组 */ 26 | @property (strong, nonatomic) NSMutableArray *homeImages; // 首页动画图片 27 | @property (strong, nonatomic) NSMutableArray *caseImages; // 医生动画图片 28 | @property (strong, nonatomic) NSMutableArray *shendengImages; // 神灯动画图片 29 | @property (strong, nonatomic) NSMutableArray *shareImages; // 分享动画图片 30 | @property (strong, nonatomic) NSMutableArray *mineImages; // 我的动画图片 31 | @property (strong, nonatomic) NSMutableArray *allImages; /** 所有图片数组 */ 32 | 33 | @end 34 | 35 | @implementation LJTabbarController 36 | 37 | - (void)viewDidLoad { 38 | [super viewDidLoad]; 39 | // 添加图片数组 40 | [self.allImages addObject:self.homeImages]; 41 | [self.allImages addObject:self.caseImages]; 42 | [self.allImages addObject:self.shendengImages]; 43 | [self.allImages addObject:self.shareImages]; 44 | [self.allImages addObject:self.mineImages]; 45 | // 设置代理监听tabBar的点击 46 | self.delegate = self; 47 | // 1.添加所有的子控制器 48 | [self addAllChildViewControllers]; 49 | // 定制化设置Tabbar 50 | [self setValue:[[LJTabbar alloc] init] forKey:@"tabBar"]; 51 | } 52 | 53 | 54 | #pragma mark - 1.添加所有的子控制器 55 | - (void)addAllChildViewControllers{ 56 | [self addOneViewController:[[HomeViewController alloc] init] image:@"home_normal" selectedImage:@"home_sel3" title:@"首页"]; 57 | [self addOneViewController:[[C2CViewController alloc] init] image:@"doctor_normal" selectedImage:@"doctor_sel3" title:@"医生"]; 58 | [self addOneViewController:[[C3CViewController alloc] init] image:@"shendeng_normal" selectedImage:@"shendeng_sel3" title:@"医生神灯"]; 59 | [self addOneViewController:[[C4CViewController alloc] init] image:@"share_normal" selectedImage:@"share_sel3" title:@"分享"]; 60 | [self addOneViewController:[[MineViewController alloc] init] image:@"me_normal" selectedImage:@"me_sel3" title:@"我的"]; 61 | } 62 | 63 | #pragma mark - 1.1.添加一个子控制器的方法 64 | - (void)addOneViewController:(UIViewController *)childViewController image:(NSString *)imageName selectedImage:(NSString *)selectedImageName title:(NSString *)title{ 65 | 66 | LJNaviControllrer *nav = [[LJNaviControllrer alloc] initWithRootViewController:childViewController]; 67 | // 设置图片和文字之间的间 68 | if ([title isEqualToString:@"医生神灯"]) { 69 | nav.tabBarItem.imageInsets = UIEdgeInsetsMake(-10, 0, 10, 0); 70 | nav.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -2); 71 | [self setSelectedTitleTextWithTabbarItem:nav.tabBarItem andSelectedColor:RGBCOLOR(232, 156, 0)]; // 设置琉璃神灯页面的颜色 72 | }else{ 73 | nav.tabBarItem.imageInsets = UIEdgeInsetsMake(-3, 0, 3, 0); 74 | nav.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -2); 75 | [self setSelectedTitleTextWithTabbarItem:nav.tabBarItem andSelectedColor:RGBCOLOR(42,182,124)]; // 设置正常状态下的颜色 76 | } 77 | nav.title = title; 78 | if (imageName.length) { // 图片名有具体 79 | nav.tabBarItem.image = [self imageWithOriRenderingImage:imageName]; 80 | nav.tabBarItem.selectedImage = [self imageWithOriRenderingImage:selectedImageName]; 81 | } 82 | [self addChildViewController:nav]; 83 | } 84 | 85 | #pragma mark - 1.2 设置文字、图片选中的状态效果 86 | -(void)setSelectedTitleTextWithTabbarItem:(UITabBarItem *)tabbarItem andSelectedColor:(UIColor *)color{ 87 | // 2.1 正常状态下的文字 88 | NSMutableDictionary *normalAttr = [NSMutableDictionary dictionary]; 89 | normalAttr[NSForegroundColorAttributeName] = RGBCOLOR(85, 85, 85); 90 | normalAttr[NSFontAttributeName] = [UIFont systemFontOfSize:12]; 91 | // 2.2 选中状态下的文字 92 | NSMutableDictionary *selectedAttr = [NSMutableDictionary dictionary]; 93 | selectedAttr[NSForegroundColorAttributeName] = color; 94 | selectedAttr[NSFontAttributeName] = [UIFont systemFontOfSize:12]; 95 | // 设置对应的颜色 96 | [tabbarItem setTitleTextAttributes:normalAttr forState:UIControlStateNormal]; 97 | [tabbarItem setTitleTextAttributes:selectedAttr forState:UIControlStateSelected]; 98 | } 99 | 100 | 101 | - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 102 | NSInteger index = [tabBarController.childViewControllers indexOfObject:viewController]; // 获取当前选中的控制器位置 103 | UIButton *tabBarBtn = tabBarController.tabBar.subviews[index+1]; 104 | Class clase = NSClassFromString(@"UITabBarSwappableImageView"); 105 | UIImageView *imageView = nil; // 获取对应的ImageView,添加动画。 106 | for (UIView *view in tabBarBtn.subviews) { 107 | if ([view isKindOfClass:clase]) { 108 | imageView = (UIImageView *)view; 109 | } 110 | } 111 | imageView.animationImages = self.allImages[index]; 112 | imageView.animationRepeatCount = 1; 113 | imageView.animationDuration = ImageCount * 0.08; 114 | [imageView startAnimating]; 115 | return YES; 116 | } 117 | 118 | 119 | #pragma mark - ******* 懒加载数据 ************* 120 | 121 | - (NSMutableArray *)allImages { 122 | if (!_allImages) { 123 | _allImages = [NSMutableArray array]; 124 | } 125 | return _allImages; 126 | } 127 | 128 | - (NSMutableArray *)homeImages { 129 | if (!_homeImages) { 130 | _homeImages = [self addImage:@"home_sel"]; 131 | } 132 | return _homeImages; 133 | } 134 | 135 | -(NSMutableArray *)caseImages{ 136 | if (!_caseImages) { 137 | _caseImages = [self addImage:@"doctor_sel"]; 138 | } 139 | return _caseImages; 140 | } 141 | 142 | -(NSMutableArray *)shendengImages{ 143 | if (!_shendengImages) { 144 | _shendengImages = [self addImage:@"shendeng_sel"]; 145 | } 146 | return _shendengImages; 147 | } 148 | 149 | -(NSMutableArray *)shareImages{ 150 | if (!_shareImages) { 151 | _shareImages = [self addImage:@"share_sel"]; 152 | } 153 | return _shareImages; 154 | } 155 | 156 | - (NSMutableArray *)mineImages { 157 | if (!_mineImages) { 158 | _mineImages = [self addImage:@"me_sel"]; 159 | } 160 | return _mineImages; 161 | } 162 | 163 | - (NSMutableArray *)addImage:(NSString *)imageName{ 164 | NSMutableArray *images = [NSMutableArray arrayWithCapacity:ImageCount]; 165 | for (int i = 1; i <= ImageCount; i++) { 166 | NSString *name = [NSString stringWithFormat:@"%@%d", imageName, i]; 167 | UIImage *img = [UIImage imageNamed:name]; 168 | [images addObject:img]; 169 | } 170 | return images; 171 | } 172 | 173 | - (UIImage *)imageWithOriRenderingImage:(NSString *)imageName{ 174 | UIImage *image = [UIImage imageNamed:imageName]; 175 | return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 176 | } 177 | 178 | 179 | @end 180 | -------------------------------------------------------------------------------- /doctor/LJTabbarController.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3D59444621AFEBE60001D2F2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59444521AFEBE60001D2F2 /* AppDelegate.m */; }; 11 | 3D59444E21AFEBEA0001D2F2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D59444D21AFEBEA0001D2F2 /* Assets.xcassets */; }; 12 | 3D59445121AFEBEA0001D2F2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D59444F21AFEBEA0001D2F2 /* LaunchScreen.storyboard */; }; 13 | 3D59445421AFEBEA0001D2F2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59445321AFEBEA0001D2F2 /* main.m */; }; 14 | 3D59445E21AFEBEA0001D2F2 /* LJTabbarControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59445D21AFEBEA0001D2F2 /* LJTabbarControllerTests.m */; }; 15 | 3D59446921AFEBEA0001D2F2 /* LJTabbarControllerUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59446821AFEBEA0001D2F2 /* LJTabbarControllerUITests.m */; }; 16 | 3D59447821AFECEA0001D2F2 /* LJTabbarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59447721AFECEA0001D2F2 /* LJTabbarController.m */; }; 17 | 3D59447B21AFED050001D2F2 /* LJTabbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59447A21AFED050001D2F2 /* LJTabbar.m */; }; 18 | 3D59448621AFEE150001D2F2 /* MineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59447F21AFEE150001D2F2 /* MineViewController.m */; }; 19 | 3D59448721AFEE150001D2F2 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59448221AFEE150001D2F2 /* HomeViewController.m */; }; 20 | 3D59448821AFEE150001D2F2 /* C2CViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59448421AFEE150001D2F2 /* C2CViewController.m */; }; 21 | 3D59448C21AFEF240001D2F2 /* LJNaviControllrer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59448B21AFEF240001D2F2 /* LJNaviControllrer.m */; }; 22 | 3D59448F21AFF0630001D2F2 /* C3CViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59448E21AFF0630001D2F2 /* C3CViewController.m */; }; 23 | 3D59449221AFF0710001D2F2 /* C4CViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59449121AFF0710001D2F2 /* C4CViewController.m */; }; 24 | 3D59449921AFF3810001D2F2 /* UIView+Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D59449721AFF3810001D2F2 /* UIView+Frame.m */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXContainerItemProxy section */ 28 | 3D59445A21AFEBEA0001D2F2 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = 3D59443921AFEBE60001D2F2 /* Project object */; 31 | proxyType = 1; 32 | remoteGlobalIDString = 3D59444021AFEBE60001D2F2; 33 | remoteInfo = LJTabbarController; 34 | }; 35 | 3D59446521AFEBEA0001D2F2 /* PBXContainerItemProxy */ = { 36 | isa = PBXContainerItemProxy; 37 | containerPortal = 3D59443921AFEBE60001D2F2 /* Project object */; 38 | proxyType = 1; 39 | remoteGlobalIDString = 3D59444021AFEBE60001D2F2; 40 | remoteInfo = LJTabbarController; 41 | }; 42 | /* End PBXContainerItemProxy section */ 43 | 44 | /* Begin PBXFileReference section */ 45 | 3D59444121AFEBE60001D2F2 /* LJTabbarController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LJTabbarController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 46 | 3D59444421AFEBE60001D2F2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 47 | 3D59444521AFEBE60001D2F2 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 48 | 3D59444D21AFEBEA0001D2F2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 49 | 3D59445021AFEBEA0001D2F2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 50 | 3D59445221AFEBEA0001D2F2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 51 | 3D59445321AFEBEA0001D2F2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 52 | 3D59445921AFEBEA0001D2F2 /* LJTabbarControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LJTabbarControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 3D59445D21AFEBEA0001D2F2 /* LJTabbarControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJTabbarControllerTests.m; sourceTree = ""; }; 54 | 3D59445F21AFEBEA0001D2F2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 55 | 3D59446421AFEBEA0001D2F2 /* LJTabbarControllerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LJTabbarControllerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | 3D59446821AFEBEA0001D2F2 /* LJTabbarControllerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJTabbarControllerUITests.m; sourceTree = ""; }; 57 | 3D59446A21AFEBEA0001D2F2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58 | 3D59447621AFECEA0001D2F2 /* LJTabbarController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJTabbarController.h; sourceTree = ""; }; 59 | 3D59447721AFECEA0001D2F2 /* LJTabbarController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJTabbarController.m; sourceTree = ""; }; 60 | 3D59447921AFED050001D2F2 /* LJTabbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJTabbar.h; sourceTree = ""; }; 61 | 3D59447A21AFED050001D2F2 /* LJTabbar.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJTabbar.m; sourceTree = ""; }; 62 | 3D59447E21AFEE150001D2F2 /* C2CViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = C2CViewController.h; sourceTree = ""; }; 63 | 3D59447F21AFEE150001D2F2 /* MineViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineViewController.m; sourceTree = ""; }; 64 | 3D59448021AFEE150001D2F2 /* MineViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineViewController.h; sourceTree = ""; }; 65 | 3D59448221AFEE150001D2F2 /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = ""; }; 66 | 3D59448321AFEE150001D2F2 /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = ""; }; 67 | 3D59448421AFEE150001D2F2 /* C2CViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = C2CViewController.m; sourceTree = ""; }; 68 | 3D59448A21AFEF240001D2F2 /* LJNaviControllrer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJNaviControllrer.h; sourceTree = ""; }; 69 | 3D59448B21AFEF240001D2F2 /* LJNaviControllrer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJNaviControllrer.m; sourceTree = ""; }; 70 | 3D59448D21AFF0630001D2F2 /* C3CViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = C3CViewController.h; sourceTree = ""; }; 71 | 3D59448E21AFF0630001D2F2 /* C3CViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = C3CViewController.m; sourceTree = ""; }; 72 | 3D59449021AFF0710001D2F2 /* C4CViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = C4CViewController.h; sourceTree = ""; }; 73 | 3D59449121AFF0710001D2F2 /* C4CViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = C4CViewController.m; sourceTree = ""; }; 74 | 3D59449721AFF3810001D2F2 /* UIView+Frame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Frame.m"; sourceTree = ""; }; 75 | 3D59449821AFF3810001D2F2 /* UIView+Frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Frame.h"; sourceTree = ""; }; 76 | /* End PBXFileReference section */ 77 | 78 | /* Begin PBXFrameworksBuildPhase section */ 79 | 3D59443E21AFEBE60001D2F2 /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | 3D59445621AFEBEA0001D2F2 /* Frameworks */ = { 87 | isa = PBXFrameworksBuildPhase; 88 | buildActionMask = 2147483647; 89 | files = ( 90 | ); 91 | runOnlyForDeploymentPostprocessing = 0; 92 | }; 93 | 3D59446121AFEBEA0001D2F2 /* Frameworks */ = { 94 | isa = PBXFrameworksBuildPhase; 95 | buildActionMask = 2147483647; 96 | files = ( 97 | ); 98 | runOnlyForDeploymentPostprocessing = 0; 99 | }; 100 | /* End PBXFrameworksBuildPhase section */ 101 | 102 | /* Begin PBXGroup section */ 103 | 3D59443821AFEBE60001D2F2 = { 104 | isa = PBXGroup; 105 | children = ( 106 | 3D59444321AFEBE60001D2F2 /* LJTabbarController */, 107 | 3D59445C21AFEBEA0001D2F2 /* LJTabbarControllerTests */, 108 | 3D59446721AFEBEA0001D2F2 /* LJTabbarControllerUITests */, 109 | 3D59444221AFEBE60001D2F2 /* Products */, 110 | ); 111 | sourceTree = ""; 112 | }; 113 | 3D59444221AFEBE60001D2F2 /* Products */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 3D59444121AFEBE60001D2F2 /* LJTabbarController.app */, 117 | 3D59445921AFEBEA0001D2F2 /* LJTabbarControllerTests.xctest */, 118 | 3D59446421AFEBEA0001D2F2 /* LJTabbarControllerUITests.xctest */, 119 | ); 120 | name = Products; 121 | sourceTree = ""; 122 | }; 123 | 3D59444321AFEBE60001D2F2 /* LJTabbarController */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | 3D59449621AFF3810001D2F2 /* UIView+Frame */, 127 | 3D59447D21AFEDE50001D2F2 /* Controllers */, 128 | 3D59447C21AFED8D0001D2F2 /* Base */, 129 | 3D59444421AFEBE60001D2F2 /* AppDelegate.h */, 130 | 3D59444521AFEBE60001D2F2 /* AppDelegate.m */, 131 | 3D59444D21AFEBEA0001D2F2 /* Assets.xcassets */, 132 | 3D59444F21AFEBEA0001D2F2 /* LaunchScreen.storyboard */, 133 | 3D59445221AFEBEA0001D2F2 /* Info.plist */, 134 | 3D59445321AFEBEA0001D2F2 /* main.m */, 135 | ); 136 | path = LJTabbarController; 137 | sourceTree = ""; 138 | }; 139 | 3D59445C21AFEBEA0001D2F2 /* LJTabbarControllerTests */ = { 140 | isa = PBXGroup; 141 | children = ( 142 | 3D59445D21AFEBEA0001D2F2 /* LJTabbarControllerTests.m */, 143 | 3D59445F21AFEBEA0001D2F2 /* Info.plist */, 144 | ); 145 | path = LJTabbarControllerTests; 146 | sourceTree = ""; 147 | }; 148 | 3D59446721AFEBEA0001D2F2 /* LJTabbarControllerUITests */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 3D59446821AFEBEA0001D2F2 /* LJTabbarControllerUITests.m */, 152 | 3D59446A21AFEBEA0001D2F2 /* Info.plist */, 153 | ); 154 | path = LJTabbarControllerUITests; 155 | sourceTree = ""; 156 | }; 157 | 3D59447C21AFED8D0001D2F2 /* Base */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 3D59447621AFECEA0001D2F2 /* LJTabbarController.h */, 161 | 3D59447721AFECEA0001D2F2 /* LJTabbarController.m */, 162 | 3D59448A21AFEF240001D2F2 /* LJNaviControllrer.h */, 163 | 3D59448B21AFEF240001D2F2 /* LJNaviControllrer.m */, 164 | 3D59447921AFED050001D2F2 /* LJTabbar.h */, 165 | 3D59447A21AFED050001D2F2 /* LJTabbar.m */, 166 | ); 167 | path = Base; 168 | sourceTree = ""; 169 | }; 170 | 3D59447D21AFEDE50001D2F2 /* Controllers */ = { 171 | isa = PBXGroup; 172 | children = ( 173 | 3D59448321AFEE150001D2F2 /* HomeViewController.h */, 174 | 3D59448221AFEE150001D2F2 /* HomeViewController.m */, 175 | 3D59447E21AFEE150001D2F2 /* C2CViewController.h */, 176 | 3D59448421AFEE150001D2F2 /* C2CViewController.m */, 177 | 3D59448D21AFF0630001D2F2 /* C3CViewController.h */, 178 | 3D59448E21AFF0630001D2F2 /* C3CViewController.m */, 179 | 3D59449021AFF0710001D2F2 /* C4CViewController.h */, 180 | 3D59449121AFF0710001D2F2 /* C4CViewController.m */, 181 | 3D59448021AFEE150001D2F2 /* MineViewController.h */, 182 | 3D59447F21AFEE150001D2F2 /* MineViewController.m */, 183 | ); 184 | path = Controllers; 185 | sourceTree = ""; 186 | }; 187 | 3D59449621AFF3810001D2F2 /* UIView+Frame */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | 3D59449821AFF3810001D2F2 /* UIView+Frame.h */, 191 | 3D59449721AFF3810001D2F2 /* UIView+Frame.m */, 192 | ); 193 | path = "UIView+Frame"; 194 | sourceTree = ""; 195 | }; 196 | /* End PBXGroup section */ 197 | 198 | /* Begin PBXNativeTarget section */ 199 | 3D59444021AFEBE60001D2F2 /* LJTabbarController */ = { 200 | isa = PBXNativeTarget; 201 | buildConfigurationList = 3D59446D21AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarController" */; 202 | buildPhases = ( 203 | 3D59443D21AFEBE60001D2F2 /* Sources */, 204 | 3D59443E21AFEBE60001D2F2 /* Frameworks */, 205 | 3D59443F21AFEBE60001D2F2 /* Resources */, 206 | ); 207 | buildRules = ( 208 | ); 209 | dependencies = ( 210 | ); 211 | name = LJTabbarController; 212 | productName = LJTabbarController; 213 | productReference = 3D59444121AFEBE60001D2F2 /* LJTabbarController.app */; 214 | productType = "com.apple.product-type.application"; 215 | }; 216 | 3D59445821AFEBEA0001D2F2 /* LJTabbarControllerTests */ = { 217 | isa = PBXNativeTarget; 218 | buildConfigurationList = 3D59447021AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarControllerTests" */; 219 | buildPhases = ( 220 | 3D59445521AFEBEA0001D2F2 /* Sources */, 221 | 3D59445621AFEBEA0001D2F2 /* Frameworks */, 222 | 3D59445721AFEBEA0001D2F2 /* Resources */, 223 | ); 224 | buildRules = ( 225 | ); 226 | dependencies = ( 227 | 3D59445B21AFEBEA0001D2F2 /* PBXTargetDependency */, 228 | ); 229 | name = LJTabbarControllerTests; 230 | productName = LJTabbarControllerTests; 231 | productReference = 3D59445921AFEBEA0001D2F2 /* LJTabbarControllerTests.xctest */; 232 | productType = "com.apple.product-type.bundle.unit-test"; 233 | }; 234 | 3D59446321AFEBEA0001D2F2 /* LJTabbarControllerUITests */ = { 235 | isa = PBXNativeTarget; 236 | buildConfigurationList = 3D59447321AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarControllerUITests" */; 237 | buildPhases = ( 238 | 3D59446021AFEBEA0001D2F2 /* Sources */, 239 | 3D59446121AFEBEA0001D2F2 /* Frameworks */, 240 | 3D59446221AFEBEA0001D2F2 /* Resources */, 241 | ); 242 | buildRules = ( 243 | ); 244 | dependencies = ( 245 | 3D59446621AFEBEA0001D2F2 /* PBXTargetDependency */, 246 | ); 247 | name = LJTabbarControllerUITests; 248 | productName = LJTabbarControllerUITests; 249 | productReference = 3D59446421AFEBEA0001D2F2 /* LJTabbarControllerUITests.xctest */; 250 | productType = "com.apple.product-type.bundle.ui-testing"; 251 | }; 252 | /* End PBXNativeTarget section */ 253 | 254 | /* Begin PBXProject section */ 255 | 3D59443921AFEBE60001D2F2 /* Project object */ = { 256 | isa = PBXProject; 257 | attributes = { 258 | LastUpgradeCheck = 0940; 259 | ORGANIZATIONNAME = "刘鹿杰的mac"; 260 | TargetAttributes = { 261 | 3D59444021AFEBE60001D2F2 = { 262 | CreatedOnToolsVersion = 9.4.1; 263 | }; 264 | 3D59445821AFEBEA0001D2F2 = { 265 | CreatedOnToolsVersion = 9.4.1; 266 | TestTargetID = 3D59444021AFEBE60001D2F2; 267 | }; 268 | 3D59446321AFEBEA0001D2F2 = { 269 | CreatedOnToolsVersion = 9.4.1; 270 | TestTargetID = 3D59444021AFEBE60001D2F2; 271 | }; 272 | }; 273 | }; 274 | buildConfigurationList = 3D59443C21AFEBE60001D2F2 /* Build configuration list for PBXProject "LJTabbarController" */; 275 | compatibilityVersion = "Xcode 9.3"; 276 | developmentRegion = en; 277 | hasScannedForEncodings = 0; 278 | knownRegions = ( 279 | en, 280 | Base, 281 | ); 282 | mainGroup = 3D59443821AFEBE60001D2F2; 283 | productRefGroup = 3D59444221AFEBE60001D2F2 /* Products */; 284 | projectDirPath = ""; 285 | projectRoot = ""; 286 | targets = ( 287 | 3D59444021AFEBE60001D2F2 /* LJTabbarController */, 288 | 3D59445821AFEBEA0001D2F2 /* LJTabbarControllerTests */, 289 | 3D59446321AFEBEA0001D2F2 /* LJTabbarControllerUITests */, 290 | ); 291 | }; 292 | /* End PBXProject section */ 293 | 294 | /* Begin PBXResourcesBuildPhase section */ 295 | 3D59443F21AFEBE60001D2F2 /* Resources */ = { 296 | isa = PBXResourcesBuildPhase; 297 | buildActionMask = 2147483647; 298 | files = ( 299 | 3D59445121AFEBEA0001D2F2 /* LaunchScreen.storyboard in Resources */, 300 | 3D59444E21AFEBEA0001D2F2 /* Assets.xcassets in Resources */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | 3D59445721AFEBEA0001D2F2 /* Resources */ = { 305 | isa = PBXResourcesBuildPhase; 306 | buildActionMask = 2147483647; 307 | files = ( 308 | ); 309 | runOnlyForDeploymentPostprocessing = 0; 310 | }; 311 | 3D59446221AFEBEA0001D2F2 /* Resources */ = { 312 | isa = PBXResourcesBuildPhase; 313 | buildActionMask = 2147483647; 314 | files = ( 315 | ); 316 | runOnlyForDeploymentPostprocessing = 0; 317 | }; 318 | /* End PBXResourcesBuildPhase section */ 319 | 320 | /* Begin PBXSourcesBuildPhase section */ 321 | 3D59443D21AFEBE60001D2F2 /* Sources */ = { 322 | isa = PBXSourcesBuildPhase; 323 | buildActionMask = 2147483647; 324 | files = ( 325 | 3D59449921AFF3810001D2F2 /* UIView+Frame.m in Sources */, 326 | 3D59448F21AFF0630001D2F2 /* C3CViewController.m in Sources */, 327 | 3D59447821AFECEA0001D2F2 /* LJTabbarController.m in Sources */, 328 | 3D59445421AFEBEA0001D2F2 /* main.m in Sources */, 329 | 3D59448621AFEE150001D2F2 /* MineViewController.m in Sources */, 330 | 3D59449221AFF0710001D2F2 /* C4CViewController.m in Sources */, 331 | 3D59447B21AFED050001D2F2 /* LJTabbar.m in Sources */, 332 | 3D59448821AFEE150001D2F2 /* C2CViewController.m in Sources */, 333 | 3D59448721AFEE150001D2F2 /* HomeViewController.m in Sources */, 334 | 3D59448C21AFEF240001D2F2 /* LJNaviControllrer.m in Sources */, 335 | 3D59444621AFEBE60001D2F2 /* AppDelegate.m in Sources */, 336 | ); 337 | runOnlyForDeploymentPostprocessing = 0; 338 | }; 339 | 3D59445521AFEBEA0001D2F2 /* Sources */ = { 340 | isa = PBXSourcesBuildPhase; 341 | buildActionMask = 2147483647; 342 | files = ( 343 | 3D59445E21AFEBEA0001D2F2 /* LJTabbarControllerTests.m in Sources */, 344 | ); 345 | runOnlyForDeploymentPostprocessing = 0; 346 | }; 347 | 3D59446021AFEBEA0001D2F2 /* Sources */ = { 348 | isa = PBXSourcesBuildPhase; 349 | buildActionMask = 2147483647; 350 | files = ( 351 | 3D59446921AFEBEA0001D2F2 /* LJTabbarControllerUITests.m in Sources */, 352 | ); 353 | runOnlyForDeploymentPostprocessing = 0; 354 | }; 355 | /* End PBXSourcesBuildPhase section */ 356 | 357 | /* Begin PBXTargetDependency section */ 358 | 3D59445B21AFEBEA0001D2F2 /* PBXTargetDependency */ = { 359 | isa = PBXTargetDependency; 360 | target = 3D59444021AFEBE60001D2F2 /* LJTabbarController */; 361 | targetProxy = 3D59445A21AFEBEA0001D2F2 /* PBXContainerItemProxy */; 362 | }; 363 | 3D59446621AFEBEA0001D2F2 /* PBXTargetDependency */ = { 364 | isa = PBXTargetDependency; 365 | target = 3D59444021AFEBE60001D2F2 /* LJTabbarController */; 366 | targetProxy = 3D59446521AFEBEA0001D2F2 /* PBXContainerItemProxy */; 367 | }; 368 | /* End PBXTargetDependency section */ 369 | 370 | /* Begin PBXVariantGroup section */ 371 | 3D59444F21AFEBEA0001D2F2 /* LaunchScreen.storyboard */ = { 372 | isa = PBXVariantGroup; 373 | children = ( 374 | 3D59445021AFEBEA0001D2F2 /* Base */, 375 | ); 376 | name = LaunchScreen.storyboard; 377 | sourceTree = ""; 378 | }; 379 | /* End PBXVariantGroup section */ 380 | 381 | /* Begin XCBuildConfiguration section */ 382 | 3D59446B21AFEBEA0001D2F2 /* Debug */ = { 383 | isa = XCBuildConfiguration; 384 | buildSettings = { 385 | ALWAYS_SEARCH_USER_PATHS = NO; 386 | CLANG_ANALYZER_NONNULL = YES; 387 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 388 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 389 | CLANG_CXX_LIBRARY = "libc++"; 390 | CLANG_ENABLE_MODULES = YES; 391 | CLANG_ENABLE_OBJC_ARC = YES; 392 | CLANG_ENABLE_OBJC_WEAK = YES; 393 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 394 | CLANG_WARN_BOOL_CONVERSION = YES; 395 | CLANG_WARN_COMMA = YES; 396 | CLANG_WARN_CONSTANT_CONVERSION = YES; 397 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 398 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 399 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 400 | CLANG_WARN_EMPTY_BODY = YES; 401 | CLANG_WARN_ENUM_CONVERSION = YES; 402 | CLANG_WARN_INFINITE_RECURSION = YES; 403 | CLANG_WARN_INT_CONVERSION = YES; 404 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 405 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 406 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 407 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 408 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 409 | CLANG_WARN_STRICT_PROTOTYPES = YES; 410 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 411 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 412 | CLANG_WARN_UNREACHABLE_CODE = YES; 413 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 414 | CODE_SIGN_IDENTITY = "iPhone Developer"; 415 | COPY_PHASE_STRIP = NO; 416 | DEBUG_INFORMATION_FORMAT = dwarf; 417 | ENABLE_STRICT_OBJC_MSGSEND = YES; 418 | ENABLE_TESTABILITY = YES; 419 | GCC_C_LANGUAGE_STANDARD = gnu11; 420 | GCC_DYNAMIC_NO_PIC = NO; 421 | GCC_NO_COMMON_BLOCKS = YES; 422 | GCC_OPTIMIZATION_LEVEL = 0; 423 | GCC_PREPROCESSOR_DEFINITIONS = ( 424 | "DEBUG=1", 425 | "$(inherited)", 426 | ); 427 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 428 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 429 | GCC_WARN_UNDECLARED_SELECTOR = YES; 430 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 431 | GCC_WARN_UNUSED_FUNCTION = YES; 432 | GCC_WARN_UNUSED_VARIABLE = YES; 433 | IPHONEOS_DEPLOYMENT_TARGET = 11.4; 434 | MTL_ENABLE_DEBUG_INFO = YES; 435 | ONLY_ACTIVE_ARCH = YES; 436 | SDKROOT = iphoneos; 437 | }; 438 | name = Debug; 439 | }; 440 | 3D59446C21AFEBEA0001D2F2 /* Release */ = { 441 | isa = XCBuildConfiguration; 442 | buildSettings = { 443 | ALWAYS_SEARCH_USER_PATHS = NO; 444 | CLANG_ANALYZER_NONNULL = YES; 445 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 446 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 447 | CLANG_CXX_LIBRARY = "libc++"; 448 | CLANG_ENABLE_MODULES = YES; 449 | CLANG_ENABLE_OBJC_ARC = YES; 450 | CLANG_ENABLE_OBJC_WEAK = YES; 451 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 452 | CLANG_WARN_BOOL_CONVERSION = YES; 453 | CLANG_WARN_COMMA = YES; 454 | CLANG_WARN_CONSTANT_CONVERSION = YES; 455 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 456 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 457 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 458 | CLANG_WARN_EMPTY_BODY = YES; 459 | CLANG_WARN_ENUM_CONVERSION = YES; 460 | CLANG_WARN_INFINITE_RECURSION = YES; 461 | CLANG_WARN_INT_CONVERSION = YES; 462 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 463 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 464 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 465 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 466 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 467 | CLANG_WARN_STRICT_PROTOTYPES = YES; 468 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 469 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 470 | CLANG_WARN_UNREACHABLE_CODE = YES; 471 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 472 | CODE_SIGN_IDENTITY = "iPhone Developer"; 473 | COPY_PHASE_STRIP = NO; 474 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 475 | ENABLE_NS_ASSERTIONS = NO; 476 | ENABLE_STRICT_OBJC_MSGSEND = YES; 477 | GCC_C_LANGUAGE_STANDARD = gnu11; 478 | GCC_NO_COMMON_BLOCKS = YES; 479 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 480 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 481 | GCC_WARN_UNDECLARED_SELECTOR = YES; 482 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 483 | GCC_WARN_UNUSED_FUNCTION = YES; 484 | GCC_WARN_UNUSED_VARIABLE = YES; 485 | IPHONEOS_DEPLOYMENT_TARGET = 11.4; 486 | MTL_ENABLE_DEBUG_INFO = NO; 487 | SDKROOT = iphoneos; 488 | VALIDATE_PRODUCT = YES; 489 | }; 490 | name = Release; 491 | }; 492 | 3D59446E21AFEBEA0001D2F2 /* Debug */ = { 493 | isa = XCBuildConfiguration; 494 | buildSettings = { 495 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 496 | CODE_SIGN_STYLE = Automatic; 497 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 498 | INFOPLIST_FILE = LJTabbarController/Info.plist; 499 | LD_RUNPATH_SEARCH_PATHS = ( 500 | "$(inherited)", 501 | "@executable_path/Frameworks", 502 | ); 503 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarController; 504 | PRODUCT_NAME = "$(TARGET_NAME)"; 505 | TARGETED_DEVICE_FAMILY = "1,2"; 506 | }; 507 | name = Debug; 508 | }; 509 | 3D59446F21AFEBEA0001D2F2 /* Release */ = { 510 | isa = XCBuildConfiguration; 511 | buildSettings = { 512 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 513 | CODE_SIGN_STYLE = Automatic; 514 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 515 | INFOPLIST_FILE = LJTabbarController/Info.plist; 516 | LD_RUNPATH_SEARCH_PATHS = ( 517 | "$(inherited)", 518 | "@executable_path/Frameworks", 519 | ); 520 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarController; 521 | PRODUCT_NAME = "$(TARGET_NAME)"; 522 | TARGETED_DEVICE_FAMILY = "1,2"; 523 | }; 524 | name = Release; 525 | }; 526 | 3D59447121AFEBEA0001D2F2 /* Debug */ = { 527 | isa = XCBuildConfiguration; 528 | buildSettings = { 529 | BUNDLE_LOADER = "$(TEST_HOST)"; 530 | CODE_SIGN_STYLE = Automatic; 531 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 532 | INFOPLIST_FILE = LJTabbarControllerTests/Info.plist; 533 | LD_RUNPATH_SEARCH_PATHS = ( 534 | "$(inherited)", 535 | "@executable_path/Frameworks", 536 | "@loader_path/Frameworks", 537 | ); 538 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarControllerTests; 539 | PRODUCT_NAME = "$(TARGET_NAME)"; 540 | TARGETED_DEVICE_FAMILY = "1,2"; 541 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LJTabbarController.app/LJTabbarController"; 542 | }; 543 | name = Debug; 544 | }; 545 | 3D59447221AFEBEA0001D2F2 /* Release */ = { 546 | isa = XCBuildConfiguration; 547 | buildSettings = { 548 | BUNDLE_LOADER = "$(TEST_HOST)"; 549 | CODE_SIGN_STYLE = Automatic; 550 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 551 | INFOPLIST_FILE = LJTabbarControllerTests/Info.plist; 552 | LD_RUNPATH_SEARCH_PATHS = ( 553 | "$(inherited)", 554 | "@executable_path/Frameworks", 555 | "@loader_path/Frameworks", 556 | ); 557 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarControllerTests; 558 | PRODUCT_NAME = "$(TARGET_NAME)"; 559 | TARGETED_DEVICE_FAMILY = "1,2"; 560 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LJTabbarController.app/LJTabbarController"; 561 | }; 562 | name = Release; 563 | }; 564 | 3D59447421AFEBEA0001D2F2 /* Debug */ = { 565 | isa = XCBuildConfiguration; 566 | buildSettings = { 567 | CODE_SIGN_STYLE = Automatic; 568 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 569 | INFOPLIST_FILE = LJTabbarControllerUITests/Info.plist; 570 | LD_RUNPATH_SEARCH_PATHS = ( 571 | "$(inherited)", 572 | "@executable_path/Frameworks", 573 | "@loader_path/Frameworks", 574 | ); 575 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarControllerUITests; 576 | PRODUCT_NAME = "$(TARGET_NAME)"; 577 | TARGETED_DEVICE_FAMILY = "1,2"; 578 | TEST_TARGET_NAME = LJTabbarController; 579 | }; 580 | name = Debug; 581 | }; 582 | 3D59447521AFEBEA0001D2F2 /* Release */ = { 583 | isa = XCBuildConfiguration; 584 | buildSettings = { 585 | CODE_SIGN_STYLE = Automatic; 586 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 587 | INFOPLIST_FILE = LJTabbarControllerUITests/Info.plist; 588 | LD_RUNPATH_SEARCH_PATHS = ( 589 | "$(inherited)", 590 | "@executable_path/Frameworks", 591 | "@loader_path/Frameworks", 592 | ); 593 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.LJTabbarControllerUITests; 594 | PRODUCT_NAME = "$(TARGET_NAME)"; 595 | TARGETED_DEVICE_FAMILY = "1,2"; 596 | TEST_TARGET_NAME = LJTabbarController; 597 | }; 598 | name = Release; 599 | }; 600 | /* End XCBuildConfiguration section */ 601 | 602 | /* Begin XCConfigurationList section */ 603 | 3D59443C21AFEBE60001D2F2 /* Build configuration list for PBXProject "LJTabbarController" */ = { 604 | isa = XCConfigurationList; 605 | buildConfigurations = ( 606 | 3D59446B21AFEBEA0001D2F2 /* Debug */, 607 | 3D59446C21AFEBEA0001D2F2 /* Release */, 608 | ); 609 | defaultConfigurationIsVisible = 0; 610 | defaultConfigurationName = Release; 611 | }; 612 | 3D59446D21AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarController" */ = { 613 | isa = XCConfigurationList; 614 | buildConfigurations = ( 615 | 3D59446E21AFEBEA0001D2F2 /* Debug */, 616 | 3D59446F21AFEBEA0001D2F2 /* Release */, 617 | ); 618 | defaultConfigurationIsVisible = 0; 619 | defaultConfigurationName = Release; 620 | }; 621 | 3D59447021AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarControllerTests" */ = { 622 | isa = XCConfigurationList; 623 | buildConfigurations = ( 624 | 3D59447121AFEBEA0001D2F2 /* Debug */, 625 | 3D59447221AFEBEA0001D2F2 /* Release */, 626 | ); 627 | defaultConfigurationIsVisible = 0; 628 | defaultConfigurationName = Release; 629 | }; 630 | 3D59447321AFEBEA0001D2F2 /* Build configuration list for PBXNativeTarget "LJTabbarControllerUITests" */ = { 631 | isa = XCConfigurationList; 632 | buildConfigurations = ( 633 | 3D59447421AFEBEA0001D2F2 /* Debug */, 634 | 3D59447521AFEBEA0001D2F2 /* Release */, 635 | ); 636 | defaultConfigurationIsVisible = 0; 637 | defaultConfigurationName = Release; 638 | }; 639 | /* End XCConfigurationList section */ 640 | }; 641 | rootObject = 3D59443921AFEBE60001D2F2 /* Project object */; 642 | } 643 | -------------------------------------------------------------------------------- /xianyu/TabBarController.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3D8537D721B141650078EF4E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8537D621B141650078EF4E /* AppDelegate.m */; }; 11 | 3D8537DA21B141660078EF4E /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8537D921B141660078EF4E /* ViewController.m */; }; 12 | 3D8537DD21B141660078EF4E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D8537DB21B141660078EF4E /* Main.storyboard */; }; 13 | 3D8537DF21B141660078EF4E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D8537DE21B141660078EF4E /* Assets.xcassets */; }; 14 | 3D8537E221B141660078EF4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D8537E021B141660078EF4E /* LaunchScreen.storyboard */; }; 15 | 3D8537E521B141660078EF4E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8537E421B141660078EF4E /* main.m */; }; 16 | 3D8537EF21B141660078EF4E /* TabBarControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8537EE21B141660078EF4E /* TabBarControllerTests.m */; }; 17 | 3D8537FA21B141660078EF4E /* TabBarControllerUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D8537F921B141660078EF4E /* TabBarControllerUITests.m */; }; 18 | 3D85381121B151860078EF4E /* LJTabbarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85380C21B151850078EF4E /* LJTabbarController.m */; }; 19 | 3D85381221B151860078EF4E /* LJTabbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85380E21B151850078EF4E /* LJTabbar.m */; }; 20 | 3D85381321B151860078EF4E /* LJNaviControllrer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85381021B151860078EF4E /* LJNaviControllrer.m */; }; 21 | 3D85381721B153C40078EF4E /* UIView+Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85381521B153C40078EF4E /* UIView+Frame.m */; }; 22 | 3D85381A21B154750078EF4E /* LJHomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85381921B154750078EF4E /* LJHomeViewController.m */; }; 23 | 3D85381D21B154B30078EF4E /* LJFishViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85381C21B154B30078EF4E /* LJFishViewController.m */; }; 24 | 3D85382021B154C70078EF4E /* LJMeassageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85381F21B154C70078EF4E /* LJMeassageViewController.m */; }; 25 | 3D85382321B154DE0078EF4E /* LJMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D85382221B154DD0078EF4E /* LJMineViewController.m */; }; 26 | 3D94490121B4E68D00070BBB /* UIImage+Image.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D94490021B4E68D00070BBB /* UIImage+Image.m */; }; 27 | 3D94490421B4E7DF00070BBB /* LJPlusBtnViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D94490321B4E7DF00070BBB /* LJPlusBtnViewController.m */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXContainerItemProxy section */ 31 | 3D8537EB21B141660078EF4E /* PBXContainerItemProxy */ = { 32 | isa = PBXContainerItemProxy; 33 | containerPortal = 3D8537CA21B141650078EF4E /* Project object */; 34 | proxyType = 1; 35 | remoteGlobalIDString = 3D8537D121B141650078EF4E; 36 | remoteInfo = TabBarController; 37 | }; 38 | 3D8537F621B141660078EF4E /* PBXContainerItemProxy */ = { 39 | isa = PBXContainerItemProxy; 40 | containerPortal = 3D8537CA21B141650078EF4E /* Project object */; 41 | proxyType = 1; 42 | remoteGlobalIDString = 3D8537D121B141650078EF4E; 43 | remoteInfo = TabBarController; 44 | }; 45 | /* End PBXContainerItemProxy section */ 46 | 47 | /* Begin PBXFileReference section */ 48 | 3D8537D221B141650078EF4E /* TabBarController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabBarController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | 3D8537D521B141650078EF4E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 50 | 3D8537D621B141650078EF4E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 51 | 3D8537D821B141650078EF4E /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 52 | 3D8537D921B141660078EF4E /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 53 | 3D8537DC21B141660078EF4E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 54 | 3D8537DE21B141660078EF4E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 55 | 3D8537E121B141660078EF4E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 56 | 3D8537E321B141660078EF4E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 57 | 3D8537E421B141660078EF4E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 58 | 3D8537EA21B141660078EF4E /* TabBarControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TabBarControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | 3D8537EE21B141660078EF4E /* TabBarControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TabBarControllerTests.m; sourceTree = ""; }; 60 | 3D8537F021B141660078EF4E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 61 | 3D8537F521B141660078EF4E /* TabBarControllerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TabBarControllerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | 3D8537F921B141660078EF4E /* TabBarControllerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TabBarControllerUITests.m; sourceTree = ""; }; 63 | 3D8537FB21B141660078EF4E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 64 | 3D85380B21B151850078EF4E /* LJNaviControllrer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LJNaviControllrer.h; sourceTree = ""; }; 65 | 3D85380C21B151850078EF4E /* LJTabbarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LJTabbarController.m; sourceTree = ""; }; 66 | 3D85380D21B151850078EF4E /* LJTabbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LJTabbar.h; sourceTree = ""; }; 67 | 3D85380E21B151850078EF4E /* LJTabbar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LJTabbar.m; sourceTree = ""; }; 68 | 3D85380F21B151860078EF4E /* LJTabbarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LJTabbarController.h; sourceTree = ""; }; 69 | 3D85381021B151860078EF4E /* LJNaviControllrer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LJNaviControllrer.m; sourceTree = ""; }; 70 | 3D85381521B153C40078EF4E /* UIView+Frame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Frame.m"; sourceTree = ""; }; 71 | 3D85381621B153C40078EF4E /* UIView+Frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Frame.h"; sourceTree = ""; }; 72 | 3D85381821B154750078EF4E /* LJHomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJHomeViewController.h; sourceTree = ""; }; 73 | 3D85381921B154750078EF4E /* LJHomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJHomeViewController.m; sourceTree = ""; }; 74 | 3D85381B21B154B30078EF4E /* LJFishViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJFishViewController.h; sourceTree = ""; }; 75 | 3D85381C21B154B30078EF4E /* LJFishViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJFishViewController.m; sourceTree = ""; }; 76 | 3D85381E21B154C70078EF4E /* LJMeassageViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJMeassageViewController.h; sourceTree = ""; }; 77 | 3D85381F21B154C70078EF4E /* LJMeassageViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJMeassageViewController.m; sourceTree = ""; }; 78 | 3D85382121B154DD0078EF4E /* LJMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJMineViewController.h; sourceTree = ""; }; 79 | 3D85382221B154DD0078EF4E /* LJMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJMineViewController.m; sourceTree = ""; }; 80 | 3D9448FF21B4E68D00070BBB /* UIImage+Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIImage+Image.h"; sourceTree = ""; }; 81 | 3D94490021B4E68D00070BBB /* UIImage+Image.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Image.m"; sourceTree = ""; }; 82 | 3D94490221B4E7DF00070BBB /* LJPlusBtnViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LJPlusBtnViewController.h; sourceTree = ""; }; 83 | 3D94490321B4E7DF00070BBB /* LJPlusBtnViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LJPlusBtnViewController.m; sourceTree = ""; }; 84 | /* End PBXFileReference section */ 85 | 86 | /* Begin PBXFrameworksBuildPhase section */ 87 | 3D8537CF21B141650078EF4E /* Frameworks */ = { 88 | isa = PBXFrameworksBuildPhase; 89 | buildActionMask = 2147483647; 90 | files = ( 91 | ); 92 | runOnlyForDeploymentPostprocessing = 0; 93 | }; 94 | 3D8537E721B141660078EF4E /* Frameworks */ = { 95 | isa = PBXFrameworksBuildPhase; 96 | buildActionMask = 2147483647; 97 | files = ( 98 | ); 99 | runOnlyForDeploymentPostprocessing = 0; 100 | }; 101 | 3D8537F221B141660078EF4E /* Frameworks */ = { 102 | isa = PBXFrameworksBuildPhase; 103 | buildActionMask = 2147483647; 104 | files = ( 105 | ); 106 | runOnlyForDeploymentPostprocessing = 0; 107 | }; 108 | /* End PBXFrameworksBuildPhase section */ 109 | 110 | /* Begin PBXGroup section */ 111 | 3D8537C921B141650078EF4E = { 112 | isa = PBXGroup; 113 | children = ( 114 | 3D8537D421B141650078EF4E /* TabBarController */, 115 | 3D8537ED21B141660078EF4E /* TabBarControllerTests */, 116 | 3D8537F821B141660078EF4E /* TabBarControllerUITests */, 117 | 3D8537D321B141650078EF4E /* Products */, 118 | ); 119 | sourceTree = ""; 120 | }; 121 | 3D8537D321B141650078EF4E /* Products */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 3D8537D221B141650078EF4E /* TabBarController.app */, 125 | 3D8537EA21B141660078EF4E /* TabBarControllerTests.xctest */, 126 | 3D8537F521B141660078EF4E /* TabBarControllerUITests.xctest */, 127 | ); 128 | name = Products; 129 | sourceTree = ""; 130 | }; 131 | 3D8537D421B141650078EF4E /* TabBarController */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 3D85381421B153C40078EF4E /* UIView+Frame */, 135 | 3D85380A21B151530078EF4E /* Controllers */, 136 | 3D85380921B1514D0078EF4E /* Base */, 137 | 3D8537D521B141650078EF4E /* AppDelegate.h */, 138 | 3D8537D621B141650078EF4E /* AppDelegate.m */, 139 | 3D8537D821B141650078EF4E /* ViewController.h */, 140 | 3D8537D921B141660078EF4E /* ViewController.m */, 141 | 3D8537DB21B141660078EF4E /* Main.storyboard */, 142 | 3D8537DE21B141660078EF4E /* Assets.xcassets */, 143 | 3D8537E021B141660078EF4E /* LaunchScreen.storyboard */, 144 | 3D8537E321B141660078EF4E /* Info.plist */, 145 | 3D8537E421B141660078EF4E /* main.m */, 146 | ); 147 | path = TabBarController; 148 | sourceTree = ""; 149 | }; 150 | 3D8537ED21B141660078EF4E /* TabBarControllerTests */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 3D8537EE21B141660078EF4E /* TabBarControllerTests.m */, 154 | 3D8537F021B141660078EF4E /* Info.plist */, 155 | ); 156 | path = TabBarControllerTests; 157 | sourceTree = ""; 158 | }; 159 | 3D8537F821B141660078EF4E /* TabBarControllerUITests */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | 3D8537F921B141660078EF4E /* TabBarControllerUITests.m */, 163 | 3D8537FB21B141660078EF4E /* Info.plist */, 164 | ); 165 | path = TabBarControllerUITests; 166 | sourceTree = ""; 167 | }; 168 | 3D85380921B1514D0078EF4E /* Base */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | 3D85380B21B151850078EF4E /* LJNaviControllrer.h */, 172 | 3D85381021B151860078EF4E /* LJNaviControllrer.m */, 173 | 3D85380D21B151850078EF4E /* LJTabbar.h */, 174 | 3D85380E21B151850078EF4E /* LJTabbar.m */, 175 | 3D85380F21B151860078EF4E /* LJTabbarController.h */, 176 | 3D85380C21B151850078EF4E /* LJTabbarController.m */, 177 | ); 178 | path = Base; 179 | sourceTree = ""; 180 | }; 181 | 3D85380A21B151530078EF4E /* Controllers */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | 3D85381821B154750078EF4E /* LJHomeViewController.h */, 185 | 3D85381921B154750078EF4E /* LJHomeViewController.m */, 186 | 3D85381B21B154B30078EF4E /* LJFishViewController.h */, 187 | 3D85381C21B154B30078EF4E /* LJFishViewController.m */, 188 | 3D85381E21B154C70078EF4E /* LJMeassageViewController.h */, 189 | 3D85381F21B154C70078EF4E /* LJMeassageViewController.m */, 190 | 3D85382121B154DD0078EF4E /* LJMineViewController.h */, 191 | 3D85382221B154DD0078EF4E /* LJMineViewController.m */, 192 | 3D94490221B4E7DF00070BBB /* LJPlusBtnViewController.h */, 193 | 3D94490321B4E7DF00070BBB /* LJPlusBtnViewController.m */, 194 | ); 195 | path = Controllers; 196 | sourceTree = ""; 197 | }; 198 | 3D85381421B153C40078EF4E /* UIView+Frame */ = { 199 | isa = PBXGroup; 200 | children = ( 201 | 3D85381521B153C40078EF4E /* UIView+Frame.m */, 202 | 3D85381621B153C40078EF4E /* UIView+Frame.h */, 203 | 3D9448FF21B4E68D00070BBB /* UIImage+Image.h */, 204 | 3D94490021B4E68D00070BBB /* UIImage+Image.m */, 205 | ); 206 | path = "UIView+Frame"; 207 | sourceTree = ""; 208 | }; 209 | /* End PBXGroup section */ 210 | 211 | /* Begin PBXNativeTarget section */ 212 | 3D8537D121B141650078EF4E /* TabBarController */ = { 213 | isa = PBXNativeTarget; 214 | buildConfigurationList = 3D8537FE21B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarController" */; 215 | buildPhases = ( 216 | 3D8537CE21B141650078EF4E /* Sources */, 217 | 3D8537CF21B141650078EF4E /* Frameworks */, 218 | 3D8537D021B141650078EF4E /* Resources */, 219 | ); 220 | buildRules = ( 221 | ); 222 | dependencies = ( 223 | ); 224 | name = TabBarController; 225 | productName = TabBarController; 226 | productReference = 3D8537D221B141650078EF4E /* TabBarController.app */; 227 | productType = "com.apple.product-type.application"; 228 | }; 229 | 3D8537E921B141660078EF4E /* TabBarControllerTests */ = { 230 | isa = PBXNativeTarget; 231 | buildConfigurationList = 3D85380121B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarControllerTests" */; 232 | buildPhases = ( 233 | 3D8537E621B141660078EF4E /* Sources */, 234 | 3D8537E721B141660078EF4E /* Frameworks */, 235 | 3D8537E821B141660078EF4E /* Resources */, 236 | ); 237 | buildRules = ( 238 | ); 239 | dependencies = ( 240 | 3D8537EC21B141660078EF4E /* PBXTargetDependency */, 241 | ); 242 | name = TabBarControllerTests; 243 | productName = TabBarControllerTests; 244 | productReference = 3D8537EA21B141660078EF4E /* TabBarControllerTests.xctest */; 245 | productType = "com.apple.product-type.bundle.unit-test"; 246 | }; 247 | 3D8537F421B141660078EF4E /* TabBarControllerUITests */ = { 248 | isa = PBXNativeTarget; 249 | buildConfigurationList = 3D85380421B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarControllerUITests" */; 250 | buildPhases = ( 251 | 3D8537F121B141660078EF4E /* Sources */, 252 | 3D8537F221B141660078EF4E /* Frameworks */, 253 | 3D8537F321B141660078EF4E /* Resources */, 254 | ); 255 | buildRules = ( 256 | ); 257 | dependencies = ( 258 | 3D8537F721B141660078EF4E /* PBXTargetDependency */, 259 | ); 260 | name = TabBarControllerUITests; 261 | productName = TabBarControllerUITests; 262 | productReference = 3D8537F521B141660078EF4E /* TabBarControllerUITests.xctest */; 263 | productType = "com.apple.product-type.bundle.ui-testing"; 264 | }; 265 | /* End PBXNativeTarget section */ 266 | 267 | /* Begin PBXProject section */ 268 | 3D8537CA21B141650078EF4E /* Project object */ = { 269 | isa = PBXProject; 270 | attributes = { 271 | LastUpgradeCheck = 0940; 272 | ORGANIZATIONNAME = "刘鹿杰的mac"; 273 | TargetAttributes = { 274 | 3D8537D121B141650078EF4E = { 275 | CreatedOnToolsVersion = 9.4.1; 276 | }; 277 | 3D8537E921B141660078EF4E = { 278 | CreatedOnToolsVersion = 9.4.1; 279 | TestTargetID = 3D8537D121B141650078EF4E; 280 | }; 281 | 3D8537F421B141660078EF4E = { 282 | CreatedOnToolsVersion = 9.4.1; 283 | TestTargetID = 3D8537D121B141650078EF4E; 284 | }; 285 | }; 286 | }; 287 | buildConfigurationList = 3D8537CD21B141650078EF4E /* Build configuration list for PBXProject "TabBarController" */; 288 | compatibilityVersion = "Xcode 9.3"; 289 | developmentRegion = en; 290 | hasScannedForEncodings = 0; 291 | knownRegions = ( 292 | en, 293 | Base, 294 | ); 295 | mainGroup = 3D8537C921B141650078EF4E; 296 | productRefGroup = 3D8537D321B141650078EF4E /* Products */; 297 | projectDirPath = ""; 298 | projectRoot = ""; 299 | targets = ( 300 | 3D8537D121B141650078EF4E /* TabBarController */, 301 | 3D8537E921B141660078EF4E /* TabBarControllerTests */, 302 | 3D8537F421B141660078EF4E /* TabBarControllerUITests */, 303 | ); 304 | }; 305 | /* End PBXProject section */ 306 | 307 | /* Begin PBXResourcesBuildPhase section */ 308 | 3D8537D021B141650078EF4E /* Resources */ = { 309 | isa = PBXResourcesBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | 3D8537E221B141660078EF4E /* LaunchScreen.storyboard in Resources */, 313 | 3D8537DF21B141660078EF4E /* Assets.xcassets in Resources */, 314 | 3D8537DD21B141660078EF4E /* Main.storyboard in Resources */, 315 | ); 316 | runOnlyForDeploymentPostprocessing = 0; 317 | }; 318 | 3D8537E821B141660078EF4E /* Resources */ = { 319 | isa = PBXResourcesBuildPhase; 320 | buildActionMask = 2147483647; 321 | files = ( 322 | ); 323 | runOnlyForDeploymentPostprocessing = 0; 324 | }; 325 | 3D8537F321B141660078EF4E /* Resources */ = { 326 | isa = PBXResourcesBuildPhase; 327 | buildActionMask = 2147483647; 328 | files = ( 329 | ); 330 | runOnlyForDeploymentPostprocessing = 0; 331 | }; 332 | /* End PBXResourcesBuildPhase section */ 333 | 334 | /* Begin PBXSourcesBuildPhase section */ 335 | 3D8537CE21B141650078EF4E /* Sources */ = { 336 | isa = PBXSourcesBuildPhase; 337 | buildActionMask = 2147483647; 338 | files = ( 339 | 3D8537DA21B141660078EF4E /* ViewController.m in Sources */, 340 | 3D85381121B151860078EF4E /* LJTabbarController.m in Sources */, 341 | 3D94490421B4E7DF00070BBB /* LJPlusBtnViewController.m in Sources */, 342 | 3D85381321B151860078EF4E /* LJNaviControllrer.m in Sources */, 343 | 3D85381721B153C40078EF4E /* UIView+Frame.m in Sources */, 344 | 3D8537E521B141660078EF4E /* main.m in Sources */, 345 | 3D94490121B4E68D00070BBB /* UIImage+Image.m in Sources */, 346 | 3D85381221B151860078EF4E /* LJTabbar.m in Sources */, 347 | 3D85382321B154DE0078EF4E /* LJMineViewController.m in Sources */, 348 | 3D85382021B154C70078EF4E /* LJMeassageViewController.m in Sources */, 349 | 3D8537D721B141650078EF4E /* AppDelegate.m in Sources */, 350 | 3D85381D21B154B30078EF4E /* LJFishViewController.m in Sources */, 351 | 3D85381A21B154750078EF4E /* LJHomeViewController.m in Sources */, 352 | ); 353 | runOnlyForDeploymentPostprocessing = 0; 354 | }; 355 | 3D8537E621B141660078EF4E /* Sources */ = { 356 | isa = PBXSourcesBuildPhase; 357 | buildActionMask = 2147483647; 358 | files = ( 359 | 3D8537EF21B141660078EF4E /* TabBarControllerTests.m in Sources */, 360 | ); 361 | runOnlyForDeploymentPostprocessing = 0; 362 | }; 363 | 3D8537F121B141660078EF4E /* Sources */ = { 364 | isa = PBXSourcesBuildPhase; 365 | buildActionMask = 2147483647; 366 | files = ( 367 | 3D8537FA21B141660078EF4E /* TabBarControllerUITests.m in Sources */, 368 | ); 369 | runOnlyForDeploymentPostprocessing = 0; 370 | }; 371 | /* End PBXSourcesBuildPhase section */ 372 | 373 | /* Begin PBXTargetDependency section */ 374 | 3D8537EC21B141660078EF4E /* PBXTargetDependency */ = { 375 | isa = PBXTargetDependency; 376 | target = 3D8537D121B141650078EF4E /* TabBarController */; 377 | targetProxy = 3D8537EB21B141660078EF4E /* PBXContainerItemProxy */; 378 | }; 379 | 3D8537F721B141660078EF4E /* PBXTargetDependency */ = { 380 | isa = PBXTargetDependency; 381 | target = 3D8537D121B141650078EF4E /* TabBarController */; 382 | targetProxy = 3D8537F621B141660078EF4E /* PBXContainerItemProxy */; 383 | }; 384 | /* End PBXTargetDependency section */ 385 | 386 | /* Begin PBXVariantGroup section */ 387 | 3D8537DB21B141660078EF4E /* Main.storyboard */ = { 388 | isa = PBXVariantGroup; 389 | children = ( 390 | 3D8537DC21B141660078EF4E /* Base */, 391 | ); 392 | name = Main.storyboard; 393 | sourceTree = ""; 394 | }; 395 | 3D8537E021B141660078EF4E /* LaunchScreen.storyboard */ = { 396 | isa = PBXVariantGroup; 397 | children = ( 398 | 3D8537E121B141660078EF4E /* Base */, 399 | ); 400 | name = LaunchScreen.storyboard; 401 | sourceTree = ""; 402 | }; 403 | /* End PBXVariantGroup section */ 404 | 405 | /* Begin XCBuildConfiguration section */ 406 | 3D8537FC21B141660078EF4E /* Debug */ = { 407 | isa = XCBuildConfiguration; 408 | buildSettings = { 409 | ALWAYS_SEARCH_USER_PATHS = NO; 410 | CLANG_ANALYZER_NONNULL = YES; 411 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 412 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 413 | CLANG_CXX_LIBRARY = "libc++"; 414 | CLANG_ENABLE_MODULES = YES; 415 | CLANG_ENABLE_OBJC_ARC = YES; 416 | CLANG_ENABLE_OBJC_WEAK = YES; 417 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 418 | CLANG_WARN_BOOL_CONVERSION = YES; 419 | CLANG_WARN_COMMA = YES; 420 | CLANG_WARN_CONSTANT_CONVERSION = YES; 421 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 422 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 423 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 424 | CLANG_WARN_EMPTY_BODY = YES; 425 | CLANG_WARN_ENUM_CONVERSION = YES; 426 | CLANG_WARN_INFINITE_RECURSION = YES; 427 | CLANG_WARN_INT_CONVERSION = YES; 428 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 429 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 430 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 431 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 432 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 433 | CLANG_WARN_STRICT_PROTOTYPES = YES; 434 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 435 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 436 | CLANG_WARN_UNREACHABLE_CODE = YES; 437 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 438 | CODE_SIGN_IDENTITY = "iPhone Developer"; 439 | COPY_PHASE_STRIP = NO; 440 | DEBUG_INFORMATION_FORMAT = dwarf; 441 | ENABLE_STRICT_OBJC_MSGSEND = YES; 442 | ENABLE_TESTABILITY = YES; 443 | GCC_C_LANGUAGE_STANDARD = gnu11; 444 | GCC_DYNAMIC_NO_PIC = NO; 445 | GCC_NO_COMMON_BLOCKS = YES; 446 | GCC_OPTIMIZATION_LEVEL = 0; 447 | GCC_PREPROCESSOR_DEFINITIONS = ( 448 | "DEBUG=1", 449 | "$(inherited)", 450 | ); 451 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 452 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 453 | GCC_WARN_UNDECLARED_SELECTOR = YES; 454 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 455 | GCC_WARN_UNUSED_FUNCTION = YES; 456 | GCC_WARN_UNUSED_VARIABLE = YES; 457 | IPHONEOS_DEPLOYMENT_TARGET = 11.4; 458 | MTL_ENABLE_DEBUG_INFO = YES; 459 | ONLY_ACTIVE_ARCH = YES; 460 | SDKROOT = iphoneos; 461 | }; 462 | name = Debug; 463 | }; 464 | 3D8537FD21B141660078EF4E /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | buildSettings = { 467 | ALWAYS_SEARCH_USER_PATHS = NO; 468 | CLANG_ANALYZER_NONNULL = YES; 469 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 470 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 471 | CLANG_CXX_LIBRARY = "libc++"; 472 | CLANG_ENABLE_MODULES = YES; 473 | CLANG_ENABLE_OBJC_ARC = YES; 474 | CLANG_ENABLE_OBJC_WEAK = YES; 475 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 476 | CLANG_WARN_BOOL_CONVERSION = YES; 477 | CLANG_WARN_COMMA = YES; 478 | CLANG_WARN_CONSTANT_CONVERSION = YES; 479 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 480 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 481 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 482 | CLANG_WARN_EMPTY_BODY = YES; 483 | CLANG_WARN_ENUM_CONVERSION = YES; 484 | CLANG_WARN_INFINITE_RECURSION = YES; 485 | CLANG_WARN_INT_CONVERSION = YES; 486 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 487 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 488 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 489 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 490 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 491 | CLANG_WARN_STRICT_PROTOTYPES = YES; 492 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 493 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 494 | CLANG_WARN_UNREACHABLE_CODE = YES; 495 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 496 | CODE_SIGN_IDENTITY = "iPhone Developer"; 497 | COPY_PHASE_STRIP = NO; 498 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 499 | ENABLE_NS_ASSERTIONS = NO; 500 | ENABLE_STRICT_OBJC_MSGSEND = YES; 501 | GCC_C_LANGUAGE_STANDARD = gnu11; 502 | GCC_NO_COMMON_BLOCKS = YES; 503 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 504 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 505 | GCC_WARN_UNDECLARED_SELECTOR = YES; 506 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 507 | GCC_WARN_UNUSED_FUNCTION = YES; 508 | GCC_WARN_UNUSED_VARIABLE = YES; 509 | IPHONEOS_DEPLOYMENT_TARGET = 11.4; 510 | MTL_ENABLE_DEBUG_INFO = NO; 511 | SDKROOT = iphoneos; 512 | VALIDATE_PRODUCT = YES; 513 | }; 514 | name = Release; 515 | }; 516 | 3D8537FF21B141660078EF4E /* Debug */ = { 517 | isa = XCBuildConfiguration; 518 | buildSettings = { 519 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 520 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 521 | CODE_SIGN_STYLE = Automatic; 522 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 523 | INFOPLIST_FILE = TabBarController/Info.plist; 524 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 525 | LD_RUNPATH_SEARCH_PATHS = ( 526 | "$(inherited)", 527 | "@executable_path/Frameworks", 528 | ); 529 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarController; 530 | PRODUCT_NAME = "$(TARGET_NAME)"; 531 | TARGETED_DEVICE_FAMILY = "1,2"; 532 | }; 533 | name = Debug; 534 | }; 535 | 3D85380021B141660078EF4E /* Release */ = { 536 | isa = XCBuildConfiguration; 537 | buildSettings = { 538 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 539 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 540 | CODE_SIGN_STYLE = Automatic; 541 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 542 | INFOPLIST_FILE = TabBarController/Info.plist; 543 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 544 | LD_RUNPATH_SEARCH_PATHS = ( 545 | "$(inherited)", 546 | "@executable_path/Frameworks", 547 | ); 548 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarController; 549 | PRODUCT_NAME = "$(TARGET_NAME)"; 550 | TARGETED_DEVICE_FAMILY = "1,2"; 551 | }; 552 | name = Release; 553 | }; 554 | 3D85380221B141660078EF4E /* Debug */ = { 555 | isa = XCBuildConfiguration; 556 | buildSettings = { 557 | BUNDLE_LOADER = "$(TEST_HOST)"; 558 | CODE_SIGN_STYLE = Automatic; 559 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 560 | INFOPLIST_FILE = TabBarControllerTests/Info.plist; 561 | LD_RUNPATH_SEARCH_PATHS = ( 562 | "$(inherited)", 563 | "@executable_path/Frameworks", 564 | "@loader_path/Frameworks", 565 | ); 566 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarControllerTests; 567 | PRODUCT_NAME = "$(TARGET_NAME)"; 568 | TARGETED_DEVICE_FAMILY = "1,2"; 569 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TabBarController.app/TabBarController"; 570 | }; 571 | name = Debug; 572 | }; 573 | 3D85380321B141660078EF4E /* Release */ = { 574 | isa = XCBuildConfiguration; 575 | buildSettings = { 576 | BUNDLE_LOADER = "$(TEST_HOST)"; 577 | CODE_SIGN_STYLE = Automatic; 578 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 579 | INFOPLIST_FILE = TabBarControllerTests/Info.plist; 580 | LD_RUNPATH_SEARCH_PATHS = ( 581 | "$(inherited)", 582 | "@executable_path/Frameworks", 583 | "@loader_path/Frameworks", 584 | ); 585 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarControllerTests; 586 | PRODUCT_NAME = "$(TARGET_NAME)"; 587 | TARGETED_DEVICE_FAMILY = "1,2"; 588 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TabBarController.app/TabBarController"; 589 | }; 590 | name = Release; 591 | }; 592 | 3D85380521B141660078EF4E /* Debug */ = { 593 | isa = XCBuildConfiguration; 594 | buildSettings = { 595 | CODE_SIGN_STYLE = Automatic; 596 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 597 | INFOPLIST_FILE = TabBarControllerUITests/Info.plist; 598 | LD_RUNPATH_SEARCH_PATHS = ( 599 | "$(inherited)", 600 | "@executable_path/Frameworks", 601 | "@loader_path/Frameworks", 602 | ); 603 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarControllerUITests; 604 | PRODUCT_NAME = "$(TARGET_NAME)"; 605 | TARGETED_DEVICE_FAMILY = "1,2"; 606 | TEST_TARGET_NAME = TabBarController; 607 | }; 608 | name = Debug; 609 | }; 610 | 3D85380621B141660078EF4E /* Release */ = { 611 | isa = XCBuildConfiguration; 612 | buildSettings = { 613 | CODE_SIGN_STYLE = Automatic; 614 | DEVELOPMENT_TEAM = 4X88Z35WBQ; 615 | INFOPLIST_FILE = TabBarControllerUITests/Info.plist; 616 | LD_RUNPATH_SEARCH_PATHS = ( 617 | "$(inherited)", 618 | "@executable_path/Frameworks", 619 | "@loader_path/Frameworks", 620 | ); 621 | PRODUCT_BUNDLE_IDENTIFIER = com.woyao.TabBarControllerUITests; 622 | PRODUCT_NAME = "$(TARGET_NAME)"; 623 | TARGETED_DEVICE_FAMILY = "1,2"; 624 | TEST_TARGET_NAME = TabBarController; 625 | }; 626 | name = Release; 627 | }; 628 | /* End XCBuildConfiguration section */ 629 | 630 | /* Begin XCConfigurationList section */ 631 | 3D8537CD21B141650078EF4E /* Build configuration list for PBXProject "TabBarController" */ = { 632 | isa = XCConfigurationList; 633 | buildConfigurations = ( 634 | 3D8537FC21B141660078EF4E /* Debug */, 635 | 3D8537FD21B141660078EF4E /* Release */, 636 | ); 637 | defaultConfigurationIsVisible = 0; 638 | defaultConfigurationName = Release; 639 | }; 640 | 3D8537FE21B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarController" */ = { 641 | isa = XCConfigurationList; 642 | buildConfigurations = ( 643 | 3D8537FF21B141660078EF4E /* Debug */, 644 | 3D85380021B141660078EF4E /* Release */, 645 | ); 646 | defaultConfigurationIsVisible = 0; 647 | defaultConfigurationName = Release; 648 | }; 649 | 3D85380121B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarControllerTests" */ = { 650 | isa = XCConfigurationList; 651 | buildConfigurations = ( 652 | 3D85380221B141660078EF4E /* Debug */, 653 | 3D85380321B141660078EF4E /* Release */, 654 | ); 655 | defaultConfigurationIsVisible = 0; 656 | defaultConfigurationName = Release; 657 | }; 658 | 3D85380421B141660078EF4E /* Build configuration list for PBXNativeTarget "TabBarControllerUITests" */ = { 659 | isa = XCConfigurationList; 660 | buildConfigurations = ( 661 | 3D85380521B141660078EF4E /* Debug */, 662 | 3D85380621B141660078EF4E /* Release */, 663 | ); 664 | defaultConfigurationIsVisible = 0; 665 | defaultConfigurationName = Release; 666 | }; 667 | /* End XCConfigurationList section */ 668 | }; 669 | rootObject = 3D8537CA21B141650078EF4E /* Project object */; 670 | } 671 | --------------------------------------------------------------------------------