KFBlankSlate
是什么
KFBlankSlate 是基于 DZNEmptyDataSet 的一个有用包装器。
特性
- 支持四种显示状态(空闲、加载、空、失败)。
- 高度可定制,每个显示状态都可配置。
- 支持子类以进行自定义配置。
- 轻松切换每个状态。
- 更少的代码,更高的效率。
演示
您可以在 KFBlankSlateExample->KFBlankSlateExample.xcworkspace
项目的演示中找到。
需求
iOS 8 及更高版本。
安装
CocoaPods
KFBlankSlate可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中。
pod 'KFBlankSlate'
用法
KFBlankSlateGeneralHandler
使用KFBlankSlateGeneralHandler在UITableView/UICollectionView中显示自定义的空/加载/错误视图。
基本用法
KFBlankSlateGeneralHandler *handler = [[KFBlankSlateGeneralHandler alloc] init];
[handler setTitle:@"No data" forState:KFDataLoadStateEmpty];
[handler setDescription:@"This list is empty!" forState:KFDataLoadStateEmpty];
[handler setImage:[UIImage imageNamed:@"empty"] forState:KFDataLoadStateEmpty];
self.tableView.kf_handler = handler;
self.tableView.kf_handler.state = KFDataLoadStateEmpty;
状态
KFBlankSlate提供了四种加载状态以显示不同的情况。
typedef NS_OPTIONS(NSUInteger, KFDataLoadState) {
KFDataLoadStateIdle = 1 << 0, //闲置
KFDataLoadStateLoading = 1 << 1, //加载中
KFDataLoadStateEmpty = 1 << 2, //数据空
KFDataLoadStateFailed = 1 << 3, //加载失败
};
自定义
可以针对每个状态进行配置。
/** 设置state状态下的文字标题 */
- (void)setTitle:(NSString *)title forState:(KFDataLoadState)state;
/** 设置state状态下的富文本标题 */
- (void)setAttributedTitle:(NSAttributedString *)title forState:(KFDataLoadState)state;
/** 设置state状态下的文字描述 */
- (void)setDescription:(NSString *)description forState:(KFDataLoadState)state;
/** 设置state状态下的富文本描述 */
- (void)setAttributedDescription:(NSAttributedString *)description forState:(KFDataLoadState)state;
/** 设置state状态下的图片 */
- (void)setImage:(UIImage *)image forState:(KFDataLoadState)state;
/** 设置state状态下的图片着色 */
- (void)setImageTintColor:(UIColor *)color forState:(KFDataLoadState)state;
/** 设置state状态下的图片动画 */
- (void)setImageAnimation:(CAAnimation *)animation forState:(KFDataLoadState)state;
/** 设置state状态下按钮的文字标题 */
- (void)setButtonTitle:(NSString *)title controlState:(UIControlState)cState forState:(KFDataLoadState)state;
/** 设置state状态下按钮的富文本标题 */
- (void)setAttributedButtonTitle:(NSAttributedString *)title controlState:(UIControlState)cState forState:(KFDataLoadState)state;
/** 设置state状态下按钮的图片 */
- (void)setButtonImage:(UIImage *)image controlState:(UIControlState)cState forState:(KFDataLoadState)state;
/** 设置state状态下按钮的背景图片 */
- (void)setButtonBackgroundImage:(UIImage *)image controlState:(UIControlState)cState forState:(KFDataLoadState)state;
/** 设置state状态下的背景颜色 */
- (void)setBackgroundColor:(UIColor *)color forState:(KFDataLoadState)state;
/** 设置state状态下的自定义视图 */
- (void)setCustomView:(UIView *)view forState:(KFDataLoadState)state;
/** 设置state状态下的垂直偏移量 */
- (void)setVerticalOffset:(CGFloat)offset forState:(KFDataLoadState)state;
/** 设置state状态下各视图的间距 */
- (void)setSpaceHeight:(CGFloat)space forState:(KFDataLoadState)state;
/** 设置state状态下的fadeIn属性 */
- (void)setFadeIn:(BOOL)fadeIn forState:(KFDataLoadState)state;
/** 设置state状态下的forcedToDisplay属性 */
- (void)setForcedToDisplay:(BOOL)forcedToDisplay forState:(KFDataLoadState)state;
/** 设置state状态下的display属性 */
- (void)setDisplay:(BOOL)display forState:(KFDataLoadState)state;
/** 设置state状态下的touchable属性 */
- (void)setTouchable:(BOOL)touchable forState:(KFDataLoadState)state;
/** 设置state状态下的scrollable属性 */
- (void)setScrollable:(BOOL)scrollable forState:(KFDataLoadState)state;
/** 设置state状态下的animate属性 */
- (void)setAnimate:(BOOL)animate forState:(KFDataLoadState)state;
/** 设置state状态下的tapViewHandler回调 */
- (void)setTapViewHandler:(void (^)(UIView *view))tapViewHandler forState:(KFDataLoadState)state;
/** 设置state状态下的tapButtonHandler回调 */
- (void)setTapButtonHandler:(void (^)(UIButton *button))tapButtonHandler forState:(KFDataLoadState)state;
您还可以为所有状态设置这些属性。
/** 是否使用淡入动画(将会应用于全部状态) */
@property (nonatomic, assign) BOOL fadeIn;
/** 是否显示(将会应用于全部状态) */
@property (nonatomic, assign) BOOL display;
/** 是否在数据不为空的情况下仍然显示(将会应用于全部状态) */
@property (nonatomic, assign) BOOL forcedToDisplay;
/** 是否可点击(将会应用于全部状态) */
@property (nonatomic, assign) BOOL touchable;
/** 是否可滑动(将会应用于全部状态) */
@property (nonatomic, assign) BOOL scrollable;
/** 是否可动画(将会应用于全部状态) */
@property (nonatomic, assign) BOOL animate;
/** 点击按钮的事件回调(将会应用于全部状态) */
@property (nonatomic, copy) void (^tapButtonHandler)(UIButton *button);
/** 点击空白视图的事件回调(将会应用于全部状态) */
@property (nonatomic, copy) void (^tapViewHandler)(UIView *view);
/** 标题字体(将会应用于全部状态) */
@property (nonatomic, strong) UIFont *titleFont;
/** 标题颜色(将会应用于全部状态) */
@property (nonatomic, strong) UIColor *titleColor;
/** 描述字体(将会应用于全部状态) */
@property (nonatomic, strong) UIFont *descriptionFont;
/** 描述颜色(将会应用于全部状态) */
@property (nonatomic, strong) UIColor *descriptionColor;
/** 按钮标题字体(将会应用于全部状态) */
@property (nonatomic, strong) UIFont *buttonTitleFont;
/** 按钮标题颜色(将会应用于全部状态) */
@property (nonatomic, strong) UIColor *buttonTitleColor;
/** 背景颜色(将会应用于全部状态) */
@property (nonatomic, strong) UIColor *backgroundColor;
/** 垂直偏移量(将会应用于全部状态) */
@property (nonatomic, assign) CGFloat verticalOffset;
/** 视图的间距(将会应用于全部状态) */
@property (nonatomic, assign) CGFloat spaceHeight;
其他
如果您想完全自定义,KFBlankSlateHandler的子类可以帮助您。
许可
所有源代码均受MIT许可的许可。