DZNEmptyDataSet使用遇到的问题

1,当collectionview设置的有inset的时候,如果collectionview向上滑动一段距离,也就是contentoffset很大的时候,然后刷新collectionview,如果刷新后的contentsize小于一个屏幕的高度,EmptyDataSet的内容会出现位置变动

通过查看视图层次结构,发现EmptyDataSetview的顶部距离scrollview的顶部有一段距离,并且距离并不固定(视更新前后的contentsize而定),然后翻看源码,在它更新约束的地方,重新设置EmptyDataSetview的约束,使其位置正确

// Configure empty dataset fade in display

        view.fadeInOnDisplay = [self dzn_shouldFadeIn];

//        UIScrollView *scroll = (UIScrollView *)self.superview;

        [self.emptyDataSetView mas_updateConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(self).offset(-self.contentInset.top);

            make.left.equalTo(self);

            make.width.equalTo(self.mas_width);

            make.height.equalTo(self.mas_height);

        }];

        [view setupConstraints];

        [UIView performWithoutAnimation:^{

            [view layoutIfNeeded];

        }];

上边代码是框架中- (void)dzn_reloadEmptyDataSet 的代码

在  [view setupConstraints](它给内部视图重新设置约束之前),用masonry给自己更新约束

1月29日更新

但是今天发现项目中有使用mj的下拉刷新,mj会改变scrollview的contentinset,所以这种发放就不行了,于是给scrollview设置了一个header,不适用上边的方法,解决了问题

你可能感兴趣的:(DZNEmptyDataSet使用遇到的问题)