如何在 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