footer能否写在懒加载里面
295060456 opened this issue · comments
我喜欢代码块管理,很自然的就是懒加载,在里面全部配置完,外界调用
-(UICollectionView *)collectionView{
if (!_collectionView) {
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero
collectionViewLayout:self.layout];
_collectionView.backgroundColor = self.bgCor;
_collectionView.dataSource = self;
_collectionView.delegate = self;
_collectionView.showsVerticalScrollIndicator = NO;
_collectionView.mj_header = self.mjRefreshGifHeader;
_collectionView.mj_header.automaticallyChangeAlpha = YES;//根据拖拽比例自动切换透明度
// _collectionView.mj_footer = self.mjRefreshAutoNormalFooter;
// _collectionView.mj_footer.hidden = YES;
_collectionView.contentInset = UIEdgeInsetsMake(0, 0, 50, 0);
[_collectionView RegisterClass];
// [self.scrollView addSubview:_collectionView];
[self.view addSubview:_collectionView];
[_collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
}return _collectionView;
}
我很仔细的对比了demo
我的写法是:在懒加载里面进行配置
demo的写法是,请求到了数据才进行生成
我知道是监视contentsize。但如果要像我一样的写法,我需要做些什么,目前我的footer是在顶端
我自答自问吧。我重写
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
collectionView.mj_footer.y = collectionView.contentSize.height;
}
将封装追求到极致。
还有个就是我记忆力不是很好,这样做的话我下次直接复制粘贴,没必要再看你的demo
你这样不感觉多此一举么...凭空再搞出一个 targetView...
另外首先 Demo 不是请求到数据才配置的 Footer.
是在 viewDidLoad
里配置好的.
在你的配置里, 不清楚是否有初始数据, 如果没有的话, 那 footer 可不就在最顶上么. 如果不想显示出 Footer 那么就在第一次获取到/配置数据时显示/配置 footer.
如果你想得到一个更好的代码结构, 我建议你写一个 Demo, 拖上来
还有提醒一点, 懒加载是为了延迟加载的机制, 并不是什么代码块...
你想分离配置东西的话, 可以写如下代码. 然后在你需要的时候调用即可. 比如 viewDidLoad / 懒加载代码 / ...
private func prepareCollectionView() {
...
}
private func prepareFooter() { // or prepareHeaderFooter()
...
}