【问题标题】:setContentOffset on UIScrollView the right wayUIScrollView 上的 setContentOffset 正确方式
【发布时间】:2013-02-16 00:43:45
【问题描述】:

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

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

我基本上将我的新元素的高度添加到UIScrollViewycontentOffset 但有时它会滚动出scrollView contentSize,更低,可以滚动。这是因为我在调用上面的方法之前修改了contentSize,并且滚动视图的高度缩小了。

你怎么称呼setContentOffset,这样它就不会让我的scrollView滚动出它自己的contentSize?谢谢!

【问题讨论】:

  • 你缩小了mainScrollView,然后把bottomAttachmentView添加到mainScrollView,想要滚动到它?
  • @Rikkles 是的,但问题是它只占用了scrollView 的底部 30%,当我尝试使用此功能时,它只会滚动出 scrollView

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


【解决方案1】:

实际上我所要做的就是将我的UIScrollView 滚动到底部,如下所示:

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

【讨论】:

  • 这个解决方案会更干净一些,如果你也考虑底部内容插入:CGPoint bottomOffset = CGPointMake(self.scrollView.contentOffset.x, (self.scrollView.contentSize.height - self.scrollView.frame.size.height + self.scrollView.contentInset.bottom));
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多