| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- //
- // UICollectionViewLayout+MJRefresh.m
- //
- // 该类是用来解决 Footer 在底端加载完成后, 仍停留在原处的 bug.
- // 此问题出现在 iOS 14 及以下系统上.
- // Reference: https://github.com/CoderMJLee/MJRefresh/issues/1552
- //
- // Created by jiasong on 2021/11/15.
- // Copyright © 2021 小码哥. All rights reserved.
- //
- #import "UICollectionViewLayout+MJRefresh.h"
- #import "MJRefreshConst.h"
- #import "MJRefreshFooter.h"
- #import "UIScrollView+MJRefresh.h"
- @implementation UICollectionViewLayout (MJRefresh)
- + (void)load {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- MJRefreshExchangeImplementations(self.class, @selector(finalizeCollectionViewUpdates),
- self.class, @selector(mj_finalizeCollectionViewUpdates));
- });
- }
- - (void)mj_finalizeCollectionViewUpdates {
- [self mj_finalizeCollectionViewUpdates];
-
- __kindof MJRefreshFooter *footer = self.collectionView.mj_footer;
- CGSize newSize = self.collectionViewContentSize;
- CGSize oldSize = self.collectionView.contentSize;
- if (footer != nil && !CGSizeEqualToSize(newSize, oldSize)) {
- NSDictionary *changed = @{
- NSKeyValueChangeNewKey: [NSValue valueWithCGSize:newSize],
- NSKeyValueChangeOldKey: [NSValue valueWithCGSize:oldSize],
- };
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
- [footer scrollViewContentSizeDidChange:changed];
- [CATransaction commit];
- }
- }
- @end
|