4

在 şt 滚动后,我无法在滚动视图中获取可见矩形的坐标。因此,当我想在可见矩形中添加子视图时,我不能。我怎样才能做到这一点?

4

4 回答 4

5
CGRect visibleRect = CGRectMake(myScrollView.contentOffset.x, myScrollView.contentOffset.y, myScrollView.contentOffset.x + myScrollView.bounds.size.width, myScrollView.contentOffset.y + myScrollView.bounds.size.height)

滚动后,这应该会为您rect提供当前可见的内容。当你想计算矩形时,你必须决定的不是什么。如果您想即时获取此信息,请在scrollViewDidScroll方法中执行此操作。如果您想在用户开始滚动时获取它,请在scrollViewWillBeginDragging. 如果您在用户完成滚动并停止后想要它scrollView,请在scrollViewDidEndDraggingand中执行scrollViewDidEndDecelerating

于 2013-09-26T16:09:35.497 回答
3

scrollView 始终可见的矩形如下:

CGRectMake(scrollview.contentOffset.x, scrollview.contentOffset.y, scrollview.frame.size.width, scrollview.frame.size.height)
于 2013-09-26T15:44:33.360 回答
2

a 的可见矩形UIScrollViewmyScrollView.bounds。正如其他答案所暗示的那样,无需使用CGRectMake或使用该contentOffset属性(尽管它确实将您带到了同一个地方)。但是,如果滚动视图允许缩放,那么您需要转换矩形以考虑缩放。此答案中提供了许多应用转换的解决方案。

于 2015-09-21T00:17:08.360 回答
0

我不完全确定你在问什么,但如果你需要在滚动时获取内容偏移量你可以使用委托方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

每次 contentOffset 更改时都会调用它。

或者你可以使用

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

要知道contentOffset滚动视图停止减速的秒数。

或者

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

contentOffset当用户停止平移它时知道滚动视图的。

于 2013-09-26T15:31:20.133 回答