KFBlankSlate 2.0

KFBlankSlate 2.0

Carefree 维护。



  • Carefree

KFBlankSlate

Version Platform Language Build Status License


是什么

KFBlankSlate 是基于 DZNEmptyDataSet 的一个有用包装器。

特性

  • 支持四种显示状态(空闲、加载、空、失败)。
  • 高度可定制,每个显示状态都可配置。
  • 支持子类以进行自定义配置。
  • 轻松切换每个状态。
  • 更少的代码,更高的效率。

演示

您可以在 KFBlankSlateExample->KFBlankSlateExample.xcworkspace 项目的演示中找到。

Example project

需求

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许可的许可。