Ios UIView窗口中的移动

Ios UIView窗口中的移动,ios,uiview,frame,Ios,Uiview,Frame,我有一些ui视图。我只知道风景。它可以添加到UIView,UIScrollView,UITableView。但我想检测我的视图在屏幕上何时开始可见和何时结束可见(例如,如果视图已添加到UIScrollView) 我有滚动视图和添加我的视图(横幅)作为子视图。但一开始我看不到我的横幅,应该滚动 我想检测我的视图在屏幕上显示的时刻。如果我正确地领会了您的观点,您可能希望在滚动UIScrollView时看到横幅时得到通知。一种解决方案如下: 首先,是您将横幅添加为UIScrollView的子视图,

我有一些
ui视图
。我只知道风景。它可以添加到
UIView
UIScrollView
UITableView
。但我想检测我的视图在屏幕上何时开始可见和何时结束可见(例如,如果视图已添加到
UIScrollView

我有滚动视图和添加我的视图(横幅)作为子视图。但一开始我看不到我的横幅,应该滚动


我想检测我的视图在屏幕上显示的时刻。

如果我正确地领会了您的观点,您可能希望在滚动
UIScrollView
时看到横幅时得到通知。一种解决方案如下:

首先,是您将横幅添加为
UIScrollView
的子视图,因此,您必须知道横幅的
框架

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

- (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;

更多信息,请阅读此文。

请清楚地解释问题……我有自己的看法。此视图已添加到UIScrollView,但已添加到底部。起初我看不到我的观点。但我想检测用户开始在屏幕上看到视图的时刻。但是我只能使用我的视图,不能使用UIScrollView。嘿。。共享您的输出屏幕截图和预期的输出屏幕截图…否。当我们将视图添加到superview时,所有这些方法都有效。但我的视图被添加了,我想检测我的视图显示的时刻(比如ViewWillDisplayinUIViewController)@Fess我刚刚编辑了我的答案。检查一下,看看我是否正确理解你的观点。我无法使用uiscrollview。我有图书馆。在我的图书馆里,我只有一个视野。我想检测我的视图何时出现在屏幕上