UIView在窗口中移动

时间:2015-04-28 10:03:07

标签: ios uiview frame

我有一些UIView。我只知道观点。它可以添加到UIViewUIScrollViewUITableView。但我想检测我的视图何时开始可见并在屏幕上可以查看(例如,如果视图已添加到UIScrollView)。

I have scroll view and add my view (banner) as subview 我有滚动视图并将我的视图(横幅)添加为子视图。但起初我看不到我的横幅,应该滚动。

enter image description here 我想要检测我的视图将在屏幕上显示的时刻。

1 个答案:

答案 0 :(得分:0)

如果我正确掌握了您的观点,您可能希望在滚动UIScrollView期间横幅可见时收到通知。一种解决方案如下:

首先,您将横幅广告添加为UIScrollView的子视图,因此,您必须知道横幅的frame

然后,比较ScrollView的委托方法bannerView.frame.origin.y中的scrollView.contentOffset.y- (void)scrollViewDidScroll:(UIScrollView *)scrollView

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    BOOL becomingVisibleDuringScrollViewScrollDown = bannerView.frame.origin.y + CGRectGetHeight(bannerView.frame) == scrollView.contentOffset.y;
    BOOL becomingVisibleDuringScrollViewScrollUp = bannerView.frame.origin.y == scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame);
    if (becomingVisibleDuringScrollViewScrollDown || becomingVisibleDuringScrollViewScrollUp) {
        // Banner become visible!
    }
}

旧答案

您可以实现自己继承自UIView的类,并覆盖这些方法以观察与视图相关的更改:

- (void)willMoveToSuperview:(UIView *)newSuperview;
- (void)didMoveToSuperview;
- (void)willMoveToWindow:(UIWindow *)newWindow;
- (void)didMoveToWindow;

请阅读此Apple doc以获取更多信息。