2013-09-26 29 views
2

我不能在滚动视图后滚动视图中的可见矩形坐标。所以当我想要在可见矩形中添加子视图时,我不能。我怎样才能做到这一点?如何在IOS中滚动后滚动视图可见的矩形框?

+1

为什么你不能?可见矩形具有scrollview.contentOffset的大小scrollview.bounds.size的大小 – Matt

回答

0

我不完全清楚你在问什么,但如果你需要得到内容偏移它被滚动,你可以使用委托方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 

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

另外,您可以使用

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

知道秒它停止减速滚动视图的contentOffset

或者

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

知道滚动型的contentOffset当用户停止平移左右它。

2

在所有时间滚动型的可视矩形是如下:

CGRectMake(scrollview.contentOffset.x, scrollview.contentOffset.y, scrollview.frame.size.width, scrollview.frame.size.height) 
+1

注意,这是正确的,但可以简化为'scrollview.bounds'。对于'UIScrollView',边界的原点是内容偏移量。此外,这只适用于zoomScale = 1.如果缩放,则必须转换矩形才能获得正确的结果。 – Joel

3
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来休息之后,在scrollViewDidEndDraggingscrollViewDidEndDecelerating中执行它。

+1

您的答案中尺寸不正确。您不会将偏移量添加到大小。 – Joel

2

UIScrollView的可见直径为myScrollView.bounds。没有必要使用CGRectMake或使用contentOffset属性,因为其他答案显示(尽管它确实让你到同一个地方)。但是,如果滚动视图允许缩放,则需要转换矩形以考虑缩放。 this answer提供了许多应用转换的解决方案。

相关问题