如何在 scrollViewDidScroll 中添加 UIView 并使其滚动到最后?

Posted

技术标签:

【中文标题】如何在 scrollViewDidScroll 中添加 UIView 并使其滚动到最后?【英文标题】:How to add a UIView in scrollViewDidScroll and enable it to scroll till the end? 【发布时间】:2015-08-31 22:37:49 【问题描述】:

我在UIScrollView 的末尾添加一个UIView,如下所示-

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    float scrollViewHeight = scrollView.frame.size.height;
    float scrollContentSizeHeight = scrollView.contentSize.height;
    float scrollOffset = scrollView.contentOffset.y;

    if (scrollOffset == 0)
    
    
    else if (scrollOffset + scrollViewHeight >= scrollContentSizeHeight)
    
        UIView *paintView=[[UIView alloc]initWithFrame:CGRectMake(0, scrollOffset + scrollViewHeight + 20, self.view.frame.size.width, 200)];
        [paintView setBackgroundColor:[UIColor yellowColor]];
        [self.containerScrollView addSubview:paintView];
    

这在最后添加了视图,但我无法滚动该视图。如何也启用滚动到新添加的视图?

【问题讨论】:

您必须使用新添加的视图调整滚动视图的 contentSize。 【参考方案1】:

你可以设置scrollview的contentInset

scrollView.contentInset = UIEdgeInsetsMake(0,0,extensionHeight,0);

但是你可能不想在- (void)scrollViewDidScroll:(UIScrollView *)scrollView 中添加子视图,因为这个函数会被多次调用,你的子视图会被创建很多次。 如果一定要在里面添加subview,建议你创建一个属性paintView,检查是否为nil,如果是,就创建它,如果不是,什么都不做

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    float scrollViewHeight = scrollView.frame.size.height;
    float scrollContentSizeHeight = scrollView.contentSize.height;
    float scrollOffset = scrollView.contentOffset.y;

    if (scrollOffset == 0)
    
    
    else if (scrollOffset + scrollViewHeight >= scrollContentSizeHeight)
    
        scrollView.contentInset = UIEdgeInsetsMake(0,0,extensionHeight,0);
        if (!_paintView) 
            _paintView=[[UIView alloc]initWithFrame:CGRectMake(0, scrollOffset + scrollViewHeight + 20, self.view.frame.size.width, 200)];
            [_paintView setBackgroundColor:[UIColor yellowColor]];
            [self.containerScrollView addSubview:_paintView];
        

    

【讨论】:

以上是关于如何在 scrollViewDidScroll 中添加 UIView 并使其滚动到最后?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UIViewController 访问 scrollViewDidScroll

scrollViewDidScroll(_ scrollView: UIScrollView) 到达底部后如何保持 UIButton 浮动?

如何从 UICollectionViewController 中的 scrollViewDidScroll 方法访问单元格成员(用于动画)?

在 UIWebView 中没有调用 scrollViewDidScroll

在uitableview中调用scrollviewdidscroll方法?

视差 UIScrollView – 在一个 scrollViewDidScroll 方法中处理两个视图?