DZNEmptyDataSet的使用

  • DZNEmptyDataSet github的链接:DZNEmptyDataSet
  • DZNEmptyDataSet 是基于 UITableView/UICollectionView 的范畴/扩展(category)类,它可以在空白页面上显示提示信息。

这是 iOS 内建的标准,用于处理空表和集合视图。默认情况下,如果你的表视图是空的,屏幕上什么也不会显示,它给用户的体验不是很好。

使用这个库,你只需要实现一些协议,iOS 就会很好地处理集合视图,然后合理美观地显示出用户信息。

使用方法:

  • 设置UITableView/UICollectionView 代理的时候设置emptyDataSetSource和emptyDataSetDelegate
  • 实现代理方法 ,(按项目的需求实现)

1、设置空视图显示的文字

- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView {
    NSString *title = @"暂无数据";
    NSDictionary *attributes = @{
                                 NSFontAttributeName:Xmz_14FontSize,
                                 NSForegroundColorAttributeName:[UIColor colorWithHexString:@"575757"]
                                 };
    return [[NSAttributedString alloc] initWithString:title attributes:attributes];
}

返回的是NSAttributedString所以可以对其中的文字做处理。

2、设置空视图的图片

- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView{
    return ImageNamed(@"empty");
}

当tableView的数据源为空的时候就会显示
在这里插入图片描述
但是这样会有一个问题,那就是当你一进去的时候还没有发起请求的时候,tableView的数据源也是为空的,所以一进去也会显示空视图,所以这时候可以定义一个参数来标记是否已经请求网络。isFristLoding,在网络请求完成后设置isFristLoding = YES
所以在前面的两个代理中最上面加上if (!isFristLoding) { return nil; } 这样就会在请求网络后才显示

3、视图为空时是否可以滑动tableView和collectionView
- (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView{ return YES; }
这个默认是NO所以需要实现下。

4、当有设置透视图时,空视图整体下移到减去透头视图的高度的中心

- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView{
    return self.tableView.tableHeaderView.height/2;
}

这个也不止是因为头视图的原因实现的,当你需要设置空视图里面的内容位置的时候也可以使用

5、这个问题是我在项目中遇到的,不知道你们是不是有这个问题,那就是当你有数据的时候翻页后,在点击的筛选条件或者其他按钮重新获取数据且数据为空,这时候EmptyDataView的contenSize的高度也是和tableView的一样,是大于一屏幕的高度的,所以就会出现视图下移看不见,这时候就可以实现下面的代理,改变下tableView的contenSize,也就会改变EmptyDataView的。

- (void)emptyDataSetWillAppear:(UIScrollView *)scrollView {
    [self.tableView setContentOffset:CGPointMake(0, -self.tableView.contentInset.top)];
}

6、还有其他比较常用到的代理

设置空视图里面子视图的间距

- (CGFloat)spaceHeightForEmptyDataSet:(UIScrollView *)scrollView

空白页显示详细描述

- (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView

空白页显示按钮

- (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state

自定义页面

- (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值