// // 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