// // CYLTabBarController.h // CYLTabBarController // // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15. // Copyright © 2015 https://github.com/ChenYilong . All rights reserved. // #import "CYLPlusButton.h" #import "UIViewController+CYLTabBarControllerExtention.h" #import "UIView+CYLTabBarControllerExtention.h" #import "UITabBarItem+CYLTabBarControllerExtention.h" #import "UIControl+CYLTabBarControllerExtention.h" @class CYLTabBarController; typedef void(^CYLViewDidLayoutSubViewsBlock)(CYLTabBarController *tabBarController); FOUNDATION_EXTERN NSString *const CYLTabBarItemTitle; FOUNDATION_EXTERN NSString *const CYLTabBarItemImage; FOUNDATION_EXTERN NSString *const CYLTabBarItemSelectedImage; FOUNDATION_EXTERN NSString *const CYLTabBarItemImageInsets; FOUNDATION_EXTERN NSString *const CYLTabBarItemTitlePositionAdjustment; FOUNDATION_EXTERN NSUInteger CYLTabbarItemsCount; FOUNDATION_EXTERN NSUInteger CYLPlusButtonIndex; FOUNDATION_EXTERN CGFloat CYLPlusButtonWidth; FOUNDATION_EXTERN CGFloat CYLTabBarItemWidth; @protocol CYLTabBarControllerDelegate @optional /*! * @param tabBarController The tab bar controller containing viewController. * @param control Selected UIControl in TabBar. */ - (void)tabBarController:(UITabBarController *)tabBarController didSelectControl:(UIControl *)control; @end @interface CYLTabBarController : UITabBarController @property (nonatomic, copy) CYLViewDidLayoutSubViewsBlock viewDidLayoutSubviewsBlock; - (void)setViewDidLayoutSubViewsBlock:(CYLViewDidLayoutSubViewsBlock)viewDidLayoutSubviewsBlock; /*! * An array of the root view controllers displayed by the tab bar interface. */ @property (nonatomic, readwrite, copy) NSArray *viewControllers; /*! * The Attributes of items which is displayed on the tab bar. */ @property (nonatomic, readwrite, copy) NSArray *tabBarItemsAttributes; /*! * Customize UITabBar height */ @property (nonatomic, assign) CGFloat tabBarHeight; /*! * To set both UIBarItem image view attributes in the tabBar, * default is UIEdgeInsetsZero. */ @property (nonatomic, readonly, assign) UIEdgeInsets imageInsets; /*! * To set both UIBarItem label text attributes in the tabBar, * use the following to tweak the relative position of the label within the tab button (for handling visual centering corrections if needed because of custom text attributes) */ @property (nonatomic, readonly, assign) UIOffset titlePositionAdjustment; @property (nonatomic, readonly, copy) NSString *context; - (instancetype)initWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes; + (instancetype)tabBarControllerWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes; - (instancetype)initWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes imageInsets:(UIEdgeInsets)imageInsets titlePositionAdjustment:(UIOffset)titlePositionAdjustment; + (instancetype)tabBarControllerWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes imageInsets:(UIEdgeInsets)imageInsets titlePositionAdjustment:(UIOffset)titlePositionAdjustment; - (instancetype)initWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes imageInsets:(UIEdgeInsets)imageInsets titlePositionAdjustment:(UIOffset)titlePositionAdjustment context:(NSString *)context; + (instancetype)tabBarControllerWithViewControllers:(NSArray *)viewControllers tabBarItemsAttributes:(NSArray *)tabBarItemsAttributes imageInsets:(UIEdgeInsets)imageInsets titlePositionAdjustment:(UIOffset)titlePositionAdjustment context:(NSString *)context; - (void)updateSelectionStatusIfNeededForTabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController; - (void)hideTabBadgeBackgroundSeparator; - (void)setTintColor:(UIColor *)tintColor; /*! * Judge if there is plus button. */ + (BOOL)havePlusButton; /*! * @attention Include plusButton if exists. */ + (NSUInteger)allItemsInTabBarCount; - (id)appDelegate; - (UIWindow *)rootWindow; @end @interface NSObject (CYLTabBarControllerReferenceExtension) /*! * If `self` is kind of `UIViewController`, this method will return the nearest ancestor in the view controller hierarchy that is a tab bar controller. If `self` is not kind of `UIViewController`, it will return the `rootViewController` of the `rootWindow` as long as you have set the `CYLTabBarController` as the `rootViewController`. Otherwise return nil. (read-only) */ @property (nonatomic, setter=cyl_setTabBarController:) CYLTabBarController *cyl_tabBarController; @end FOUNDATION_EXTERN NSString *const CYLTabBarItemWidthDidChangeNotification;