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日更新
【DZNEmptyDataSet使用遇到的问题】但是今天发现项目中有使用mj的下拉刷新,mj会改变scrollview的contentinset,所以这种发放就不行了,于是给scrollview设置了一个header,不适用上边的方法,解决了问题
推荐阅读
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用