├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── -en-bug-report--cn-bug---.md
│ ├── -en-feature-request--cn---------.md
│ └── qa----.md
├── issue_template.md
└── pull_request_template.md
├── .gitignore
├── CHANGELOG.md
├── CYLTabBarController.podspec
├── CYLTabBarController.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ ├── CYLTabBarController.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── chenyilong.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── WorkspaceSettings.xcsettings
├── xcshareddata
│ └── xcschemes
│ │ └── CYLTabBarController.xcscheme
└── xcuserdata
│ └── chenyilong.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ ├── CYLTabBarController.xcscheme
│ └── xcschememanagement.plist
├── CYLTabBarController.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── CYLTabBarController
├── CAAnimation+CYLBadgeExtention.h
├── CAAnimation+CYLBadgeExtention.m
├── CYLBadgeProtocol.h
├── CYLBaseNavigationController.h
├── CYLBaseNavigationController.m
├── CYLBaseTableViewController.h
├── CYLBaseTableViewController.m
├── CYLBaseViewController.h
├── CYLBaseViewController.m
├── CYLConstants.h
├── CYLPlusButton.h
├── CYLPlusButton.m
├── CYLTabBar+CYLTabBarControllerExtention.h
├── CYLTabBar+CYLTabBarControllerExtention.m
├── CYLTabBar.h
├── CYLTabBar.m
├── CYLTabBarController.h
├── CYLTabBarController.m
├── NSObject+CYLTabBarControllerExtention.h
├── NSObject+CYLTabBarControllerExtention.m
├── UIBarButtonItem+CYLBadgeExtention.h
├── UIBarButtonItem+CYLBadgeExtention.m
├── UIColor+CYLTabBarControllerExtention.h
├── UIColor+CYLTabBarControllerExtention.m
├── UIControl+CYLTabBarControllerExtention.h
├── UIControl+CYLTabBarControllerExtention.m
├── UIImage+CYLTabBarControllerExtention.h
├── UIImage+CYLTabBarControllerExtention.m
├── UITabBarItem+CYLBadgeExtention.h
├── UITabBarItem+CYLBadgeExtention.m
├── UITabBarItem+CYLTabBarControllerExtention.h
├── UITabBarItem+CYLTabBarControllerExtention.m
├── UIView+CYLBadgeExtention.h
├── UIView+CYLBadgeExtention.m
├── UIView+CYLTabBarControllerExtention.h
├── UIView+CYLTabBarControllerExtention.m
├── UIViewController+CYLNavigationControllerExtention.h
├── UIViewController+CYLNavigationControllerExtention.m
├── UIViewController+CYLTabBarControllerExtention.h
└── UIViewController+CYLTabBarControllerExtention.m
├── CYLTabBarControllerTests
├── CYLTabBarControllerTests.m
└── Info.plist
├── Example-Swift
├── AppDelegate.swift
├── CYLTabBarController-Swift.xcodeproj
│ └── project.xcworkspace
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── CYLTabBarController-Swift.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── CYLTabbarController-Swift.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcuserdata
│ │ └── chenyilong.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── MainTabBarController.swift
├── Module
│ ├── Connection
│ │ └── Controller
│ │ │ └── ConnectionViewController.swift
│ ├── Home
│ │ └── Controller
│ │ │ └── HomeViewController.swift
│ ├── Message
│ │ └── Controller
│ │ │ └── MessageViewController.swift
│ ├── Personal
│ │ └── Controller
│ │ │ └── PersonalViewController.swift
│ └── Publish
│ │ └── Controller
│ │ └── PublishViewController.swift
├── Other
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-72.png
│ │ │ ├── Icon-72@2x.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small-50.png
│ │ │ ├── Icon-Small-50@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ ├── Icon.png
│ │ │ └── Icon@2x.png
│ │ ├── Contents.json
│ │ ├── LaunchImage.launchimage
│ │ │ ├── Contents.json
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default-667h@2x.png
│ │ │ ├── Default-Landscape-1792h@3x.png
│ │ │ ├── Default-Landscape-2436h@3x.png
│ │ │ ├── Default-Landscape-2688h@3x.png
│ │ │ ├── Default-Landscape-736h@3x.png
│ │ │ ├── Default-Portrait-1792h@3x.png
│ │ │ ├── Default-Portrait-2436h@3x.png
│ │ │ ├── Default-Portrait-2688h@3x.png
│ │ │ ├── Default-Portrait-736h@3x.png
│ │ │ ├── Default.png
│ │ │ ├── Default@2x.png
│ │ │ ├── Default~ipad.png
│ │ │ ├── Default~ipad@2x.png
│ │ │ ├── Default~ipad~landscape.png
│ │ │ ├── Default~ipad~landscape@2x.png
│ │ │ ├── Default~ipad~landscape~nostatusbar.png
│ │ │ ├── Default~ipad~landscape~nostatusbar@2x.png
│ │ │ ├── Default~ipad~nostatusbar.png
│ │ │ └── Default~ipad~nostatusbar@2x.png
│ │ └── TabBarIcon
│ │ │ ├── Contents.json
│ │ │ ├── account_highlight.imageset
│ │ │ ├── Contents.json
│ │ │ └── account_highlight@2x.png
│ │ │ ├── account_normal.imageset
│ │ │ ├── Contents.json
│ │ │ └── account_normal@2x.png
│ │ │ ├── home_highlight.imageset
│ │ │ ├── Contents.json
│ │ │ └── home_highlight@2x.png
│ │ │ ├── home_normal.imageset
│ │ │ ├── Contents.json
│ │ │ └── home_normal@2x.png
│ │ │ ├── message_highlight.imageset
│ │ │ ├── Contents.json
│ │ │ └── message_highlight@2x.png
│ │ │ ├── message_normal.imageset
│ │ │ ├── Contents.json
│ │ │ └── message_normal@2x.png
│ │ │ ├── mycity_highlight.imageset
│ │ │ ├── Contents.json
│ │ │ └── mycity_highlight@2x.png
│ │ │ ├── mycity_normal.imageset
│ │ │ ├── Contents.json
│ │ │ └── mycity_normal@2x.png
│ │ │ ├── post_normal.imageset
│ │ │ ├── Contents.json
│ │ │ └── post_normal@2x.png
│ │ │ ├── tabbar_background.imageset
│ │ │ ├── Contents.json
│ │ │ └── tabbar_background@2x.png
│ │ │ └── tapbar_top_line.imageset
│ │ │ ├── Contents.json
│ │ │ └── tapbar_top_line@2x.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ └── Info.plist
├── Podfile
└── View
│ └── CYLPlusButtonSubclass.swift
├── Example
├── AppDelegate.h
├── AppDelegate.m
├── Base.lproj
│ ├── LaunchScreen.xib
│ └── Main.storyboard
├── CYLMainRootViewController.h
├── CYLMainRootViewController.m
├── Classes
│ ├── Module
│ │ ├── Home
│ │ │ ├── CYLHomeViewController.h
│ │ │ └── CYLHomeViewController.m
│ │ ├── Message
│ │ │ ├── CYLMessageViewController.h
│ │ │ └── CYLMessageViewController.m
│ │ ├── Mine
│ │ │ ├── CYLMineViewController.h
│ │ │ └── CYLMineViewController.m
│ │ ├── Other
│ │ │ ├── CYLPlusDemoChildViewController.h
│ │ │ └── CYLPlusDemoChildViewController.m
│ │ └── SameCity
│ │ │ ├── CYLDetailsViewController.h
│ │ │ ├── CYLDetailsViewController.m
│ │ │ ├── CYLSameCityViewController.h
│ │ │ └── CYLSameCityViewController.m
│ ├── Other
│ │ └── LottieResources
│ │ │ ├── gray_tabbar_home_animation.json
│ │ │ ├── gray_tabbar_me_animation.json
│ │ │ ├── gray_tabbar_message_animation.json
│ │ │ ├── green_lottie_tab_discover.json
│ │ │ ├── green_lottie_tab_home.json
│ │ │ ├── green_lottie_tab_mine.json
│ │ │ ├── green_lottie_tab_news.json
│ │ │ ├── img_tab_home_0.png
│ │ │ ├── img_tab_home_1.png
│ │ │ ├── img_tab_home_2.png
│ │ │ ├── img_tab_me_0.png
│ │ │ ├── img_tab_me_1.png
│ │ │ ├── img_tab_message_0.png
│ │ │ ├── img_tab_message_1.png
│ │ │ ├── tab_home_animate.json
│ │ │ ├── tab_me_animate.json
│ │ │ ├── tab_message_animate.json
│ │ │ └── tab_search_animate.json
│ └── View
│ │ ├── CYLPlusButtonSubclass.h
│ │ └── CYLPlusButtonSubclass.m
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-40.png
│ │ ├── Icon-40@2x.png
│ │ ├── Icon-40@3x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ ├── Icon-72.png
│ │ ├── Icon-72@2x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-83.5@2x.png
│ │ ├── Icon-Small-50.png
│ │ ├── Icon-Small-50@2x.png
│ │ ├── Icon-Small.png
│ │ ├── Icon-Small@2x.png
│ │ ├── Icon-Small@3x.png
│ │ ├── Icon.png
│ │ └── Icon@2x.png
│ ├── Contents.json
│ ├── LaunchImage.launchimage
│ │ ├── Contents.json
│ │ ├── Default-568h@2x.png
│ │ ├── Default-667h@2x.png
│ │ ├── Default-Landscape-1792h@3x.png
│ │ ├── Default-Landscape-2436h@3x.png
│ │ ├── Default-Landscape-2688h@3x.png
│ │ ├── Default-Landscape-736h@3x.png
│ │ ├── Default-Portrait-1792h@3x.png
│ │ ├── Default-Portrait-2436h@3x.png
│ │ ├── Default-Portrait-2688h@3x.png
│ │ ├── Default-Portrait-736h@3x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Default~ipad.png
│ │ ├── Default~ipad@2x.png
│ │ ├── Default~ipad~landscape.png
│ │ ├── Default~ipad~landscape@2x.png
│ │ ├── Default~ipad~landscape~nostatusbar.png
│ │ ├── Default~ipad~landscape~nostatusbar@2x.png
│ │ ├── Default~ipad~nostatusbar.png
│ │ └── Default~ipad~nostatusbar@2x.png
│ ├── NavBar
│ │ ├── Contents.json
│ │ ├── home_bar_scan.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_bar_scan@2x.png
│ │ │ └── home_bar_scan@3x.png
│ │ ├── home_title_slogan.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_title_slogan@2x.png
│ │ │ └── home_title_slogan@3x.png
│ │ └── icon_search.imageset
│ │ │ ├── Contents.json
│ │ │ ├── icon_search@2x.png
│ │ │ └── icon_search@3x.png
│ ├── TabBarIcon
│ │ ├── Contents.json
│ │ ├── TabBar_Bg_Shadow.imageset
│ │ │ ├── Contents.json
│ │ │ └── TabBar_Bg_Shadow@2x.png
│ │ ├── account
│ │ │ ├── Contents.json
│ │ │ ├── account_highlight.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── account_highlight.png
│ │ │ │ ├── account_highlight@2x.png
│ │ │ │ └── account_highlight@3x.png
│ │ │ └── account_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── account_normal.png
│ │ │ │ ├── account_normal@2x.png
│ │ │ │ └── account_normal@3x.png
│ │ ├── fishpond
│ │ │ ├── Contents.json
│ │ │ ├── fishpond_highlight.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── fishpond_highlight.png
│ │ │ │ ├── fishpond_highlight@2x.png
│ │ │ │ └── fishpond_highlight@3x.png
│ │ │ └── fishpond_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── fishpond_normal.png
│ │ │ │ ├── fishpond_normal@2x.png
│ │ │ │ └── fishpond_normal@3x.png
│ │ ├── home
│ │ │ ├── Contents.json
│ │ │ ├── home_highlight.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── home_highlight.png
│ │ │ │ ├── home_highlight@2x.png
│ │ │ │ └── home_highlight@3x.png
│ │ │ └── home_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── home_normal.png
│ │ │ │ ├── home_normal@2x.png
│ │ │ │ └── home_normal@3x.png
│ │ ├── home_select_cover.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_select_cover@2x.png
│ │ │ └── home_select_cover@3x.png
│ │ ├── lottie_placeholder
│ │ │ ├── Contents.json
│ │ │ ├── gray_tabbar_home_animation_lottie_placeholder.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── gray_tabbar_home_animation_lottie_placeholder@2x.png
│ │ │ ├── gray_tabbar_me_animation_lottie_placeholder.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── gray_tabbar_me_animation_lottie_placeholder@2x.png
│ │ │ └── gray_tabbar_message_animation_lottie_placeholder.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── gray_tabbar_message_animation_lottie_placeholder@2x.png
│ │ ├── message
│ │ │ ├── Contents.json
│ │ │ ├── message_highlight.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── message_highlight.png
│ │ │ │ ├── message_highlight@2x.png
│ │ │ │ └── message_highlight@3x.png
│ │ │ └── message_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── message_normal.png
│ │ │ │ ├── message_normal@2x.png
│ │ │ │ └── message_normal@3x.png
│ │ ├── post
│ │ │ ├── Contents.json
│ │ │ ├── post_highlight.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── post_highlight@2x.png
│ │ │ │ └── post_highlight@3x.png
│ │ │ └── post_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── post_normal@2x.png
│ │ │ │ └── post_normal@3x.png
│ │ ├── tabbarBg.imageset
│ │ │ ├── Contents.json
│ │ │ ├── tabbarBg@2x.png
│ │ │ └── tabbarBg@3x.png
│ │ ├── tabbar_background.imageset
│ │ │ ├── Contents.json
│ │ │ └── tabbar_background@2x.png
│ │ ├── tapbar_top_line.imageset
│ │ │ ├── Contents.json
│ │ │ └── tapbar_top_line@2x.png
│ │ └── videoback.imageset
│ │ │ ├── Contents.json
│ │ │ ├── videoback@2x.png
│ │ │ └── videoback@3x.png
│ ├── home-float-icon.imageset
│ │ ├── Contents.json
│ │ ├── home-float-icon.jpg
│ │ ├── home-float-icon@2x.jpg
│ │ └── home-float-icon@3x.jpg
│ ├── icon_tabbar_plus.imageset
│ │ ├── Contents.json
│ │ ├── icon_tabbar_plus@2x.png
│ │ └── icon_tabbar_plus@3x.png
│ └── navigationbar_background_tall.imageset
│ │ ├── Contents.json
│ │ └── navigationbar_background_tall@2x.png
├── Info.plist
├── MainTabBarController.h
├── MainTabBarController.m
└── main.m
├── LICENSE
├── Podfile
├── README.md
└── package.json
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.h linguist-detectable=false
2 | *.m linguist-detectable=false
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/-en-bug-report--cn-bug---.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "[EN]Bug report.[CN]bug反馈."
3 | about: Create a report to help us improve
4 | title: "[bug]:"
5 | labels: bug
6 | assignees: ChenYilong
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 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | --------------------------------------------
53 |
54 |
55 | ## Base Info for this issue
56 |
57 |
58 |
59 |
60 |
61 | 1. Version:Latest Version as [here](https://github.com/ChenYilong/CYLTabBarController/blob/master/CYLTabBarController.podspec)
62 | 2. Language of App :Objective-C/Swift
63 | 4. iOS System Version:iOS12
64 | 5. Prototype(是否是真机):YES
65 | 6. Issue Type:Crash、Bug、Enhancement(希望能支持一个新需求)、Q-A
66 |
67 | ## 1. How to reproduce the problem.
68 |
69 |
70 | ## 2. Please help me in this way.
71 |
72 |
73 | ## 3. Here is a Demo.
74 |
75 |
76 |
77 | ## 4. Here is my Debug log
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | ----------
86 |
87 |
88 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/-en-feature-request--cn---------.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "[EN]Feature request.[CN]希望添加新功能."
3 | about: Suggest an idea for this project
4 | title: "[Feature request]希望添加新功能:"
5 | labels: enhancement
6 | assignees: ChenYilong
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 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | --------------------------------------------
53 |
54 |
55 | **Is your feature request related to a problem? Please describe.**
56 |
57 |
58 | **Describe the solution you'd like**
59 |
60 |
61 | **Describe alternatives you've considered**
62 |
63 |
64 | **Additional context**
65 |
66 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/qa----.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: QA问题询问
3 | about: 使用方法或者不确定是否为bug,可选用本模版
4 | title: "[Q-A]使用方法询问:"
5 | labels: Q-A
6 | assignees: ChenYilong
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 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | --------------------------------------------
53 |
54 | ## My issue:
55 |
56 |
57 |
--------------------------------------------------------------------------------
/.github/issue_template.md:
--------------------------------------------------------------------------------
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 | ## Base Info for this issue
28 |
29 |
30 |
31 |
32 |
33 | 1. Version:Latest Version as [here](https://github.com/ChenYilong/CYLTabBarController/blob/master/CYLTabBarController.podspec)
34 | 2. Language of App :Objective-C/Swift
35 | 4. iOS System Version:iOS12
36 | 5. Prototype(是否是真机):YES
37 | 6. Issue Type:Crash、Bug、Enhancement(希望能支持一个新需求)、Q-A
38 |
39 | ## 1. How to reproduce the problem.
40 |
41 |
42 | ## 2. Please help me in this way.
43 |
44 |
45 | ## 3. Here is a Demo.
46 |
47 |
48 |
49 | ## 4. Here is my Debug log
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | ----------
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
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 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | --------------------------------------------
44 |
45 |
46 |
47 | ## My issue:
48 |
49 |
50 | ## What I have done:
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | .DS_Store
3 | CYLTabBarController.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate
4 | build/
5 | *.pbxuser
6 | !default.pbxuser
7 | *.mode1v3
8 | !default.mode1v3
9 | *.mode2v3
10 | !default.mode2v3
11 | *.perspectivev3
12 | !default.perspectivev3
13 | !default.xcworkspace
14 | xcuserdata
15 | *.moved-aside
16 | *.mobileprovision
17 | DerivedData
18 | .idea/
19 | Pods
20 | Podfile.lock
21 | *.xcworkspace
22 |
23 |
24 | CYLTabBarController.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
25 | *.xcuserstate
26 | *.xcbkptlist
27 | *.xcuserstate
28 | *.xcbkptlist
29 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/CHANGELOG.md
--------------------------------------------------------------------------------
/CYLTabBarController.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "CYLTabBarController"
3 | s.version = "1.29.2"
4 | s.summary = "Highly customizable tabBar and tabBarController for iOS"
5 | s.description = "[EN]It is an iOS UI module library for adding animation to iOS tabbar items and icons with Lottie. [CN]【中国特色 TabBar】一行代码实现 Lottie 动画TabBar,支持中间带+号的TabBar样式,自带红点角标,支持动态刷新。【iOS12 & iPhone XS MAX supported】"
6 | s.homepage = "https://github.com/ChenYilong/CYLTabBarController"
7 | s.license = { :type => 'MIT', :file => 'LICENSE' }
8 | s.author = { "ChenYilong" => "luohanchenyilong@163.com" }
9 | s.social_media_url = 'http://weibo.com/luohanchenyilong/'
10 | s.platform = :ios, '8.0'
11 | s.source = { :git => "https://github.com/ChenYilong/CYLTabBarController.git", :tag => s.version.to_s }
12 |
13 | s.requires_arc = true
14 |
15 | s.default_subspec = 'Core'
16 |
17 | s.subspec 'Core' do |core|
18 | core.source_files = 'CYLTabBarController', 'CYLTabBarController/**/*.{h,m}'
19 | core.public_header_files = 'CYLTabBarController/**/*.h'
20 | end
21 |
22 | s.subspec 'Lottie' do |lottie|
23 | lottie.dependency 'CYLTabBarController/Core'
24 | lottie.dependency "lottie-ios" , '~> 2.5.3'
25 | end
26 | end
27 |
28 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/project.xcworkspace/xcshareddata/CYLTabBarController.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 7FCCCA1D-425A-4CC2-B373-0232D572FEBA
9 | IDESourceControlProjectName
10 | project
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 8395BAF887C6164EAF7C91354187BC1DD6D6F3DF
14 | https://github.com/ChenYilong/CYLTabBarController.git
15 |
16 | IDESourceControlProjectPath
17 | CYLTabBarController.xcodeproj/project.xcworkspace
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | 8395BAF887C6164EAF7C91354187BC1DD6D6F3DF
21 | ../..
22 |
23 | IDESourceControlProjectURL
24 | https://github.com/ChenYilong/CYLTabBarController.git
25 | IDESourceControlProjectVersion
26 | 111
27 | IDESourceControlProjectWCCIdentifier
28 | 8395BAF887C6164EAF7C91354187BC1DD6D6F3DF
29 | IDESourceControlProjectWCConfigurations
30 |
31 |
32 | IDESourceControlRepositoryExtensionIdentifierKey
33 | public.vcs.git
34 | IDESourceControlWCCIdentifierKey
35 | 8395BAF887C6164EAF7C91354187BC1DD6D6F3DF
36 | IDESourceControlWCCName
37 | CYLTabBarController
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/CYLTabBarController.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
6 |
7 | SnapshotAutomaticallyBeforeSignificantChanges
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/xcshareddata/xcschemes/CYLTabBarController.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | CYLTabBarController.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 9AE942731BDC91B800354519
16 |
17 | primary
18 |
19 |
20 | 9AE9428C1BDC91B900354519
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CYLTabBarController.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CYLTabBarController/CAAnimation+CYLBadgeExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | typedef NS_ENUM(NSUInteger, CYLAxis) {
15 | CYLAxisX = 0,
16 | CYLAxisY,
17 | CYLAxisZ
18 | };
19 |
20 | // Degrees to radians
21 | #define CYL_DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)
22 | #define CYL_RADIANS_TO_DEGREES(radians) ((radians) * (180.0 / M_PI))
23 |
24 | @interface CAAnimation (CYLBadgeExtention)
25 |
26 | /**
27 | * breathing forever
28 | *
29 | * @param time duritaion, from clear to fully seen
30 | *
31 | * @return animation obj
32 | */
33 | + (CABasicAnimation *)cyl_opacityForever_Animation:(float)time;
34 |
35 | /**
36 | * breathing with fixed repeated times
37 | *
38 | * @param repeatTimes times
39 | * @param time duritaion, from clear to fully seen
40 | *
41 | * @return animation obj
42 | */
43 | + (CABasicAnimation *)cyl_opacityTimes_Animation:(float)repeatTimes durTimes:(float)time;
44 |
45 | /**
46 | * //rotate
47 | *
48 | * @param dur duration
49 | * @param degree rotate degree in radian(弧度)
50 | * @param axis axis
51 | * @param repeatCount repeat count
52 | *
53 | * @return animation obj
54 | */
55 | + (CABasicAnimation *)cyl_rotation:(float)dur degree:(float)degree direction:(CYLAxis)axis repeatCount:(int)repeatCount;
56 |
57 |
58 | /**
59 | * scale animation
60 | *
61 | * @param fromScale the original scale value, 1.0 by default
62 | * @param toScale target scale
63 | * @param time duration
64 | * @param repeatTimes repeat counts
65 | *
66 | * @return animaiton obj
67 | */
68 | + (CABasicAnimation *)cyl_scaleFrom:(CGFloat)fromScale toScale:(CGFloat)toScale durTimes:(float)time rep:(float)repeatTimes;
69 | /**
70 | * shake
71 | *
72 | * @param repeatTimes time
73 | * @param time duration
74 | * @param obj always be CALayer at present
75 | * @return aniamtion obj
76 | */
77 | + (CAKeyframeAnimation *)cyl_shake_AnimationRepeatTimes:(float)repeatTimes durTimes:(float)time forObj:(id)obj;
78 |
79 | /**
80 | * bounce
81 | *
82 | * @param repeatTimes time
83 | * @param time duration
84 | * @param obj always be CALayer at present
85 | * @return aniamtion obj
86 | */
87 | + (CAKeyframeAnimation *)cyl_bounce_AnimationRepeatTimes:(float)repeatTimes durTimes:(float)time forObj:(id)obj;
88 |
89 | @end
90 |
91 | NS_ASSUME_NONNULL_END
92 |
93 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseNavigationController.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface CYLBaseNavigationController : UINavigationController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseNavigationController.m:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import "CYLBaseNavigationController.h"
10 |
11 | @interface CYLBaseNavigationController ()
12 |
13 | @end
14 |
15 | @implementation CYLBaseNavigationController
16 |
17 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
18 | // 当前导航栏, 只有第一个viewController push的时候设置隐藏
19 | if (self.viewControllers.count == 1) {
20 | viewController.hidesBottomBarWhenPushed = YES;
21 | } else {
22 | viewController.hidesBottomBarWhenPushed = NO;
23 | }
24 | [super pushViewController:viewController animated:animated];
25 | }
26 |
27 | //fix https://github.com/ChenYilong/CYLTabBarController/issues/483
28 | - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated {
29 | if (self.viewControllers.count > 1) {
30 | UIViewController *viewController = [self.viewControllers lastObject];
31 | viewController.hidesBottomBarWhenPushed = YES;
32 | }
33 | [super setViewControllers:viewControllers animated:animated];
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseTableViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface CYLBaseTableViewController : UITableViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseTableViewController.m:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 |
10 | #import "CYLBaseTableViewController.h"
11 | #import "CYLTabBarController.h"
12 |
13 | @interface CYLBaseTableViewController ()
14 |
15 | @end
16 |
17 | @implementation CYLBaseTableViewController
18 |
19 | #pragma mark -
20 | #pragma mark - UIViewController Life
21 |
22 | - (void)viewDidLoad {
23 | [super viewDidLoad];
24 | }
25 |
26 | - (void)viewWillAppear:(BOOL)animated {
27 | [super viewWillAppear:animated];
28 | [self cyl_viewWillAppearNavigationSetting:animated];
29 | }
30 |
31 | - (void)viewDidAppear:(BOOL)animated {
32 | [super viewDidAppear:animated];
33 | [self cyl_viewDidAppearNavigationSetting:animated];
34 | }
35 |
36 | - (void)viewWillDisappear:(BOOL)animated {
37 | [super viewWillDisappear:animated];
38 | [self cyl_viewWillDisappearNavigationSetting:animated];
39 | }
40 |
41 | - (void)viewDidDisappear:(BOOL)animated {
42 | [super viewDidDisappear:animated];
43 | [self cyl_viewDidDisappearNavigationSetting:animated];
44 | }
45 |
46 | - (void)didReceiveMemoryWarning {
47 | [super didReceiveMemoryWarning];
48 | }
49 |
50 | - (void)dealloc {
51 | [self cyl_deallocNavigationSetting];
52 | }
53 |
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface CYLBaseViewController : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLBaseViewController.m:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import "CYLBaseViewController.h"
10 | #import "CYLTabBarController.h"
11 |
12 | @interface CYLBaseViewController ()
13 |
14 | @end
15 |
16 | @implementation CYLBaseViewController
17 |
18 | #pragma mark -
19 | #pragma mark - UIViewController Life
20 |
21 | - (void)viewDidLoad {
22 | [super viewDidLoad];
23 | }
24 |
25 | - (void)viewWillAppear:(BOOL)animated {
26 | [super viewWillAppear:animated];
27 | [self cyl_viewWillAppearNavigationSetting:animated];
28 | }
29 |
30 | - (void)viewDidAppear:(BOOL)animated {
31 | [super viewDidAppear:animated];
32 | [self cyl_viewDidAppearNavigationSetting:animated];
33 | }
34 |
35 | - (void)viewWillDisappear:(BOOL)animated {
36 | [super viewWillDisappear:animated];
37 | [self cyl_viewWillDisappearNavigationSetting:animated];
38 | }
39 |
40 | - (void)viewDidDisappear:(BOOL)animated {
41 | [super viewDidDisappear:animated];
42 | [self cyl_viewDidDisappearNavigationSetting:animated];
43 | }
44 |
45 | - (void)didReceiveMemoryWarning {
46 | [super didReceiveMemoryWarning];
47 | }
48 |
49 | - (void)dealloc {
50 | [self cyl_deallocNavigationSetting];
51 | }
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLConstants.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #ifndef CYLConstants_h
10 | #define CYLConstants_h
11 |
12 | #define CYL_DEPRECATED(explain) __attribute__((deprecated(explain)))
13 | #define CYL_IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
14 |
15 | #define CYL_IS_IOS_11 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.f)
16 | #define CYL_IS_IPHONE_X (CYL_IS_IOS_11 && CYL_IS_IPHONE && (MIN([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) >= 375 && MAX([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) >= 812))
17 |
18 | #define CYL_SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
19 | #define CYL_SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
20 | #define CYL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
21 | #define CYL_SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
22 | #define CYL_SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
23 |
24 |
25 | #endif /* CYLConstants_h */
26 |
27 |
28 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLPlusButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusButton.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #import "CYLConstants.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @class CYLPlusButton;
15 |
16 | @protocol CYLPlusButtonSubclassing
17 |
18 | @required
19 | + (id)plusButton;
20 | @optional
21 |
22 | /*!
23 | * 用来自定义加号按钮的位置,如果不实现默认居中。
24 | * @attention 以下两种情况下,必须实现该协议方法,否则 CYLTabBarController 会抛出 exception 来进行提示:
25 | 1. 添加了 PlusButton 且 TabBarItem 的个数是奇数。
26 | 2. 实现了 `+plusChildViewController`。
27 | * @return 用来自定义加号按钮在 TabBar 中的位置。
28 | *
29 | */
30 | + (NSUInteger)indexOfPlusButtonInTabBar;
31 |
32 | /*!
33 | * 该方法是为了调整 PlusButton 中心点Y轴方向的位置,建议在按钮超出了 tabbar 的边界时实现该方法。
34 | * @attention 如果不实现该方法,内部会自动进行比对,预设一个较为合适的位置,如果实现了该方法,预设的逻辑将失效。
35 | * @return 返回值是自定义按钮中心点Y轴方向的坐标除以 tabbar 的高度,
36 | 内部实现时,会使用该返回值来设置 PlusButton 的 centerY 坐标,公式如下:
37 | `PlusButtonCenterY = multiplierOfTabBarHeight * tabBarHeight + constantOfPlusButtonCenterYOffset;`
38 | 也就是说:如果 constantOfPlusButtonCenterYOffset 为0,同时 multiplierOfTabBarHeight 的值是0.5,表示 PlusButton 居中,小于0.5表示 PlusButton 偏上,大于0.5则表示偏下。
39 | *
40 | */
41 | + (CGFloat)multiplierOfTabBarHeight:(CGFloat)tabBarHeight;
42 |
43 | /*!
44 | * 见 `+multiplierOfTabBarHeight:` 注释:
45 | * `PlusButtonCenterY = multiplierOfTabBarHeight * tabBarHeight + constantOfPlusButtonCenterYOffset;`
46 | * 也就是说: constantOfPlusButtonCenterYOffset 大于0会向下偏移,小于0会向上偏移。
47 | * @attention 实现了该方法,但没有实现 `+multiplierOfTabBarHeight:` 方法,在这种情况下,会在预设逻辑的基础上进行偏移。
48 | */
49 | + (CGFloat)constantOfPlusButtonCenterYOffsetForTabBarHeight:(CGFloat)tabBarHeight;
50 |
51 | /*!
52 | * 实现该方法后,能让 PlusButton 的点击效果与跟点击其他 TabBar 按钮效果一样,跳转到该方法指定的 UIViewController 。
53 | * @attention 必须同时实现 `+indexOfPlusButtonInTabBar` 来指定 PlusButton 的位置。
54 | * @return 指定 PlusButton 点击后跳转的 UIViewController。
55 | *
56 | */
57 | + (UIViewController *)plusChildViewController;
58 |
59 | /*!
60 | *
61 | Asks the delegate whether the specified view controller should be made active.
62 | Return YES if the view controller’s tab should be selected or NO if the current tab should remain active.
63 | Returns YES true if the view controller’s tab should be selected or
64 | NO false if the current tab should remain active.
65 | */
66 | + (BOOL)shouldSelectPlusChildViewController;
67 |
68 | #pragma mark - Deprecated API
69 |
70 | + (CGFloat)multiplerInCenterY CYL_DEPRECATED("Deprecated in 1.6.0. Use `+multiplierOfTabBarHeight:` instead.");
71 |
72 | + (NSString *)tabBarContext;
73 |
74 | @end
75 |
76 | @class CYLTabBar;
77 |
78 | FOUNDATION_EXTERN UIButton *CYLExternPlusButton;
79 | FOUNDATION_EXTERN UIViewController *CYLPlusChildViewController;
80 |
81 | @interface CYLPlusButton : UIButton
82 |
83 | + (void)registerPlusButton;
84 | + (void)removePlusButton;
85 | - (void)plusChildViewControllerButtonClicked:(UIButton *)sender;
86 |
87 | @end
88 |
89 | #pragma mark - Deprecated API
90 |
91 | @interface CYLPlusButton (CYLPlusButtonDeprecated)
92 |
93 | + (void)registerSubclass CYL_DEPRECATED("Deprecated in 1.6.0. Use `+[CYLPlusButton registerPlusButton]` instead.");
94 |
95 | @end
96 |
97 | NS_ASSUME_NONNULL_END
98 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLPlusButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusButton.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLPlusButton.h"
10 | #import "CYLTabBarController.h"
11 | #import "UIViewController+CYLTabBarControllerExtention.h"
12 |
13 | CGFloat CYLPlusButtonWidth = 0.0f;
14 | UIButton *CYLExternPlusButton = nil;
15 | UIViewController *CYLPlusChildViewController = nil;
16 |
17 | @implementation CYLPlusButton
18 |
19 | #pragma mark -
20 | #pragma mark - public Methods
21 |
22 | + (void)registerPlusButton {
23 | if (![self conformsToProtocol:@protocol(CYLPlusButtonSubclassing)]) {
24 | return;
25 | }
26 | Class class = self;
27 | UIButton *plusButton = [class plusButton];
28 | CYLExternPlusButton = plusButton;
29 | CYLPlusButtonWidth = plusButton.frame.size.width;
30 | if ([[self class] respondsToSelector:@selector(plusChildViewController)]) {
31 | CYLPlusChildViewController = [class plusChildViewController];
32 | if ([[self class] respondsToSelector:@selector(tabBarContext)]) {
33 | NSString *tabBarContext = [class tabBarContext];
34 | if (tabBarContext && tabBarContext.length) {
35 | [CYLPlusChildViewController cyl_setContext:tabBarContext];
36 | }
37 | } else {
38 | [CYLPlusChildViewController cyl_setContext:NSStringFromClass([CYLTabBarController class])];
39 | }
40 | [[self class] addSelectViewControllerTarget:plusButton];
41 | if ([[self class] respondsToSelector:@selector(indexOfPlusButtonInTabBar)]) {
42 | CYLPlusButtonIndex = [[self class] indexOfPlusButtonInTabBar];
43 | } else {
44 | [NSException raise:NSStringFromClass([CYLTabBarController class]) format:@"If you want to add PlusChildViewController, you must realizse `+indexOfPlusButtonInTabBar` in your custom plusButton class.【Chinese】如果你想使用PlusChildViewController样式,你必须同时在你自定义的plusButton中实现 `+indexOfPlusButtonInTabBar`,来指定plusButton的位置"];
45 | }
46 | }
47 | }
48 |
49 | + (void)removePlusButton {
50 | CYLExternPlusButton = nil;
51 | [CYLPlusChildViewController cyl_setPlusViewControllerEverAdded:NO];
52 | CYLPlusChildViewController = nil;
53 | }
54 |
55 | + (void)registerSubclass {
56 | [self registerPlusButton];
57 | }
58 |
59 | - (void)plusChildViewControllerButtonClicked:(UIButton *)sender {
60 | BOOL notNeedConfigureSelectionStatus = [[self class] respondsToSelector:@selector(shouldSelectPlusChildViewController)] && ![[self class] shouldSelectPlusChildViewController];
61 | if (notNeedConfigureSelectionStatus) {
62 | return;
63 | }
64 | CYLTabBarController *tabBarController = [sender cyl_tabBarController];
65 | NSInteger index = [tabBarController.viewControllers indexOfObject:CYLPlusChildViewController];
66 | if (NSNotFound != index && (index < tabBarController.viewControllers.count)) {
67 | [tabBarController setSelectedIndex:index];
68 | }
69 | }
70 |
71 | #pragma mark -
72 | #pragma mark - Private Methods
73 |
74 | + (void)addSelectViewControllerTarget:(UIButton *)plusButton {
75 | id target = self;
76 | NSArray *selectorNamesArray = [plusButton actionsForTarget:target forControlEvent:UIControlEventTouchUpInside];
77 | if (selectorNamesArray.count == 0) {
78 | target = plusButton;
79 | selectorNamesArray = [plusButton actionsForTarget:target forControlEvent:UIControlEventTouchUpInside];
80 | }
81 | [selectorNamesArray enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
82 | SEL selector = NSSelectorFromString(obj);
83 | [plusButton removeTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
84 | }];
85 | [plusButton addTarget:plusButton action:@selector(plusChildViewControllerButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
86 | }
87 |
88 | /**
89 | * 按钮选中状态下点击先显示normal状态的颜色,松开时再回到selected状态下颜色。
90 | * 重写此方法即不会出现上述情况,与 UITabBarButton 相似
91 | */
92 | - (void)setHighlighted:(BOOL)highlighted {}
93 |
94 | @end
95 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLTabBar+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 | #import "CYLTabBar.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface CYLTabBar (CYLTabBarControllerExtention)
15 |
16 | - (NSArray *)cyl_visibleControls;
17 | - (NSArray *)cyl_subTabBarButtons;
18 | - (NSArray *)cyl_subTabBarButtonsWithoutPlusButton;
19 | - (UIControl *)cyl_tabBarButtonWithTabIndex:(NSUInteger)tabIndex;
20 | - (void)cyl_animationLottieImageWithSelectedControl:(UIControl *)selectedControl
21 | lottieURL:(NSURL *)lottieURL
22 | size:(CGSize)size
23 | defaultSelected:(BOOL)defaultSelected;
24 | - (void)cyl_stopAnimationOfAllLottieView;
25 | - (NSArray *)cyl_originalTabBarButtons;
26 | - (BOOL)cyl_hasPlusChildViewController;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/CYLTabBarController/CYLTabBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBar.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface CYLTabBar : UITabBar
14 |
15 | /*!
16 | * 让 `TabImageView` 垂直居中时,所需要的默认偏移量。
17 | * @attention 该值将在设置 top 和 bottom 时被同时使用,具体的操作等价于如下行为:
18 | * `viewController.tabBarItem.imageInsets = UIEdgeInsetsMake(tabImageViewDefaultOffset, 0, -tabImageViewDefaultOffset, 0);`
19 | */
20 | @property (nonatomic, assign, readonly) CGFloat tabImageViewDefaultOffset;
21 |
22 | @property (nonatomic, copy) NSString *context;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/CYLTabBarController/NSObject+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSObject (CYLTabBarControllerExtention)
14 |
15 | @property (nonatomic, assign, getter=cyl_isForceLandscape, setter=cyl_setIsForceLandscape:) BOOL cyl_isForceLandscape;
16 |
17 | - (void)cyl_forceUpdateInterfaceOrientation:(UIInterfaceOrientation)orientation;
18 |
19 | - (UIResponder *)cyl_sharedAppDelegate;
20 | + (UIViewController * __nullable)cyl_topmostViewController;
21 |
22 | + (UINavigationController * __nullable)cyl_currentNavigationController;
23 |
24 | + (void)cyl_dismissAll:(void (^ __nullable)(void))completion;
25 |
26 | @end
27 |
28 | NS_ASSUME_NONNULL_END
29 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIBarButtonItem+CYLBadgeExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 | #import "UIView+CYLBadgeExtention.h"
11 | #import "CYLBadgeProtocol.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface UIBarButtonItem (CYLBadgeExtention)
16 | - (BOOL)cyl_isShowBadge;
17 |
18 | /**
19 | * show badge with red dot style and CYLBadgeAnimationTypeNone by default.
20 | */
21 | - (void)cyl_showBadge;
22 |
23 | /**
24 | * cyl_showBadge
25 | *
26 | * @param value String value, default is `nil`. if value equal @"" means red dot style.
27 | * @param animationType animationType
28 | */
29 | - (void)cyl_showBadgeValue:(NSString *)value
30 | animationType:(CYLBadgeAnimationType)animationType;
31 |
32 |
33 | /**
34 | * clear badge(hide badge)
35 | */
36 | - (void)cyl_clearBadge;
37 |
38 | /**
39 | * make bage(if existing) not hiden
40 | */
41 | - (void)cyl_resumeBadge;
42 |
43 | - (BOOL)cyl_isPauseBadge;
44 |
45 | @end
46 |
47 | NS_ASSUME_NONNULL_END
48 |
49 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIBarButtonItem+CYLBadgeExtention.m:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import "UIBarButtonItem+CYLBadgeExtention.h"
10 | #import
11 |
12 | #define kActualView [self cyl_getActualBadgeSuperView]
13 |
14 |
15 | @implementation UIBarButtonItem (CYLBadgeExtention)
16 |
17 | #pragma mark -- public methods
18 |
19 | /**
20 | * show badge with red dot style and CYLBadgeAnimationTypeNone by default.
21 | */
22 | - (void)cyl_showBadge {
23 | [kActualView cyl_showBadge];
24 | }
25 |
26 | - (void)cyl_showBadgeValue:(NSString *)value
27 | animationType:(CYLBadgeAnimationType)animationType {
28 | [kActualView cyl_showBadgeValue:value animationType:animationType];
29 | }
30 |
31 | - (void)cyl_clearBadge {
32 | [kActualView cyl_clearBadge];
33 | }
34 |
35 | - (void)cyl_resumeBadge {
36 | [kActualView cyl_resumeBadge];
37 | }
38 |
39 | - (BOOL)cyl_isPauseBadge {
40 | return [kActualView cyl_isPauseBadge];
41 | }
42 |
43 | - (BOOL)cyl_isShowBadge {
44 | return [kActualView cyl_isShowBadge];
45 | }
46 |
47 | #pragma mark -- private method
48 |
49 | /**
50 | * Because UIBarButtonItem is kind of NSObject, it is not able to directly attach badge.
51 | This method is used to find actual view (non-nil) inside UIBarButtonItem instance.
52 | *
53 | * @return view
54 | */
55 | - (UIView *)cyl_getActualBadgeSuperView {
56 | return [self valueForKeyPath:@"_view"];//use KVC to hack actual view
57 | }
58 |
59 | #pragma mark -- setter/getter
60 | - (UILabel *)cyl_badge {
61 | return kActualView.cyl_badge;
62 | }
63 |
64 | - (void)cyl_setBadge:(UILabel *)label {
65 | [kActualView cyl_setBadge:label];
66 | }
67 |
68 | - (UIFont *)cyl_badgeFont {
69 | return kActualView.cyl_badgeFont;
70 | }
71 |
72 | - (void)cyl_setBadgeFont:(UIFont *)badgeFont {
73 | [kActualView cyl_setBadgeFont:badgeFont];
74 | }
75 |
76 | - (UIColor *)cyl_badgeBackgroundColor {
77 | return [kActualView cyl_badgeBackgroundColor];
78 | }
79 |
80 | - (void)cyl_setBadgeBackgroundColor:(UIColor *)badgeBackgroundColor {
81 | [kActualView cyl_setBadgeBackgroundColor:badgeBackgroundColor];
82 | }
83 |
84 | - (UIColor *)cyl_badgeTextColor {
85 | return [kActualView cyl_badgeTextColor];
86 | }
87 |
88 | - (void)cyl_setBadgeTextColor:(UIColor *)badgeTextColor {
89 | [kActualView cyl_setBadgeTextColor:badgeTextColor];
90 | }
91 |
92 | - (CYLBadgeAnimationType)cyl_badgeAnimationType {
93 | return [kActualView cyl_badgeAnimationType];
94 | }
95 |
96 | - (void)cyl_setBadgeAnimationType:(CYLBadgeAnimationType)animationType {
97 | [kActualView cyl_setBadgeAnimationType:animationType];
98 | }
99 |
100 | - (CGRect)cyl_badgeFrame {
101 | return [kActualView cyl_badgeFrame];
102 | }
103 |
104 | - (void)cyl_setBadgeFrame:(CGRect)badgeFrame {
105 | [kActualView cyl_setBadgeFrame:badgeFrame];
106 | }
107 |
108 | - (CGPoint)cyl_badgeCenterOffset {
109 | return [kActualView cyl_badgeCenterOffset];
110 | }
111 |
112 | - (void)cyl_setBadgeCenterOffset:(CGPoint)badgeCenterOffset {
113 | [kActualView cyl_setBadgeCenterOffset:badgeCenterOffset];
114 | }
115 |
116 | - (NSInteger)cyl_badgeMaximumBadgeNumber {
117 | return [kActualView cyl_badgeMaximumBadgeNumber];
118 | }
119 |
120 | - (void)cyl_setBadgeMaximumBadgeNumber:(NSInteger)badgeMaximumBadgeNumber {
121 | [kActualView cyl_setBadgeMaximumBadgeNumber:badgeMaximumBadgeNumber];
122 | }
123 |
124 | - (CGFloat)cyl_badgeMargin {
125 | return [kActualView cyl_badgeMargin];
126 | }
127 |
128 | - (void)cyl_setBadgeMargin:(CGFloat)badgeMargin {
129 | [kActualView cyl_setBadgeMargin:badgeMargin];
130 | }
131 |
132 | - (CGFloat)cyl_badgeRadius {
133 | return [kActualView cyl_badgeRadius];
134 | }
135 |
136 | - (void)cyl_setBadgeRadius:(CGFloat)badgeRadius {
137 | [kActualView cyl_setBadgeRadius:badgeRadius];
138 | }
139 |
140 | - (CGFloat)cyl_badgeCornerRadius {
141 | return [kActualView cyl_badgeCornerRadius];
142 | }
143 |
144 | - (void)cyl_setBadgeCornerRadius:(CGFloat)cyl_badgeCornerRadius {
145 | [kActualView cyl_setBadgeCornerRadius:cyl_badgeCornerRadius];
146 | }
147 |
148 | @end
149 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIControl+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 | @class LOTAnimationView;
13 | @interface UIControl (CYLTabBarControllerExtention)
14 |
15 | - (LOTAnimationView *)cyl_lottieAnimationView;
16 | - (BOOL)cyl_isChildViewControllerPlusButton;
17 |
18 | /*!
19 | * 调用该方法前已经添加了系统的角标,调用该方法后,系统的角标并未被移除,只是被隐藏,调用 `-cyl_removeTabBadgePoint` 后会重新展示。
20 | */
21 | - (void)cyl_showTabBadgePoint;
22 | - (void)cyl_removeTabBadgePoint;
23 | - (BOOL)cyl_isShowTabBadgePoint;
24 | - (BOOL)cyl_isSelected;
25 | @property (nonatomic, strong, setter=cyl_setTabBadgePointView:, getter=cyl_tabBadgePointView) UIView *cyl_tabBadgePointView;
26 | @property (nonatomic, assign, setter=cyl_setTabBadgePointViewOffset:, getter=cyl_tabBadgePointViewOffset) UIOffset cyl_tabBadgePointViewOffset;
27 | /*!
28 | * PlusButton without plusViewController equals NSNotFound
29 | */
30 | @property (nonatomic, assign, getter=cyl_tabBarChildViewControllerIndex, setter=cyl_setTabBarChildViewControllerIndex:) NSInteger cyl_tabBarChildViewControllerIndex;
31 |
32 | /*!
33 | * PlusButton has its own visible index,
34 | * in this case PlusButton is same as TabBarItem
35 | */
36 | @property (nonatomic, assign, getter=cyl_tabBarItemVisibleIndex, setter=cyl_setTabBarItemVisibleIndex:) NSInteger cyl_tabBarItemVisibleIndex;
37 |
38 | @property (nonatomic, assign, getter=cyl_shouldNotSelect, setter=cyl_setShouldNotSelect:) BOOL cyl_shouldNotSelect;
39 |
40 | - (void)cyl_addLottieImageWithLottieURL:(NSURL *)lottieURL
41 | size:(CGSize)size;
42 |
43 | - (void)cyl_replaceTabImageViewWithNewView:(UIView *)newView
44 | show:(BOOL)show;
45 |
46 | - (void)cyl_replaceTabImageViewWithNewView:(UIView *)newView
47 | offset:(UIOffset)offset
48 | show:(BOOL)show
49 | completion:(void(^)(BOOL isReplaced, UIControl *tabBarButton, UIView *newView))completion;
50 |
51 | - (void)cyl_replaceTabButtonWithNewView:(UIView *)newView
52 | show:(BOOL)show;
53 |
54 | - (void)cyl_replaceTabButtonWithNewView:(UIView *)newView
55 | offset:(UIOffset)offset
56 | show:(BOOL)theShow
57 | completion:(void(^)(BOOL isReplaced, UIControl *tabBarButton, UIView *newView))completion;
58 |
59 | @end
60 |
61 | NS_ASSUME_NONNULL_END
62 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIImage+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+CYLTabBarControllerExtention.h
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 18/4/2019.
6 | // Copyright © 2019 微博@iOS程序犭袁. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface UIImage (CYLTabBarControllerExtention)
14 |
15 | + (UIImage *)cyl_imageWithColor:(UIColor *)color size:(CGSize)size;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIImage+CYLTabBarControllerExtention.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+CYLTabBarControllerExtention.m
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 18/4/2019.
6 | // Copyright © 2019 微博@iOS程序犭袁. All rights reserved.
7 | //
8 |
9 | #import "UIImage+CYLTabBarControllerExtention.h"
10 |
11 | @implementation UIImage (CYLTabBarControllerExtention)
12 |
13 | + (UIImage *)cyl_imageWithColor:(UIColor *)color size:(CGSize)size {
14 | if (!color || size.width <= 0 || size.height <= 0) return nil;
15 | CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
16 | UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
17 | CGContextRef context = UIGraphicsGetCurrentContext();
18 | CGContextSetFillColorWithColor(context, color.CGColor);
19 | CGContextFillRect(context, rect);
20 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
21 | UIGraphicsEndImageContext();
22 | return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
23 | }
24 |
25 | + (UIImage *)cyl_assetImageName:(NSString *)assetImageName
26 | userInterfaceStyle:(NSInteger)userInterfaceStyle {
27 | UIImage *image = [UIImage imageNamed:@"image"];
28 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
29 | if (@available(iOS 13.0, *)) {
30 | #if __has_include()
31 | UITraitCollection *trait;
32 | // UIUserInterfaceStyle currentUserInterfaceStyle = [UITraitCollection currentTraitCollection].userInterfaceStyle;
33 | // if (currentUserInterfaceStyle == UIUserInterfaceStyleUnspecified) {
34 | // currentUserInterfaceStyle == userInterfaceStyle;
35 | // }
36 | trait = [UITraitCollection traitCollectionWithUserInterfaceStyle:userInterfaceStyle];
37 | image = [image.imageAsset imageWithTraitCollection:trait];
38 | //TODO:
39 | return image;
40 | #else
41 | #endif
42 | }
43 | #endif
44 | return image;
45 | }
46 |
47 | + (UIImage *)cyl_lightOrDarkModeImageWithLightImage:(UIImage *)lightImage
48 | darkImage:(UIImage *)darkImage {
49 | return [self cyl_lightOrDarkModeImageWithOwner:nil lightImage:lightImage darkImage:darkImage];
50 | }
51 |
52 | + (UIImage *)cyl_lightOrDarkModeImageWithOwner:(id)owner
53 | lightImageName:(NSString *)lightImageName
54 | darkImageName:(NSString *)darkImageName {
55 | UIImage *lightImage = [UIImage imageNamed:lightImageName];
56 | UIImage *darkImage= [UIImage imageNamed:darkImageName];
57 | UIImage *lightOrDarkImage = [UIImage cyl_lightOrDarkModeImageWithOwner:owner lightImage:lightImage darkImage:darkImage];
58 | return lightOrDarkImage;
59 | }
60 |
61 | + (UIImage *)cyl_lightOrDarkModeImageWithOwner:(id)owner
62 | lightImage:(UIImage *)lightImage
63 | darkImage:(UIImage *)darkImage {
64 | BOOL isDarkImage = NO;
65 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
66 | if (@available(iOS 13.0, *)) {
67 | #if __has_include()
68 | //TODO:
69 | UITraitCollection *traitCollection = owner.traitCollection ?: [UITraitCollection currentTraitCollection];
70 | UIUserInterfaceStyle userInterfaceStyle = traitCollection.userInterfaceStyle;
71 | isDarkImage = (userInterfaceStyle == UIUserInterfaceStyleDark);
72 | #else
73 | #endif
74 | }
75 | #endif
76 | UIImage *image = (isDarkImage ? darkImage : lightImage);
77 | return image;
78 | }
79 |
80 | @end
81 |
--------------------------------------------------------------------------------
/CYLTabBarController/UITabBarItem+CYLBadgeExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 | #import "UIView+CYLBadgeExtention.h"
11 | #import "CYLBadgeProtocol.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface UITabBarItem (CYLBadgeExtention)
16 |
17 | - (BOOL)cyl_isShowBadge;
18 | /**
19 | * show badge with red dot style and CYLBadgeAnimationTypeNone by default.
20 | */
21 | - (void)cyl_showBadge;
22 |
23 | /**
24 | *
25 | * @param value String value, default is `nil`. if value equal @"" means red dot style.
26 | * @param animationType animationType
27 | * @attention
28 | - 调用该方法前已经添加了系统的角标,调用该方法后,系统的角标并未被移除,只是被隐藏,调用 `-cyl_removeTabBadgePoint` 后会重新展示。
29 | - 不支持 CYLPlusChildViewController 对应的 TabBarItem 角标设置,调用会被忽略。
30 | */
31 | - (void)cyl_showBadgeValue:(NSString *)value
32 | animationType:(CYLBadgeAnimationType)animationType;
33 |
34 | /**
35 | * clear badge(hide badge)
36 | */
37 | - (void)cyl_clearBadge;
38 |
39 | /**
40 | * make bage(if existing) not hiden
41 | */
42 | - (void)cyl_resumeBadge;
43 |
44 | - (BOOL)cyl_isPauseBadge;
45 |
46 | @end
47 |
48 | NS_ASSUME_NONNULL_END
49 |
50 |
--------------------------------------------------------------------------------
/CYLTabBarController/UITabBarItem+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface UITabBarItem (CYLTabBarControllerExtention)
14 |
15 | @property (nonatomic, readonly) UIControl *cyl_tabButton;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/CYLTabBarController/UITabBarItem+CYLTabBarControllerExtention.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "UITabBarItem+CYLTabBarControllerExtention.h"
10 | #import "UIControl+CYLTabBarControllerExtention.h"
11 |
12 | @implementation UITabBarItem (CYLTabBarControllerExtention)
13 |
14 | - (UIControl *)cyl_tabButton {
15 | UIControl *control = [self valueForKeyPath:@"_view"];
16 | return control;
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIView+CYLBadgeExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 | #import "CYLBadgeProtocol.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | #pragma mark -- badge apis
15 |
16 | @interface UIView (CYLBadgeExtention)
17 |
18 | - (BOOL)cyl_isShowBadge;
19 |
20 | /**
21 | * show badge with red dot style and CYLBadgeAnimationTypeNone by default.
22 | */
23 | - (void)cyl_showBadge;
24 |
25 | /**
26 | * cyl_showBadge
27 | *
28 | * @param value String value, default is `nil`. if value equal @"" means red dot style.
29 | * @param animationType animationType
30 | */
31 | - (void)cyl_showBadgeValue:(NSString *)value
32 | animationType:(CYLBadgeAnimationType)animationType;
33 | ;
34 |
35 | // wBadgeStyle default is CYLBadgeStyleNumber ;
36 | // CYLBadgeAnimationType defualt is CYLBadgeAnimationTypeNone
37 | - (void)cyl_showBadgeValue:(NSString *)value;
38 |
39 | /**
40 | * clear badge(hide badge)
41 | */
42 | - (void)cyl_clearBadge;
43 |
44 | /**
45 | * make bage(if existing) not hiden
46 | */
47 | - (void)cyl_resumeBadge;
48 |
49 | - (BOOL)cyl_isPauseBadge;
50 |
51 | - (BOOL)cyl_isInvisiable;
52 | - (BOOL)cyl_canNotResponseEvent;
53 |
54 | @end
55 |
56 | NS_ASSUME_NONNULL_END
57 |
58 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIView+CYLTabBarControllerExtention.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "CYLConstants.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 |
16 |
17 | @interface UIView (CYLTabBarControllerExtention)
18 |
19 | - (BOOL)cyl_isPlusButton;
20 | - (BOOL)cyl_isTabButton;
21 | - (BOOL)cyl_isTabImageView;
22 | - (BOOL)cyl_isTabLabel;
23 | - (BOOL)cyl_isTabBadgeView;
24 | - (BOOL)cyl_isTabBackgroundView;
25 | - (UIView *)cyl_tabBadgeView;
26 | - (UIImageView *)cyl_tabImageView;
27 | - (UILabel *)cyl_tabLabel;
28 | - (UIImageView *)cyl_tabShadowImageView;
29 | - (UIVisualEffectView *)cyl_tabEffectView;
30 | - (BOOL)cyl_isLottieAnimationView;
31 | - (UIView *)cyl_tabBackgroundView;
32 | + (UIView *)cyl_tabBadgePointViewWithClolor:(UIColor *)color radius:(CGFloat)radius;
33 | - (NSArray *)cyl_allSubviews;
34 |
35 | @end
36 |
37 | @interface UIView (CYLTabBarControllerExtentionDeprecated)
38 | - (UIView *)cyl_tabBadgeBackgroundView CYL_DEPRECATED("Deprecated in 1.6.0. Use `+[CYLPlusButton cyl_tabBackgroundView]` instead.");
39 | - (UIView *)cyl_tabBadgeBackgroundSeparator CYL_DEPRECATED("Deprecated in 1.6.0. Use `+[CYLPlusButton cyl_tabShadowImageView]` instead.");
40 |
41 |
42 | @end
43 |
44 | NS_ASSUME_NONNULL_END
45 |
--------------------------------------------------------------------------------
/CYLTabBarController/UIViewController+CYLNavigationControllerExtention.h:
--------------------------------------------------------------------------------
1 | /*
2 | // CYLTabBarController
3 | // CYLTabBarController
4 | //
5 | // Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 03/06/19.
6 | // Copyright © 2019 https://github.com/ChenYilong . All rights reserved.
7 | */
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface UIViewController (CYLNavigationControllerExtention)
14 |
15 | @property (nonatomic, assign, getter=cyl_disablePopGestureRecognizer, setter=cyl_setDisablePopGestureRecognizer:) BOOL cyl_disablePopGestureRecognizer;
16 | @property (nonatomic, assign, getter=cyl_hideNavigationBarSeparator, setter=cyl_setHideNavigationBarSeparator:) BOOL cyl_hideNavigationBarSeparator;
17 | @property (nonatomic, assign, getter=cyl_navigationBarHidden, setter=cyl_setNavigationBarHidden:) BOOL cyl_navigationBarHidden;
18 |
19 | /*!
20 | * 使用方法:用在viewWillDisappear/dealloc
21 | * 作用:在左滑动的过渡的时间段内禁用interactivePopGestureRecognizer
22 | */
23 | - (void)cyl_disableInteractivePopGestureRecognizer;
24 | /*!
25 | * use in viewDidDisappear
26 | * 作用:在左滑动的结束后启用interactivePopGestureRecognizer
27 | */
28 | - (void)cyl_enableInteractivePopGestureRecognizer;
29 | /*!
30 | * use in viewDidAppear
31 | * 当新的视图控制器加载完成后再启用
32 | */
33 | - (void)cyl_resetInteractivePopGestureRecognizer;
34 | /*!
35 | * use in viewWillAppear
36 | */
37 | - (void)cyl_hideNavigationBarSeparatorIfNeeded;
38 |
39 | - (BOOL)cyl_shouldNavigationBarVisible;
40 | //use in viewWillDisappear
41 | - (void)cyl_setNavigationBarVisibleIfNeeded:(BOOL)animated;
42 | //use in viewWillAppear
43 | - (void)cyl_setNavigationBarHiddenIfNeeded:(BOOL)animated;
44 |
45 | - (void)cyl_viewWillAppearNavigationSetting:(BOOL)animated;
46 | - (void)cyl_viewWillDisappearNavigationSetting:(BOOL)animated;
47 | - (void)cyl_viewDidDisappearNavigationSetting:(BOOL)animated;
48 | - (void)cyl_viewDidAppearNavigationSetting:(BOOL)animated;
49 | - (void)cyl_deallocNavigationSetting;
50 |
51 | @end
52 |
53 | NS_ASSUME_NONNULL_END
54 |
--------------------------------------------------------------------------------
/CYLTabBarControllerTests/CYLTabBarControllerTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLTabBarControllerTests.m
3 | // CYLTabBarControllerTests
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 15/10/25.
6 | // Copyright (c) 2018年 https://github.com/ChenYilong .All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface CYLTabBarControllerTests : XCTestCase
13 |
14 | @end
15 |
16 | @implementation CYLTabBarControllerTests
17 |
18 | - (void)setUp {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown {
24 | // Put teardown code here. This method is called after the invocation of each test method in the class.
25 | [super tearDown];
26 | }
27 |
28 | - (void)testExample {
29 | // This is an example of a functional test case.
30 | XCTAssert(YES, @"Pass");
31 | }
32 |
33 | - (void)testPerformanceExample {
34 | // This is an example of a performance test case.
35 | [self measureBlock:^{
36 | // Put the code you want to measure the time of here.
37 | }];
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/CYLTabBarControllerTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
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 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example-Swift/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import CYLTabBarController
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate, UITabBarControllerDelegate {
13 | var window: UIWindow?
14 | func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
15 | CYLPlusButtonSubclass.register()
16 |
17 | let mainTabBarVc = MainTabBarController(viewControllers: viewControllers(), tabBarItemsAttributes: tabBarItemsAttributesForController())
18 |
19 | window = UIWindow()
20 | window?.frame = UIScreen.main.bounds
21 | window?.rootViewController = mainTabBarVc
22 | mainTabBarVc?.hideTabBadgeBackgroundSeparator()
23 | mainTabBarVc.hideTabBarShadowImageView();
24 |
25 | window?.makeKeyAndVisible()
26 |
27 | UITabBar.appearance().backgroundColor = UIColor.white
28 |
29 | return true
30 | }
31 |
32 | func viewControllers() -> [UINavigationController] {
33 | let home = UINavigationController(rootViewController: HomeViewController())
34 | let connection = UINavigationController(rootViewController: ConnectionViewController())
35 | let message = UINavigationController(rootViewController: MessageViewController())
36 | let personal = UINavigationController(rootViewController: PersonalViewController())
37 | let viewControllers = [home, connection, message, personal]
38 |
39 | return viewControllers
40 | }
41 |
42 | func tabBarItemsAttributesForController() -> [[String: String]] {
43 | let tabBarItemOne = [CYLTabBarItemTitle: "首页",
44 | CYLTabBarItemImage: "home_normal",
45 | CYLTabBarItemSelectedImage: "home_highlight"]
46 |
47 | let tabBarItemTwo = [CYLTabBarItemTitle: "同城",
48 | CYLTabBarItemImage: "mycity_normal",
49 | CYLTabBarItemSelectedImage: "mycity_highlight"]
50 |
51 | let tabBarItemThree = [CYLTabBarItemTitle: "消息",
52 | CYLTabBarItemImage: "message_normal",
53 | CYLTabBarItemSelectedImage: "message_highlight"]
54 |
55 | let tabBarItemFour = [CYLTabBarItemTitle: "我的",
56 | CYLTabBarItemImage: "account_normal",
57 | CYLTabBarItemSelectedImage: "account_highlight"]
58 | let tabBarItemsAttributes = [tabBarItemOne, tabBarItemTwo, tabBarItemThree, tabBarItemFour]
59 | return tabBarItemsAttributes
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Example-Swift/CYLTabBarController-Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example-Swift/CYLTabBarController-Swift.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example-Swift/CYLTabBarController-Swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example-Swift/CYLTabbarController-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example-Swift/CYLTabbarController-Swift.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | CYLTabBarController-Swift.xcscheme
8 |
9 | orderHint
10 | 2
11 |
12 | CYLTabBarController-Swift.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 0
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Example-Swift/MainTabBarController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MainTabBarController.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import CYLTabBarController
9 | import UIKit
10 |
11 | class MainTabBarController: CYLTabBarController {
12 | override func viewDidLoad() {
13 | super.viewDidLoad()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Example-Swift/Module/Connection/Controller/ConnectionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ConnectionViewController.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import UIKit
9 |
10 | class ConnectionViewController: UIViewController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | view.backgroundColor = UIColor.blue
15 | }
16 |
17 | override func didReceiveMemoryWarning() {
18 | super.didReceiveMemoryWarning()
19 | // Dispose of any resources that can be recreated.
20 | }
21 |
22 | /*
23 | // MARK: - Navigation
24 |
25 | // In a storyboard-based application, you will often want to do a little preparation before navigation
26 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
27 | // Get the new view controller using segue.destinationViewController.
28 | // Pass the selected object to the new view controller.
29 | }
30 | */
31 | }
32 |
--------------------------------------------------------------------------------
/Example-Swift/Module/Home/Controller/HomeViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeViewController.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import UIKit
9 |
10 | class HomeViewController: UIViewController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | view.backgroundColor = UIColor.orange
15 | }
16 |
17 | override func didReceiveMemoryWarning() {
18 | super.didReceiveMemoryWarning()
19 | // Dispose of any resources that can be recreated.
20 | }
21 |
22 | /*
23 | // MARK: - Navigation
24 |
25 | // In a storyboard-based application, you will often want to do a little preparation before navigation
26 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
27 | // Get the new view controller using segue.destinationViewController.
28 | // Pass the selected object to the new view controller.
29 | }
30 | */
31 | }
32 |
--------------------------------------------------------------------------------
/Example-Swift/Module/Message/Controller/MessageViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MessageViewController.swift
3 | // SwiftDemo
4 | //
5 | // Created by Anthony on 2017/12/29.
6 | // Copyright © 2017年 Anthony. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class MessageViewController: UIViewController {
12 | // private weak var myLabel1:UILabel!
13 | // private weak var myLabel2:UILabel!
14 | // private weak var myLabel3:UILabel!
15 | // private weak var myLabel4:UILabel!
16 | // private weak var myLabel5:UILabel!
17 | // private weak var myLabel6:UILabel!
18 | //
19 | // var buttonColor: UIColor {
20 | // return UIColor(named: "buttonColor")!
21 | // }
22 | //
23 | // var labelColor: UIColor {
24 | // return UIColor(named: "labelColor")!
25 | // }
26 | //
27 | // var textFieldColor: UIColor {
28 | // return UIColor(named: "textFieldColor")!
29 | // }
30 |
31 | override func viewDidLoad() {
32 | super.viewDidLoad()
33 |
34 | view.backgroundColor = UIColor.gray
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Example-Swift/Module/Personal/Controller/PersonalViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PersonalViewController.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import UIKit
9 |
10 | class PersonalViewController: UIViewController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | view.backgroundColor = UIColor.green
15 | }
16 |
17 | override func didReceiveMemoryWarning() {
18 | super.didReceiveMemoryWarning()
19 | // Dispose of any resources that can be recreated.
20 | }
21 |
22 | /*
23 | // MARK: - Navigation
24 |
25 | // In a storyboard-based application, you will often want to do a little preparation before navigation
26 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
27 | // Get the new view controller using segue.destinationViewController.
28 | // Pass the selected object to the new view controller.
29 | }
30 | */
31 | }
32 |
--------------------------------------------------------------------------------
/Example-Swift/Module/Publish/Controller/PublishViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PublishViewController.swift
3 | // CYLTabbarController-Swift
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import UIKit
9 |
10 | class PublishViewController: UIViewController {
11 | override func viewDidLoad() {
12 | super.viewDidLoad()
13 |
14 | view.backgroundColor = UIColor.red
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 | /*
25 | // MARK: - Navigation
26 |
27 | // In a storyboard-based application, you will often want to do a little preparation before navigation
28 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
29 | // Get the new view controller using segue.destinationViewController.
30 | // Pass the selected object to the new view controller.
31 | }
32 | */
33 | }
34 |
--------------------------------------------------------------------------------
/Example-Swift/Other/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" : "Icon-Small.png",
17 | "scale" : "1x"
18 | },
19 | {
20 | "size" : "29x29",
21 | "idiom" : "iphone",
22 | "filename" : "Icon-Small@2x.png",
23 | "scale" : "2x"
24 | },
25 | {
26 | "size" : "29x29",
27 | "idiom" : "iphone",
28 | "filename" : "Icon-Small@3x.png",
29 | "scale" : "3x"
30 | },
31 | {
32 | "size" : "40x40",
33 | "idiom" : "iphone",
34 | "filename" : "Icon-40@2x.png",
35 | "scale" : "2x"
36 | },
37 | {
38 | "size" : "40x40",
39 | "idiom" : "iphone",
40 | "filename" : "Icon-40@3x.png",
41 | "scale" : "3x"
42 | },
43 | {
44 | "size" : "57x57",
45 | "idiom" : "iphone",
46 | "filename" : "Icon.png",
47 | "scale" : "1x"
48 | },
49 | {
50 | "size" : "57x57",
51 | "idiom" : "iphone",
52 | "filename" : "Icon@2x.png",
53 | "scale" : "2x"
54 | },
55 | {
56 | "size" : "60x60",
57 | "idiom" : "iphone",
58 | "filename" : "Icon-60@2x.png",
59 | "scale" : "2x"
60 | },
61 | {
62 | "size" : "60x60",
63 | "idiom" : "iphone",
64 | "filename" : "Icon-60@3x.png",
65 | "scale" : "3x"
66 | },
67 | {
68 | "idiom" : "ipad",
69 | "size" : "20x20",
70 | "scale" : "1x"
71 | },
72 | {
73 | "idiom" : "ipad",
74 | "size" : "20x20",
75 | "scale" : "2x"
76 | },
77 | {
78 | "size" : "29x29",
79 | "idiom" : "ipad",
80 | "filename" : "Icon-Small.png",
81 | "scale" : "1x"
82 | },
83 | {
84 | "size" : "29x29",
85 | "idiom" : "ipad",
86 | "filename" : "Icon-Small@2x.png",
87 | "scale" : "2x"
88 | },
89 | {
90 | "size" : "40x40",
91 | "idiom" : "ipad",
92 | "filename" : "Icon-40.png",
93 | "scale" : "1x"
94 | },
95 | {
96 | "size" : "40x40",
97 | "idiom" : "ipad",
98 | "filename" : "Icon-40@2x.png",
99 | "scale" : "2x"
100 | },
101 | {
102 | "size" : "50x50",
103 | "idiom" : "ipad",
104 | "filename" : "Icon-Small-50.png",
105 | "scale" : "1x"
106 | },
107 | {
108 | "size" : "50x50",
109 | "idiom" : "ipad",
110 | "filename" : "Icon-Small-50@2x.png",
111 | "scale" : "2x"
112 | },
113 | {
114 | "size" : "72x72",
115 | "idiom" : "ipad",
116 | "filename" : "Icon-72.png",
117 | "scale" : "1x"
118 | },
119 | {
120 | "size" : "72x72",
121 | "idiom" : "ipad",
122 | "filename" : "Icon-72@2x.png",
123 | "scale" : "2x"
124 | },
125 | {
126 | "size" : "76x76",
127 | "idiom" : "ipad",
128 | "filename" : "Icon-76.png",
129 | "scale" : "1x"
130 | },
131 | {
132 | "size" : "76x76",
133 | "idiom" : "ipad",
134 | "filename" : "Icon-76@2x.png",
135 | "scale" : "2x"
136 | },
137 | {
138 | "size" : "83.5x83.5",
139 | "idiom" : "ipad",
140 | "filename" : "Icon-83.5@2x.png",
141 | "scale" : "2x"
142 | },
143 | {
144 | "idiom" : "ios-marketing",
145 | "size" : "1024x1024",
146 | "scale" : "1x"
147 | }
148 | ],
149 | "info" : {
150 | "version" : 1,
151 | "author" : "xcode"
152 | }
153 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-72.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/AppIcon.appiconset/Icon@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-1792h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-1792h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-2436h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-2436h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-2688h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-2688h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-736h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-1792h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-1792h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-2436h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-2436h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-2688h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-2688h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default-Portrait-736h@3x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/account_highlight.imageset/account_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/account_highlight.imageset/account_highlight@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/account_normal.imageset/account_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/account_normal.imageset/account_normal@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/home_highlight.imageset/home_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/home_highlight.imageset/home_highlight@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/home_normal.imageset/home_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/home_normal.imageset/home_normal@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/message_highlight.imageset/message_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/message_highlight.imageset/message_highlight@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/message_normal.imageset/message_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/message_normal.imageset/message_normal@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/mycity_highlight.imageset/mycity_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/mycity_highlight.imageset/mycity_highlight@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/mycity_normal.imageset/mycity_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/mycity_normal.imageset/mycity_normal@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/post_normal.imageset/post_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/post_normal.imageset/post_normal@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/tabbar_background.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_background@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 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/tabbar_background.imageset/tabbar_background@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/tabbar_background.imageset/tabbar_background@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example-Swift/Other/Assets.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example-Swift/Other/Assets.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png
--------------------------------------------------------------------------------
/Example-Swift/Other/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 |
--------------------------------------------------------------------------------
/Example-Swift/Other/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 |
28 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Example-Swift/Other/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 | UIMainStoryboardFile
24 | Main
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 |
--------------------------------------------------------------------------------
/Example-Swift/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 | source 'git@github.com:CocoaPods/Specs.git'
4 |
5 |
6 | # Uncomment the next line to define a global platform for your project
7 | # platform :ios, '9.0'
8 | source 'git@github.com:CocoaPods/Specs.git'
9 |
10 | platform:ios,'9.0'
11 | inhibit_all_warnings!
12 |
13 | target 'CYLTabBarController-Swift' do
14 | use_frameworks!
15 | pod 'CYLTabBarController', :path => '../'
16 | end
17 |
--------------------------------------------------------------------------------
/Example-Swift/View/CYLPlusButtonSubclass.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusButtonSubclass.swift
3 | //
4 | // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
5 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
6 | //
7 |
8 | import CYLTabBarController
9 | import UIKit
10 |
11 | class CYLPlusButtonSubclass: CYLPlusButton, CYLPlusButtonSubclassing {
12 | static func plusButton() -> Any! {
13 | let button = CYLPlusButtonSubclass()
14 | button.setImage(UIImage(named: "post_normal"), for: .normal)
15 | button.titleLabel?.textAlignment = .center
16 |
17 | button.titleLabel?.font = UIFont.systemFont(ofSize: 10)
18 |
19 | button.setTitle("发布", for: .normal)
20 | button.setTitleColor(UIColor.gray, for: .normal)
21 |
22 | button.setTitle("选中", for: .selected)
23 | button.setTitleColor(UIColor.blue, for: .selected)
24 |
25 | button.adjustsImageWhenHighlighted = false
26 | button.sizeToFit()
27 | // button.addTarget(self, action: #selector(testClick(sender:)), for: .touchUpInside)
28 | return button
29 | }
30 |
31 | // @objc static func testClick(sender: UIButton){
32 | // print("testClick")
33 | // }
34 |
35 | static func indexOfPlusButtonInTabBar() -> UInt {
36 | return 2
37 | }
38 |
39 | static func multiplier(ofTabBarHeight _: CGFloat) -> CGFloat {
40 | return 0.3
41 | }
42 |
43 | static func constantOfPlusButtonCenterYOffset(forTabBarHeight _: CGFloat) -> CGFloat {
44 | return -10
45 | }
46 |
47 | static func plusChildViewController() -> UIViewController! {
48 | let vc = PublishViewController()
49 | let nav = UINavigationController(rootViewController: vc)
50 | return nav
51 | }
52 |
53 | static func shouldSelectPlusChildViewController() -> Bool {
54 | return true
55 | }
56 |
57 | override func layoutSubviews() {
58 | super.layoutSubviews()
59 |
60 | // tabbar UI layout setup
61 | let imageViewEdgeWidth: CGFloat = bounds.size.width * 0.7
62 | let imageViewEdgeHeight: CGFloat = imageViewEdgeWidth * 0.9
63 |
64 | let centerOfView = bounds.size.width * 0.5
65 | let labelLineHeight = titleLabel!.font.lineHeight
66 | let verticalMargin = (bounds.size.height - labelLineHeight - imageViewEdgeHeight) * 0.5
67 |
68 | let centerOfImageView = verticalMargin + imageViewEdgeHeight * 0.5
69 | let centerOfTitleLabel = imageViewEdgeHeight + verticalMargin * 2 + labelLineHeight * 0.5 + 10
70 |
71 | // imageView position layout
72 | imageView!.bounds = CGRect(x: 0, y: 0, width: imageViewEdgeWidth, height: imageViewEdgeHeight)
73 | imageView!.center = CGPoint(x: centerOfView, y: centerOfImageView)
74 |
75 | // title position layout
76 | titleLabel!.bounds = CGRect(x: 0, y: 0, width: bounds.size.width, height: labelLineHeight)
77 | titleLabel!.center = CGPoint(x: centerOfView, y: centerOfTitleLabel)
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/Example/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // CYLTabBarControllerDemo
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
17 |
--------------------------------------------------------------------------------
/Example/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "CYLPlusButtonSubclass.h"
11 | #import "CYLMainRootViewController.h"
12 |
13 | @interface AppDelegate ()
14 | @property (nonatomic, strong) NSMutableData *data;
15 | @end
16 |
17 | @implementation AppDelegate
18 |
19 |
20 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
21 |
22 | [UIApplication sharedApplication].statusBarHidden = NO;
23 | // 设置主窗口,并设置根控制器
24 | self.window = [[UIWindow alloc] init];
25 | self.window.frame = [UIScreen mainScreen].bounds;
26 | [self.window makeKeyAndVisible];
27 | CYLMainRootViewController *rootViewController = [[CYLMainRootViewController alloc] init];
28 | [self.window setRootViewController:rootViewController];
29 | [self setUpNavigationBarAppearance];
30 | return YES;
31 | }
32 |
33 | #pragma clang diagnostic push
34 | #pragma clang diagnostic ignored "-Wmethod-signatures"
35 | - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
36 | //设置强制旋转屏幕
37 | if (self.cyl_isForceLandscape) {
38 | //只支持横屏
39 | return UIInterfaceOrientationMaskLandscape;
40 | } else {
41 | //只支持竖屏
42 | return UIInterfaceOrientationMaskPortrait;
43 | }
44 | }
45 | #pragma clang diagnostic pop
46 |
47 | /**
48 | * 设置navigationBar样式
49 | */
50 | - (void)setUpNavigationBarAppearance {
51 | UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];
52 | UIColor *backgroundColor = [UIColor cyl_systemBackgroundColor];
53 | NSDictionary *textAttributes = nil;
54 | UIColor *labelColor = [UIColor cyl_labelColor];
55 |
56 | if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
57 | textAttributes = @{
58 | NSFontAttributeName : [UIFont boldSystemFontOfSize:18],
59 | NSForegroundColorAttributeName : labelColor,
60 | };
61 | } else {
62 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
63 | textAttributes = @{
64 | UITextAttributeFont : [UIFont boldSystemFontOfSize:18],
65 | UITextAttributeTextColor : labelColor,
66 | UITextAttributeTextShadowColor : [UIColor clearColor],
67 | UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero],
68 | };
69 | #endif
70 | }
71 | [navigationBarAppearance setBarTintColor:backgroundColor];
72 | [navigationBarAppearance setTitleTextAttributes:textAttributes];
73 | }
74 |
75 | @end
76 |
--------------------------------------------------------------------------------
/Example/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
23 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Example/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 |
--------------------------------------------------------------------------------
/Example/CYLMainRootViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMainRootViewController.h
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 7/3/2019.
6 | // Copyright © 2019 微博@iOS程序犭袁. All rights reserved.
7 | //
8 | #import
9 |
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | NS_ASSUME_NONNULL_BEGIN
17 |
18 | @interface CYLMainRootViewController : UINavigationController
19 |
20 | - (CYLTabBarController *)createNewTabBarWithContext:(NSString *)context;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Example/CYLMainRootViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMainRootViewController.m
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 7/3/2019.
6 | // Copyright © 2019 微博@iOS程序犭袁. All rights reserved.
7 | //
8 |
9 | #import "CYLMainRootViewController.h"
10 | #import "MainTabBarController.h"
11 | #import "CYLPlusButtonSubclass.h"
12 |
13 | @interface CYLMainRootViewController ()
14 |
15 | @end
16 |
17 | @implementation CYLMainRootViewController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 | self.navigationBarHidden = YES;
22 | self.view.backgroundColor = [UIColor whiteColor];
23 | [self createNewTabBar];
24 | }
25 |
26 | - (CYLTabBarController *)createNewTabBar {
27 | [CYLPlusButtonSubclass registerPlusButton];
28 | return [self createNewTabBarWithContext:nil];
29 | }
30 |
31 | - (CYLTabBarController *)createNewTabBarWithContext:(NSString *)context {
32 | MainTabBarController *tabBarController = [[MainTabBarController alloc] initWithContext:context];
33 | self.viewControllers = @[tabBarController];
34 | return tabBarController;
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Home/CYLHomeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLHomeViewController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface CYLHomeViewController : CYLBaseTableViewController
17 |
18 | - (void)refresh;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Message/CYLMessageViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMessageViewController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface CYLMessageViewController : CYLBaseTableViewController
17 |
18 | - (void)refresh;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Message/CYLMessageViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMessageViewController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLMessageViewController.h"
10 | #import "CYLMainRootViewController.h"
11 | #import
12 |
13 | @implementation CYLMessageViewController
14 |
15 | #pragma mark - View lifecycle
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | self.view.backgroundColor = [UIColor whiteColor];
20 | self.navigationItem.title = @"消息"; //✅sets navigation bar title.The right way to set the title of the navigation
21 | self.tabBarItem.title = @"消息"; //❌sets tab bar title. Even the `tabBarItem.title` changed, this will be ignored in tabbar.
22 | //self.title = @"消息1"; //❌sets both of these. Do not do this‼️‼️ This may cause something strange like this : http://i68.tinypic.com/282l3x4.jpg .
23 | __weak __typeof(self) weakSelf = self;
24 | self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
25 | //Call this Block When enter the refresh status automatically
26 | NSUInteger delaySeconds = 1;
27 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
28 | dispatch_after(when, dispatch_get_main_queue(), ^{
29 | [weakSelf.tableView.mj_header endRefreshing];
30 | });
31 | }];
32 | }
33 |
34 | - (void)refresh {
35 | [self.tableView.mj_header beginRefreshing];
36 | NSUInteger delaySeconds = 1;
37 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
38 | dispatch_after(when, dispatch_get_main_queue(), ^{
39 | [self.tableView.mj_header endRefreshing];
40 | });
41 | }
42 | #pragma mark - Methods
43 |
44 | - (void)viewDidAppear:(BOOL)animated {
45 | [self.navigationItem.leftBarButtonItem cyl_showBadge];
46 | }
47 | - (void)configureCell:(UITableViewCell *)cell forIndexPath:(NSIndexPath *)indexPath {
48 | [[cell textLabel] setText:[NSString stringWithFormat:@"%@ CYLTabBarController %@", self.tabBarItem.title, @(indexPath.row)]];
49 | }
50 |
51 | #pragma mark - Table view
52 |
53 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
54 | static NSString * CellIdentifier = @"Cell";
55 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
56 | if (!cell) {
57 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
58 | }
59 | [self configureCell:cell forIndexPath:indexPath];
60 | return cell;
61 | }
62 |
63 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
64 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
65 | // NSNumber *badgeNumber = @(indexPath.row);
66 | // self.navigationItem.title = [NSString stringWithFormat:@"首页(%@)", badgeNumber]; //sets navigation bar title.
67 |
68 | // [self.navigationController.tabBarItem setBadgeValue:[NSString stringWithFormat:@"%@", badgeNumber]];
69 |
70 | // CYLTabBarControllerConfig *tabBarControllerConfig = [[CYLTabBarControllerConfig alloc] init];
71 | // CYLTabBarController *tabBarController = tabBarControllerConfig.tabBarController;
72 | // tabBarController.delegate = self;
73 | //
74 | // [self cyl_showBadgeValue:[NSString stringWithFormat:@"%@", @(indexPath.row)] animationType:CYLBadgeAnimationTypeScale];
75 | // [self pushToNewViewController];
76 | CYLTabBarController *tabBarController = [[CYLMainRootViewController new] createNewTabBarWithContext:NSStringFromClass([self class])];
77 | [self.navigationController pushViewController:tabBarController animated:YES];
78 | }
79 |
80 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
81 | return 15;
82 | }
83 |
84 | @end
85 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Mine/CYLMineViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMineViewController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface CYLMineViewController : CYLBaseTableViewController
17 |
18 | - (void)testPush;
19 |
20 | - (void)refresh;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Mine/CYLMineViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLMineViewController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLMineViewController.h"
10 | #import "CYLDetailsViewController.h"
11 | #import
12 |
13 | @implementation CYLMineViewController
14 |
15 | #pragma mark - View lifecycle
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | self.view.backgroundColor = [UIColor whiteColor];
20 | self.navigationItem.title = @"我的"; //✅sets navigation bar title.The right way to set the title of the navigation
21 | self.tabBarItem.title = @"我的"; //❌sets tab bar title. Even the `tabBarItem.title` changed, this will be ignored in tabbar.
22 | //self.title = @"我的1"; //❌sets both of these. Do not do this‼️‼️ This may cause something strange like this : http://i68.tinypic.com/282l3x4.jpg .
23 | // [self.navigationController.tabBarItem setBadgeValue:@"3"];
24 | __weak __typeof(self) weakSelf = self;
25 | self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
26 | //Call this Block When enter the refresh status automatically
27 | NSUInteger delaySeconds = 1;
28 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
29 | dispatch_after(when, dispatch_get_main_queue(), ^{
30 | [weakSelf.tableView.mj_header endRefreshing];
31 | });
32 | }];
33 | }
34 |
35 | - (void)refresh {
36 | [self.tableView.mj_header beginRefreshing];
37 | NSUInteger delaySeconds = 1;
38 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
39 | dispatch_after(when, dispatch_get_main_queue(), ^{
40 | [self.tableView.mj_header endRefreshing];
41 | });
42 | }
43 | #pragma mark - Methods
44 |
45 | - (void)configureCell:(UITableViewCell *)cell forIndexPath:(NSIndexPath *)indexPath {
46 | [[cell textLabel] setText:[NSString stringWithFormat:@"%@ CYLTabBarController %@", self.tabBarItem.title, @(indexPath.row)]];
47 | }
48 |
49 | #pragma mark - Table view
50 |
51 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
52 | static NSString * CellIdentifier = @"Cell";
53 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
54 | if (!cell) {
55 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
56 | }
57 | [self configureCell:cell forIndexPath:indexPath];
58 | return cell;
59 | }
60 |
61 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
62 | return 30;
63 | }
64 |
65 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
66 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
67 | [self cyl_showBadgeValue:[NSString stringWithFormat:@"%@", @(indexPath.row)] animationType:CYLBadgeAnimationTypeNone];
68 | [self testPush];
69 | }
70 |
71 | - (void)testPush {
72 | UIViewController *viewController = [[UIViewController alloc] init];
73 | viewController.view.backgroundColor = [UIColor redColor];
74 | [self.navigationController pushViewController:viewController animated:YES];
75 | }
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Other/CYLPlusDemoChildViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusDemoChildViewController.h
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 19/12/2017.
6 | // Copyright © 2017 微博@iOS程序犭袁. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CYLPlusDemoChildViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Classes/Module/Other/CYLPlusDemoChildViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusDemoChildViewController.m
3 | // CYLTabBarController
4 | //
5 | // Created by chenyilong on 19/12/2017.
6 | // Copyright © 2017 微博@iOS程序犭袁. All rights reserved.
7 | //
8 |
9 | #import "CYLPlusDemoChildViewController.h"
10 |
11 | @interface CYLPlusDemoChildViewController ()
12 |
13 | @end
14 |
15 | @implementation CYLPlusDemoChildViewController
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 | - (void)dealloc {
28 | NSLog(@"🔴类名与方法名:%@(在第%@行),描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @"");
29 | }
30 | /*
31 | #pragma mark - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
35 | // Get the new view controller using [segue destinationViewController].
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/Example/Classes/Module/SameCity/CYLDetailsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLDetailsViewController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by Robert Dimitrov on 11/8/14.
6 | // Copyright (c) 2014 Robert Dimitrov. All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface CYLDetailsViewController : CYLBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Classes/Module/SameCity/CYLDetailsViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLDetailsViewController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLDetailsViewController.h"
10 | #import "CYLMineViewController.h"
11 | #import "CYLSameCityViewController.h"
12 | #import "CYLHomeViewController.h"
13 | @interface CYLDetailsViewController ()
14 |
15 | @end
16 |
17 | @implementation CYLDetailsViewController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 | self.title = @"详情页";
22 | self.view.backgroundColor = [UIColor orangeColor];
23 |
24 | UILabel *label = [[UILabel alloc] init];
25 | label.text = @"点击屏幕可跳转到“我的”,执行testPush";
26 | label.frame = CGRectMake(20, 150, CGRectGetWidth(self.view.frame) - 2 * 20, 20);
27 | label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
28 | label.textAlignment = NSTextAlignmentCenter;
29 | [self.view addSubview:label];
30 | }
31 |
32 | - (void)viewDidAppear:(BOOL)animated {
33 | [super viewDidAppear:animated];
34 | [[self cyl_sharedAppDelegate] cyl_forceUpdateInterfaceOrientation:UIInterfaceOrientationLandscapeLeft];
35 | }
36 |
37 | - (void)viewDidDisappear:(BOOL)animated {
38 | [super viewDidDisappear:animated];
39 | [[self cyl_sharedAppDelegate] cyl_forceUpdateInterfaceOrientation:UIInterfaceOrientationPortrait];
40 | }
41 |
42 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
43 | // [self cyl_popSelectTabBarChildViewControllerAtIndex:4 completion:^(__kindof UIViewController *selectedTabBarChildViewController) {
44 | [self cyl_popSelectTabBarChildViewControllerForClassType:[CYLMineViewController class] completion:^(__kindof UIViewController *selectedTabBarChildViewController) {
45 | CYLMineViewController *mineViewController = selectedTabBarChildViewController;
46 | @try {
47 | [mineViewController testPush];
48 | } @catch (NSException *exception) {
49 | NSLog(@"🔴类名与方法名:%@(在第%@行),描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), exception.reason);
50 | }
51 | }];
52 | }
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/Example/Classes/Module/SameCity/CYLSameCityViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLSameCityViewController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface CYLSameCityViewController : CYLBaseTableViewController
17 |
18 | - (void)refresh;
19 |
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Classes/Module/SameCity/CYLSameCityViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CYLSameCityViewController.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15.
6 | // Copyright © 2018 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLSameCityViewController.h"
10 | #import "CYLDetailsViewController.h"
11 | #import
12 |
13 | @implementation CYLSameCityViewController
14 |
15 | - (void)viewDidLoad {
16 | [super viewDidLoad];
17 | self.view.backgroundColor = [UIColor whiteColor];
18 | self.navigationItem.title = @"同城"; //✅sets navigation bar title.The right way to set the title of the navigation
19 | self.tabBarItem.title = @"同城"; //❌sets tab bar title. Even the `tabBarItem.title` changed, this will be ignored in tabbar.
20 | //self.title = @"同城1"; //❌sets both of these. Do not do this‼️‼️ This may cause something strange like this : http://i68.tinypic.com/282l3x4.jpg .
21 | __weak __typeof(self) weakSelf = self;
22 | self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
23 | //Call this Block When enter the refresh status automatically
24 | NSUInteger delaySeconds = 1;
25 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
26 | dispatch_after(when, dispatch_get_main_queue(), ^{
27 | [weakSelf.tableView.mj_header endRefreshing];
28 | });
29 | }];
30 | }
31 |
32 | - (void)refresh {
33 | [self.tableView.mj_header beginRefreshing];
34 | NSUInteger delaySeconds = 1;
35 | dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySeconds * NSEC_PER_SEC));
36 | dispatch_after(when, dispatch_get_main_queue(), ^{
37 | [self.tableView.mj_header endRefreshing];
38 | });
39 | }
40 | #pragma mark - Methods
41 |
42 | - (void)configureCell:(UITableViewCell *)cell forIndexPath:(NSIndexPath *)indexPath {
43 | [[cell textLabel] setText:[NSString stringWithFormat:@"%@ CYLTabBarController %@", self.tabBarItem.title, @(indexPath.row)]];
44 | }
45 |
46 | #pragma mark - Table view
47 |
48 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
49 | static NSString * CellIdentifier = @"Cell";
50 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
51 | if (!cell) {
52 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
53 | }
54 | [self configureCell:cell forIndexPath:indexPath];
55 | return cell;
56 | }
57 |
58 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
59 | return 15;
60 | }
61 |
62 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
63 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
64 | UIViewController *viewController = [[CYLDetailsViewController alloc] init];
65 | // viewController.hidesBottomBarWhenPushed = YES; // This property needs to be set before pushing viewController to the navigationController's stack. Meanwhile as it is all base on CYLBaseNavigationController, there is no need to do this.
66 | [viewController cyl_setNavigationBarHidden:YES];
67 | [self.navigationController pushViewController:viewController animated:YES];
68 | }
69 |
70 | @end
71 |
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/green_lottie_tab_mine.json:
--------------------------------------------------------------------------------
1 | {"v":"5.1.16","fr":30,"ip":0,"op":30,"w":60,"h":60,"nm":"Tab_Mine_Active","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Icon_Mine_Active_Line","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[30,30,0],"ix":2},"a":{"a":0,"k":[30,30,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,1.407],[5.523,0],[0,-5.523],[-5.523,0],[0,-9.942],[0,0],[-3.893,3.302]],"o":[[0.524,-1.215],[0,-5.523],[-5.523,0],[0,5.523],[9.942,0],[0,0],[0,-5.505],[0,0]],"v":[[9.185,-5.039],[10,-9],[0,-19],[-10,-9],[0,1],[18,19],[-18,19],[-11.636,5.266]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.325,0.843,0.416,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.955],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p955_1_1_0"],"t":0,"s":[0],"e":[38]},{"i":{"x":[0.964],"y":[1]},"o":{"x":[1],"y":[0]},"n":["0p964_1_1_0"],"t":16,"s":[38],"e":[100]},{"t":26}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Icon_Mine_Active_Main","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.76],"y":[1]},"o":{"x":[0.24],"y":[0]},"n":["0p76_1_0p24_0"],"t":20,"s":[0],"e":[100]},{"t":26}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[30,30,0],"ix":2},"a":{"a":0,"k":[30,30,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.284],[0,0],[-8.284,0]],"o":[[0,0],[0,-8.284],[8.284,0]],"v":[[15,16.5],[-15,16.5],[0,1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.866,0],[0,3.866],[-3.866,0],[0,-3.866]],"o":[[-3.866,0],[0,-3.866],[3.866,0],[0,3.866]],"v":[[0,-2.5],[-7,-9.5],[0,-16.5],[7,-9.5]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.682,0.878,0.69,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33,32.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Icon_Mine_Normal","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p8_1_0p167_0p167"],"t":0,"s":[100],"e":[6]},{"t":10}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[30,30,0],"ix":2},"a":{"a":0,"k":[30,30,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,1.407],[5.523,0],[0,-5.523],[-5.523,0],[0,-9.942],[0,0],[-3.893,3.302]],"o":[[0.524,-1.215],[0,-5.523],[-5.523,0],[0,5.523],[9.942,0],[0,0],[0,-5.505],[0,0]],"v":[[9.185,-5.039],[10,-9],[0,-19],[-10,-9],[0,1],[18,19],[-18,19],[-11.636,5.266]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.498,0.498,0.498,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30,29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0}],"markers":[]}
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_home_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_home_0.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_home_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_home_1.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_home_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_home_2.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_me_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_me_0.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_me_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_me_1.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_message_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_message_0.png
--------------------------------------------------------------------------------
/Example/Classes/Other/LottieResources/img_tab_message_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Classes/Other/LottieResources/img_tab_message_1.png
--------------------------------------------------------------------------------
/Example/Classes/View/CYLPlusButtonSubclass.h:
--------------------------------------------------------------------------------
1 | //
2 | // CYLPlusButtonSubclass.h
3 | // CYLTabBarControllerDemo
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 15/10/24.
6 | // Copyright (c) 2018年 https://github.com/ChenYilong . All rights reserved.
7 | //
8 |
9 | #import "CYLPlusButton.h"
10 |
11 | @interface CYLPlusButtonSubclass : CYLPlusButton
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Images.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" : "Icon-Small.png",
17 | "scale" : "1x"
18 | },
19 | {
20 | "size" : "29x29",
21 | "idiom" : "iphone",
22 | "filename" : "Icon-Small@2x.png",
23 | "scale" : "2x"
24 | },
25 | {
26 | "size" : "29x29",
27 | "idiom" : "iphone",
28 | "filename" : "Icon-Small@3x.png",
29 | "scale" : "3x"
30 | },
31 | {
32 | "size" : "40x40",
33 | "idiom" : "iphone",
34 | "filename" : "Icon-40@2x.png",
35 | "scale" : "2x"
36 | },
37 | {
38 | "size" : "40x40",
39 | "idiom" : "iphone",
40 | "filename" : "Icon-40@3x.png",
41 | "scale" : "3x"
42 | },
43 | {
44 | "size" : "57x57",
45 | "idiom" : "iphone",
46 | "filename" : "Icon.png",
47 | "scale" : "1x"
48 | },
49 | {
50 | "size" : "57x57",
51 | "idiom" : "iphone",
52 | "filename" : "Icon@2x.png",
53 | "scale" : "2x"
54 | },
55 | {
56 | "size" : "60x60",
57 | "idiom" : "iphone",
58 | "filename" : "Icon-60@2x.png",
59 | "scale" : "2x"
60 | },
61 | {
62 | "size" : "60x60",
63 | "idiom" : "iphone",
64 | "filename" : "Icon-60@3x.png",
65 | "scale" : "3x"
66 | },
67 | {
68 | "idiom" : "ipad",
69 | "size" : "20x20",
70 | "scale" : "1x"
71 | },
72 | {
73 | "idiom" : "ipad",
74 | "size" : "20x20",
75 | "scale" : "2x"
76 | },
77 | {
78 | "size" : "29x29",
79 | "idiom" : "ipad",
80 | "filename" : "Icon-Small.png",
81 | "scale" : "1x"
82 | },
83 | {
84 | "size" : "29x29",
85 | "idiom" : "ipad",
86 | "filename" : "Icon-Small@2x.png",
87 | "scale" : "2x"
88 | },
89 | {
90 | "size" : "40x40",
91 | "idiom" : "ipad",
92 | "filename" : "Icon-40.png",
93 | "scale" : "1x"
94 | },
95 | {
96 | "size" : "40x40",
97 | "idiom" : "ipad",
98 | "filename" : "Icon-40@2x.png",
99 | "scale" : "2x"
100 | },
101 | {
102 | "size" : "50x50",
103 | "idiom" : "ipad",
104 | "filename" : "Icon-Small-50.png",
105 | "scale" : "1x"
106 | },
107 | {
108 | "size" : "50x50",
109 | "idiom" : "ipad",
110 | "filename" : "Icon-Small-50@2x.png",
111 | "scale" : "2x"
112 | },
113 | {
114 | "size" : "72x72",
115 | "idiom" : "ipad",
116 | "filename" : "Icon-72.png",
117 | "scale" : "1x"
118 | },
119 | {
120 | "size" : "72x72",
121 | "idiom" : "ipad",
122 | "filename" : "Icon-72@2x.png",
123 | "scale" : "2x"
124 | },
125 | {
126 | "size" : "76x76",
127 | "idiom" : "ipad",
128 | "filename" : "Icon-76.png",
129 | "scale" : "1x"
130 | },
131 | {
132 | "size" : "76x76",
133 | "idiom" : "ipad",
134 | "filename" : "Icon-76@2x.png",
135 | "scale" : "2x"
136 | },
137 | {
138 | "size" : "83.5x83.5",
139 | "idiom" : "ipad",
140 | "filename" : "Icon-83.5@2x.png",
141 | "scale" : "2x"
142 | },
143 | {
144 | "idiom" : "ios-marketing",
145 | "size" : "1024x1024",
146 | "scale" : "1x"
147 | }
148 | ],
149 | "info" : {
150 | "version" : 1,
151 | "author" : "xcode"
152 | }
153 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-72.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/AppIcon.appiconset/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/AppIcon.appiconset/Icon@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-667h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-667h@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-1792h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-1792h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-2436h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-2436h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-2688h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-2688h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-1792h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-1792h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-2436h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-2436h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-2688h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-2688h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default-Portrait-736h@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~landscape~nostatusbar@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/LaunchImage.launchimage/Default~ipad~nostatusbar@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_bar_scan.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_bar_scan@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x",
15 | "filename" : "home_bar_scan@3x.png"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_title_slogan.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_title_slogan@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x",
15 | "filename" : "home_title_slogan@3x.png"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/icon_search.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon_search@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x",
15 | "filename" : "icon_search@3x.png"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/icon_search.imageset/icon_search@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/icon_search.imageset/icon_search@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/NavBar/icon_search.imageset/icon_search@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/NavBar/icon_search.imageset/icon_search@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/TabBar_Bg_Shadow.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "TabBar_Bg_Shadow@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 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/TabBar_Bg_Shadow.imageset/TabBar_Bg_Shadow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/TabBar_Bg_Shadow.imageset/TabBar_Bg_Shadow@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "account_highlight.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "account_highlight@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "account_highlight@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_highlight.imageset/account_highlight@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "account_normal.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "account_normal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "account_normal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/account/account_normal.imageset/account_normal@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "fishpond_highlight.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "fishpond_highlight@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "fishpond_highlight@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_highlight.imageset/fishpond_highlight@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "fishpond_normal.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "fishpond_normal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "fishpond_normal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/fishpond/fishpond_normal.imageset/fishpond_normal@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "home_highlight.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "home_highlight@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "home_highlight@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_highlight.imageset/home_highlight@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "home_normal.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "home_normal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "home_normal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home/home_normal.imageset/home_normal@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home_select_cover.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_select_cover@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_select_cover@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home_select_cover.imageset/home_select_cover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home_select_cover.imageset/home_select_cover@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/home_select_cover.imageset/home_select_cover@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/home_select_cover.imageset/home_select_cover@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_home_animation_lottie_placeholder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "gray_tabbar_home_animation_lottie_placeholder@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 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_home_animation_lottie_placeholder.imageset/gray_tabbar_home_animation_lottie_placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_home_animation_lottie_placeholder.imageset/gray_tabbar_home_animation_lottie_placeholder@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_me_animation_lottie_placeholder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "gray_tabbar_me_animation_lottie_placeholder@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 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_me_animation_lottie_placeholder.imageset/gray_tabbar_me_animation_lottie_placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_me_animation_lottie_placeholder.imageset/gray_tabbar_me_animation_lottie_placeholder@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_message_animation_lottie_placeholder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "gray_tabbar_message_animation_lottie_placeholder@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 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_message_animation_lottie_placeholder.imageset/gray_tabbar_message_animation_lottie_placeholder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/lottie_placeholder/gray_tabbar_message_animation_lottie_placeholder.imageset/gray_tabbar_message_animation_lottie_placeholder@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "message_highlight.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "message_highlight@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "message_highlight@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_highlight.imageset/message_highlight@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "message_normal.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "message_normal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "message_normal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/message/message_normal.imageset/message_normal@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/post_highlight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "post_highlight@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "post_highlight@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/post_highlight.imageset/post_highlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/post/post_highlight.imageset/post_highlight@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/post_highlight.imageset/post_highlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/post/post_highlight.imageset/post_highlight@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/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 | "filename" : "post_normal@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/post_normal.imageset/post_normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/post/post_normal.imageset/post_normal@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/post/post_normal.imageset/post_normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/post/post_normal.imageset/post_normal@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tabbarBg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbarBg@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "tabbarBg@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tabbarBg.imageset/tabbarBg@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/tabbarBg.imageset/tabbarBg@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tabbarBg.imageset/tabbarBg@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/tabbarBg.imageset/tabbarBg@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tabbar_background.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_background@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 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tabbar_background.imageset/tabbar_background@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/tabbar_background.imageset/tabbar_background@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/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 | "properties" : {
22 | "template-rendering-intent" : "original"
23 | }
24 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/videoback.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "videoback@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "videoback@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/videoback.imageset/videoback@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/videoback.imageset/videoback@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/TabBarIcon/videoback.imageset/videoback@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/TabBarIcon/videoback.imageset/videoback@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/home-float-icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "home-float-icon.jpg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "home-float-icon@2x.jpg",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "home-float-icon@3x.jpg",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Example/Images.xcassets/home-float-icon.imageset/home-float-icon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/home-float-icon.imageset/home-float-icon.jpg
--------------------------------------------------------------------------------
/Example/Images.xcassets/home-float-icon.imageset/home-float-icon@2x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/home-float-icon.imageset/home-float-icon@2x.jpg
--------------------------------------------------------------------------------
/Example/Images.xcassets/home-float-icon.imageset/home-float-icon@3x.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/home-float-icon.imageset/home-float-icon@3x.jpg
--------------------------------------------------------------------------------
/Example/Images.xcassets/icon_tabbar_plus.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_tabbar_plus@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_tabbar_plus@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Images.xcassets/icon_tabbar_plus.imageset/icon_tabbar_plus@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/icon_tabbar_plus.imageset/icon_tabbar_plus@2x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/icon_tabbar_plus.imageset/icon_tabbar_plus@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/icon_tabbar_plus.imageset/icon_tabbar_plus@3x.png
--------------------------------------------------------------------------------
/Example/Images.xcassets/navigationbar_background_tall.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "navigationbar_background_tall@2x.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/Example/Images.xcassets/navigationbar_background_tall.imageset/navigationbar_background_tall@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenYilong/CYLTabBarController/0d142b175d7c4819d687cd95246824453f73bc43/Example/Images.xcassets/navigationbar_background_tall.imageset/navigationbar_background_tall@2x.png
--------------------------------------------------------------------------------
/Example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | CFBundleDevelopmentRegion
8 | en
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 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UIRequiresFullScreen
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Example/MainTabBarController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MainTabBarController.h
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 15/11/3.
6 | // Copyright © 2015年 https://github.com/ChenYilong .All rights reserved.
7 | //
8 |
9 | #import
10 | #if __has_include()
11 | #import
12 | #else
13 | #import "CYLTabBarController.h"
14 | #endif
15 |
16 | @interface MainTabBarController : CYLTabBarController
17 |
18 | - (instancetype)initWithContext:(NSString *)context;
19 |
20 | @end
21 |
22 |
--------------------------------------------------------------------------------
/Example/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // CYLTabBarController
4 | //
5 | // v1.21.x Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 15/10/25.
6 | // Copyright (c) 2018年 https://github.com/ChenYilong .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 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015 CYLTabBarController(https://github.com/ChenYilong/CYLTabBarController), L.L.C. All rights reserved.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE
20 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 | source 'https://cdn.cocoapods.org/'
4 |
5 | target 'CYLTabBarController' do
6 | # Comment the next line if you don't want to use dynamic frameworks
7 | use_frameworks!
8 |
9 | #pod 'CYLTabBarController', '~> 1.28.5' # 默认不依赖Lottie
10 | pod 'CYLTabBarController/Lottie', '~> 1.29.0' # 依赖Lottie库
11 |
12 | #pod 'CYLTabBarController', :path => './'
13 | #pod 'CYLTabBarController/Lottie', :path => './'
14 |
15 | pod 'MJRefresh'
16 |
17 | end
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CYLTabBarController",
3 | "version": "1.0.0",
4 | "description": "
",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/ChenYilong/CYLTabBarController.git"
12 | },
13 | "keywords": [],
14 | "author": "",
15 | "license": "ISC",
16 | "bugs": {
17 | "url": "https://github.com/ChenYilong/CYLTabBarController/issues"
18 | },
19 | "homepage": "https://github.com/ChenYilong/CYLTabBarController#readme",
20 | "config": {
21 | "commitizen": {
22 | "path": "cz-conventional-changelog"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------