美文网首页iOS经验总结
iOS开发中UIScrollView的contentOffset

iOS开发中UIScrollView的contentOffset

作者: 梁森的简书 | 来源:发表于2021-03-19 17:04 被阅读0次

    contentOffset

    我们在滑动UIScrollView的时候,它的contentOffset随着滑动会一直变化。

    contentInset

    在UIScrollView的frame之外又增加的一块区域。

    MJRefresh的header和footer分别怎么添加的?

    header:
    直接添加在UIScrollView上,在UIScrollView的frame之外,y值是负数(header高度的相反数)。
    footer:
    直接添加在UIScrollView上,在UIScrollView的frame之外,y值是正数(UIScrollView的contentSize的height)。为了显示出来,需要设置UIScrollView的contentInset,bottom值与footer的高度相等。

    模拟UITableView添加refresh的代码

    // 下拉刷新View
        CGFloat headerH = 50.0;
        UIView * refreshHeader = [[UIView alloc] initWithFrame:CGRectMake(0, -headerH, self.tableView.frame.size.width, headerH)];
        [self.tableView insertSubview:refreshHeader atIndex:0];
        refreshHeader.backgroundColor = [UIColor redColor];
    
        // 上拉加载view
        CGFloat footerY = self.tableView.contentSize.height;
        CGFloat footerH = 50.0;
        UIView * refreshFooter = [[UIView alloc] initWithFrame:CGRectMake(0, footerY, self.tableView.frame.size.width, footerH)];
        [self.tableView insertSubview:refreshFooter atIndex:0];
        refreshFooter.backgroundColor = [UIColor greenColor];
        _refreshFooter = refreshFooter;
        
        // 设置tableview的contentInset
        self.tableView.contentInset = UIEdgeInsetsMake(0, 0, footerH, 0);
        
        // 监听tableview的contenSize的变化
        NSKeyValueObservingOptions options = NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld;
        [self.tableView addObserver:self forKeyPath:@"contentSize" options:options context:nil];
    
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
        if ([keyPath isEqualToString:@"contentSize"]) {
            CGFloat footerY = self.tableView.contentSize.height;
            CGFloat footerH = 50.0;
            self.refreshFooter.frame = CGRectMake(0, footerY, self.tableView.frame.size.width, footerH);
        }
    }
    

    相关文章

      网友评论

        本文标题:iOS开发中UIScrollView的contentOffset

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