DSBCMTabBarViewController.h 3.81 KB
//
//  DSBCMTabBarViewController.h
//  com.cnlive.pro.CNLiveNetAdd
//
//  Created by zhaolin on 2019/9/16.
//  Copyright © 2019 cnlive. All rights reserved.
//

#import <DSBaseControlsModule/DSBCMBaseViewController.h>
#import "DSBCMTabBar.h"
@class DSBCMTabBarViewController;

@protocol DSBCMTabBarViewControllerDelegate <NSObject>

@optional

/// 切换index代理 实现了这个代理后 切换index必须用调用tabBar.displayIndex=switchIndex才能切换显示界面
/// @param tabBar DSBCMTabBarViewController
/// @param switchIndex 切换后index
/// @param fromIndex 切换前index
-(void)tabBar:(nonnull DSBCMTabBarViewController*)tabBar switchIndex:(NSUInteger)switchIndex fromIndex:(NSUInteger)fromIndex;

@end

NS_ASSUME_NONNULL_BEGIN

@interface DSBCMTabBarViewController : DSBCMBaseViewController

#pragma mark - 代理

@property (nonatomic,weak) id<DSBCMTabBarViewControllerDelegate> delegate;

#pragma mark - 属性

/// 默认颜色
@property (nonatomic,strong) UIColor * normalColor;
/// 选中颜色
@property (nonatomic,strong) UIColor * selectColor;
/// 所有的子控制器
@property (nonatomic,strong,readonly) NSMutableArray<UIViewController*> * viewControllers;
/// 当前显示的索引
@property (nonatomic,assign) NSUInteger displayIndex;
/// 当前显示的子控制器
@property (nonatomic,weak,readonly) UIViewController * displayViewController;

#pragma mark - UI

/**
 DSTabBar
 */
@property (nonatomic,strong) DSBCMTabBar * tabBar;

#pragma mark - 消息数

/// 消息默认大小 默认15,15
@property (nonatomic,assign) CGSize messageSize;
/// 消息字号 默认10
@property (nonatomic,strong) UIFont * messageFont;
/// 消息背景颜色 默认[UIColor redColor]
@property (nonatomic,strong) UIColor * messageBgColor;
/// 消息字体颜色 默认[UIColor whiteColor]
@property (nonatomic,strong) UIColor * messageTitleColor;
/// 消息字左右与背景间距 默认4
@property (nonatomic,assign) CGFloat messageTitleLRInset;
/// 消息x/y偏移量 默认-4,4
@property (nonatomic,assign) CGPoint messagePositionOffset;

/// 设置消息数
/// @param messageCount 消息数
/// @param index 对应索引
-(void)settingMessageCount:(NSUInteger)messageCount index:(NSUInteger)index;

#pragma mark - 添加/删除/修改子控制器

/**
 添加子控制器

 @param childController 子控制器 标题就是导航标题
 @param normalImage 普通样式图片
 @param selectImage 选中样式图片
 @return 添加结果 YES成功 NO失败
 */
-(BOOL)addChildViewController:(nonnull UIViewController *)childController noralImage:(nullable UIImage*)normalImage selectImage:(nullable UIImage*)selectImage;

/// 插入子控制器
/// @param childController 子控制器 标题就是导航标题
/// @param normalImage 普通样式图片
/// @param selectImage 选中样式图片
/// @param index 插入index
/// @return 添加结果 YES成功 NO失败
-(BOOL)insertChildViewController:(nonnull UIViewController *)childController noralImage:(nullable UIImage*)normalImage selectImage:(nullable UIImage*)selectImage index:(NSUInteger)index;

/**
 删除子控制器

 @param childController 子控制器
 @return 删除结果 YES成功 NO失败
 */
-(BOOL)removeChildViewController:(nonnull UIViewController *)childController;

/**
 删除子控制器(用索引)

 @param index 子控制器索引
 @return 删除结果 YES成功 NO失败
 */
-(BOOL)removeChildViewControllerAtIndex:(NSUInteger)index;

/// 修改子控制器
/// @param childController 子控制器 标题就是导航标题
/// @param normalImage 普通样式图片
/// @param selectImage 选中样式图片
/// @param index 修改index
/// @return 修改结果 YES成功 NO失败
-(BOOL)changeChildViewController:(nonnull UIViewController *)childController noralImage:(nullable UIImage*)normalImage selectImage:(nullable UIImage*)selectImage index:(NSUInteger)index;

@end

NS_ASSUME_NONNULL_END