UIScrollView上的setContentOffset是正确的方法

时间:2013-03-01 13:33:16

标签: iphone ios objective-c cocoa-touch uiscrollview

我正在使用此代码滚动我的UIScrollView,因为我从底部添加了一个新的UIView,我想向下滚动到它。我是这样做的:

CGPoint newOffset = CGPointMake(mainScrollView.contentOffset.x, mainScrollView.contentOffset.y + floorf(bottomAttachmentView.frame.size.height / bottomAttachmentView.multFactor));
[mainScrollView setContentOffset:newOffset animated:YES];

我基本上将我的新元素的高度添加到y的{​​{1}}的{​​{1}},但有时它会滚动出scrollView UIScrollView,更低,这是可能的滚动。这是因为我在调用上面的方法之前修改了contentOffset并且Scroll View的高度缩小了。

你如何调用contentSize所以它不会让我的scrollView滚出它自己的contentSize?谢谢!

2 个答案:

答案 0 :(得分:5)

实际上我只需将UIScrollView滚动到底部就像这样:

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

答案 1 :(得分:1)

您也可以使用它滚动到scrollView(Swift 4)的底部

let targetRect = CGRect(x: 0, y: mainScrollView.contentSize.height, width: 1, height: 1)
scrollView.scrollRectToVisible(targetRect, animated: true)