我有一些UIView
。我只知道观点。它可以添加到UIView
,UIScrollView
,UITableView
。但我想检测我的视图何时开始可见并在屏幕上可以查看(例如,如果视图已添加到UIScrollView
)。
我有滚动视图并将我的视图(横幅)添加为子视图。但起初我看不到我的横幅,应该滚动。
我想要检测我的视图将在屏幕上显示的时刻。
答案 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以获取更多信息。