2015-04-28 147 views
0

我有一些UIView。我只知道觀點。它可以添加到UIViewUIScrollView,UITableView。但是我想要檢測何時我的視圖開始在屏幕上開始可見並最終可見(例如,如果將視圖添加到UIScrollView)。UIView窗口移動

I have scroll view and add my view (banner) as subview 我有滾動視圖,並添加我的看法(橫幅)作爲子視圖。但起初我看不到我的旗幟,應該滾動。

enter image description here 我想檢測我的視圖在屏幕上顯示的時刻。

+1

請清楚地解釋問題... –

+0

我有uiview。這個視圖被添加到UIScrollView,但被添加到底部。起初我看不到我的觀點。但我想要檢測用戶何時開始在屏幕上看到視圖的時刻。但我只能用我的視圖工作,不能使用UIScrollView。 – Fess

+0

嘿..分享你的輸出截圖和預期的輸出屏幕截圖... –

回答

0

如果我正確逮住你的觀點,你可能想在此刻被通知的旗幟是UIScrollView的滾動時可見。其中一個解決方案如下:

首先,您將橫幅添加爲UIScrollView的子視圖,因此,您必須知道橫幅的frame

然後,比較bannerView.frame.origin.yscrollView.contentOffset.y在ScrollView的委託方法- (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瞭解更多信息。

+0

不。所有這些方法的工作,當我們添加視圖到超級視圖。但我的觀點已被添加,並且我想要檢測顯示視圖的時刻(如UWiewController中的viewWillAppear) – Fess

+0

@Fess我剛剛編輯了我的答案。檢查一下,看看我是否正確地理解了你的觀點。 – liushuaikobe

+0

我無法使用uiscrollview。我有圖書館。而在我的圖書館裏,我只能看到。我想要檢測我的視圖何時出現在屏幕上 – Fess