如何知道iphone中当前可见视图的标签

时间:2010-11-17 15:50:58

标签: iphone uiview uiscrollview

我有一个滚动视图,我添加了一些视图 当用户滚动如何获取当前可见视图的标记时。 那么我可以在那个视图中添加一些东西......

就像在表视图中获取indexpathrow一样..

怎么做..?

由于

1 个答案:

答案 0 :(得分:2)

您基本上想要检查UIScrollView内的子视图的框架是否与滚动视图的框架相交(如果您只想确定部分可见性),或者框架是否包含在另一框架中(如果您需要)确定完全可见性。)

但是,为了检查子视图的帧是否相交和/或是否包含在scrollview的框架中,您需要将其从scrollview中的局部坐标转换为scrollview外部的全局坐标。

这可能很令人困惑,所以这里有一些代码。这将遍历滚动视图的所有子视图,并打印出它是完全可见还是部分可见:

for (UIView *subview in scrollView)
{
    CGRect globalRect = CGRectOffset(subview.frame, -scrollView.contentOffset.x, -scrollView.contentOffset.y);
    CGRect scrollViewBounds = CGRectMake(0.0f, 0.0f, scrollView.bounds.size.width, scrollView.bounds.size.height);

    if (CGRectContainsRect(scrollViewBounds, globalRect)) {
        NSLog(@"FULLY VISIBLE");
    } else if (CGRectIntersectsRect(scrollViewBounds, globalRect)) {
        NSLog(@"PARTIALLY VISIBLE");
    }       
}

当用户滚动内容时,您可以将其放在UIScrollViewDelegate方法中进行这些检查。