美文网首页
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