美文网首页
iOS swift5.x KafkaRefresh刷新不居中问题

iOS swift5.x KafkaRefresh刷新不居中问题

作者: Bruce_XHG | 来源:发表于2019-12-10 09:17 被阅读0次

如果设置了tableview、collectionview、scrollview的内边距,刚好你使用的又是KafkaRefresh;那么你可能会遇到刷新不居中的问题。

首先我们看一下KafkaRefresh源码

- (void)willMoveToSuperview:(UIView *)newSuperview {
    [super willMoveToSuperview:newSuperview];
    NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld;
    if (self.superview && newSuperview == nil) {
        if (_observering) {
            [self.superview removeObserver:self forKeyPath:KafkaContentOffset];
            [self.superview removeObserver:self forKeyPath:KafkaContentSize];
            _observering = NO;
        }
    }
    else if (self.superview == nil && newSuperview) {
        if (!_observering) {
            _scrollView = (UIScrollView *)newSuperview;
            /**
             sometimes, this method called before `layoutSubviews`,such as UICollectionViewController
            */
            [self layoutIfNeeded];
            _presetContentInsets = ((UIScrollView *)newSuperview).realContentInset;
            [newSuperview addObserver:self forKeyPath:KafkaContentOffset options:options context:nil];
            [newSuperview addObserver:self forKeyPath:KafkaContentSize options:options context:nil];
            _observering = YES;
        }
    }
}

再看一下修改的代码

- (void)willMoveToSuperview:(UIView *)newSuperview {
    [super willMoveToSuperview:newSuperview];
    NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld;
    if (self.superview && newSuperview == nil) {
        if (_observering) {
            [self.superview removeObserver:self forKeyPath:KafkaContentOffset];
            [self.superview removeObserver:self forKeyPath:KafkaContentSize];
            _observering = NO;
        }
    }
    else if (self.superview == nil && newSuperview) {
        if (!_observering) {
            _scrollView = (UIScrollView *)newSuperview;
            self.kr_left = -_scrollView.realContentInset.left;
            /**
             sometimes, this method called before `layoutSubviews`,such as UICollectionViewController
            */
            [self layoutIfNeeded];
            _presetContentInsets = ((UIScrollView *)newSuperview).realContentInset;
            [newSuperview addObserver:self forKeyPath:KafkaContentOffset options:options context:nil];
            [newSuperview addObserver:self forKeyPath:KafkaContentSize options:options context:nil];
            _observering = YES;
        }
    }
}

其实就是添加了一句代码

self.kr_left = -_scrollView.realContentInset.left;

注意:如果是pod管理,修改以后clear一下;别问我是怎么知道的

相关文章

网友评论

      本文标题:iOS swift5.x KafkaRefresh刷新不居中问题

      本文链接:https://www.haomeiwen.com/subject/heewgctx.html