美文网首页iOS
iOS DZNEmptyDataSet 自定义视图的一个小坑

iOS DZNEmptyDataSet 自定义视图的一个小坑

作者: Dout | 来源:发表于2018-01-10 14:41 被阅读698次

    DZNEmptyDataSet 主要用于 UITableView 以及 UICollectionView 页面空白时展示(也包括UIScrollView)。

    项目中应用到此第三方,且用到了自定义视图,即实现以下代理方法

    - (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView {
        return self.emptyView;
    }
    

    EmptyView:

    - (TJMEmptyView *)emptyView {
        if (!_emptyView) {
            self.emptyView = [[[NSBundle mainBundle] loadNibNamed:@"TJMEmptyView" owner:self options:nil] firstObject];
            _emptyView.frame = CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT);
        }
        return _emptyView;
    }
    

    实现效果却如下图


    WechatIMG50.jpeg

    查看图层,原本中间的图案跑到了最下面


    1515565709744.jpg

    层级关系


    image.png
    这个imageView的父视图 EmptyView,及EmptyView的父视图 高度都为0。
    翻到源码中查看:
    if (_customView) {
            [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[customView]|" options:0 metrics:nil views:@{@"customView":_customView}]];
            [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[customView]|" options:0 metrics:nil views:@{@"customView":_customView}]];
        }
    

    _customView 即 我自定义的 EmptyView ,contentView 即 EmptyView的父视图。contentView使用NSLayoutConstraint 布局,高度依赖于 EmptyView 的高度,未增加约束时,自然为0,代码增加一条:

    - (TJMEmptyView *)emptyView {
        if (!_emptyView) {
            self.emptyView = [[[NSBundle mainBundle] loadNibNamed:@"TJMEmptyView" owner:self options:nil] firstObject];
            NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:_emptyView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:TJMScreenHeight];
            [_emptyView addConstraint:heightConstraint];
        }
        return _emptyView;
    }
    

    搞定


    image.png

    相关文章

      网友评论

        本文标题:iOS DZNEmptyDataSet 自定义视图的一个小坑

        本文链接:https://www.haomeiwen.com/subject/dhdonxtx.html