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