【发布时间】:2013-10-02 15:48:59
【问题描述】:
在 şt 滚动后,我无法在滚动视图中获取可见矩形的坐标。因此,当我想在可见矩形中添加子视图时,我不能。我该怎么做?
【问题讨论】:
-
你为什么不能?可见矩形的原点为 scrollview.contentOffset 大小为 scrollview.bounds.size
标签: ios uiscrollview
在 şt 滚动后,我无法在滚动视图中获取可见矩形的坐标。因此,当我想在可见矩形中添加子视图时,我不能。我该怎么做?
【问题讨论】:
标签: ios uiscrollview
UIScrollView 的可见矩形是myScrollView.bounds。正如其他答案所建议的那样,无需使用CGRectMake 或使用contentOffset 属性(尽管它确实可以让您到达同一个地方)。但是,如果滚动视图允许缩放,那么您需要转换矩形以考虑缩放。 this answer 中提供了许多应用转换的解决方案。
【讨论】:
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 静止后进行操作,请在 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 中执行此操作。
【讨论】:
滚动视图的可见矩形如下:
CGRectMake(scrollview.contentOffset.x, scrollview.contentOffset.y, scrollview.frame.size.width, scrollview.frame.size.height)
【讨论】:
scrollview.bounds。对于UIScrollView,边界的原点是内容偏移量。此外,这仅适用于 zoomScale = 1。如果缩放,您必须转换 rect 以获得正确的结果。
我不完全确定您在问什么,但是如果您需要在滚动时获取内容偏移量,您可以使用委托方法:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
每次 contentOffset 更改时都会调用它。
你也可以使用
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
要知道滚动视图的contentOffset 停止减速的秒数。
或者
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
当用户停止平移时知道滚动视图的contentOffset。
【讨论】: