以编程方式滚动底部的滚动视图 - iphone

Posted

技术标签:

【中文标题】以编程方式滚动底部的滚动视图 - iphone【英文标题】:scrolling the scrollview at the bottom programmatically - iphone 【发布时间】:2011-01-13 19:28:26 【问题描述】:

我在滚动视图中动态添加一些视图并增加滚动视图的内容大小,但我想滚动滚动视图在其高度的底部

scrollRectToVisible 对我没有帮助。它只是滚动到我的 iphone 屏幕的可见视图,但我想到达滚动视图内容大小的底部。

谁能给我一些示例代码?

谢谢, 小屁屁

【问题讨论】:

【参考方案1】:

我稍微修改了@jer 的解决方案:

if([yourScrollView contentSize].height > yourScrollView.frame.size.height)

  CGPoint bottomOffset = CGPointMake(0, [yourScrollView contentSize].height - yourScrollView.frame.size.height);
  [yourScrollView setContentOffset:bottomOffset animated:YES];

这会将内容滚动到 UIScrollView 的底部,但仅在需要时才滚动(否则会出现奇怪的上/下跳跃效果)

我还注意到,如果您不从内容的高度减去滚动视图本身的高度,它会将内容向上滚动到可见的位置。

【讨论】:

【参考方案2】:

改用这样的东西:

CGPoint bottomOffset = CGPointMake(0, [yourScrollView contentSize].height);
[yourScrollView setContentOffset:bottomOffset animated:YES];

如果您不想让它动画化,只需将 YES 更改为 NO

【讨论】:

【参考方案3】:
CGFloat yOffset = scrollView.contentOffset.y;

CGFloat height = scrollView.frame.size.height;

CGFloat contentHeight = scrollView.contentSize.height;

CGFloat distance = (contentHeight  - height) - yOffset;

if(distance < 0)

    return ;


CGPoint offset = scrollView.contentOffset;

offset.y += distance;

[scrollView setContentOffset:offset animated:YES];

【讨论】:

【参考方案4】:

如果你想要 Swift 版本:

scrollView.setContentOffset(CGPointMake(0, max(scrollView.contentSize.height - scrollView.bounds.size.height, 0) ), animated: true)

希望这会有所帮助!

【讨论】:

【参考方案5】:

这个比较靠谱

CGSize contentSize = scrollview.contentSize;
[scrollview scrollRectToVisible: CGRectMake(0.0,
                                            contentSize.height - 1.0,
                                            contentSize.width, 
                                            1.0)
                       animated: YES];

【讨论】:

以上是关于以编程方式滚动底部的滚动视图 - iphone的主要内容,如果未能解决你的问题,请参考以下文章

使用 swift 以编程方式滚动到 webview 的底部

需要时以编程方式添加滚动

以编程方式在iOS上滚动UIWebView

Nativescript 以编程方式滚动到 ScrollView 的底部

滚动视图底部后滚动放大图像

ios水平滚动视图和自动布局问题