CoderMJLee / MJRefresh

An easy way to use pull-to-refresh.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

footer能否写在懒加载里面

295060456 opened this issue · comments

commented

我喜欢代码块管理,很自然的就是懒加载,在里面全部配置完,外界调用
-(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是在顶端

commented

我自答自问吧。我重写
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
collectionView.mj_footer.y = collectionView.contentSize.height;
}

commented

image
image
image
image

commented

将封装追求到极致。
还有个就是我记忆力不是很好,这样做的话我下次直接复制粘贴,没必要再看你的demo

commented

你这样不感觉多此一举么...凭空再搞出一个 targetView...

另外首先 Demo 不是请求到数据才配置的 Footer.
是在 viewDidLoad 里配置好的.

在你的配置里, 不清楚是否有初始数据, 如果没有的话, 那 footer 可不就在最顶上么. 如果不想显示出 Footer 那么就在第一次获取到/配置数据时显示/配置 footer.

如果你想得到一个更好的代码结构, 我建议你写一个 Demo, 拖上来

还有提醒一点, 懒加载是为了延迟加载的机制, 并不是什么代码块...
你想分离配置东西的话, 可以写如下代码. 然后在你需要的时候调用即可. 比如 viewDidLoad / 懒加载代码 / ...

private func prepareCollectionView() {
...
}

private func prepareFooter() { // or prepareHeaderFooter()
...
}