我有一些UIView
。我只知道觀點。它可以添加到UIView
,UIScrollView
,UITableView
。但是我想要檢測何時我的視圖開始在屏幕上開始可見並最終可見(例如,如果將視圖添加到UIScrollView
)。UIView窗口移動
我有滾動視圖,並添加我的看法(橫幅)作爲子視圖。但起初我看不到我的旗幟,應該滾動。
我想檢測我的視圖在屏幕上顯示的時刻。
我有一些UIView
。我只知道觀點。它可以添加到UIView
,UIScrollView
,UITableView
。但是我想要檢測何時我的視圖開始在屏幕上開始可見並最終可見(例如,如果將視圖添加到UIScrollView
)。UIView窗口移動
我有滾動視圖,並添加我的看法(橫幅)作爲子視圖。但起初我看不到我的旗幟,應該滾動。
我想檢測我的視圖在屏幕上顯示的時刻。
如果我正確逮住你的觀點,你可能想在此刻被通知的旗幟是UIScrollView
的滾動時可見。其中一個解決方案如下:
首先,您將橫幅添加爲UIScrollView
的子視圖,因此,您必須知道橫幅的frame
。
然後,比較bannerView.frame.origin.y
和scrollView.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瞭解更多信息。
不。所有這些方法的工作,當我們添加視圖到超級視圖。但我的觀點已被添加,並且我想要檢測顯示視圖的時刻(如UWiewController中的viewWillAppear) – Fess
@Fess我剛剛編輯了我的答案。檢查一下,看看我是否正確地理解了你的觀點。 – liushuaikobe
我無法使用uiscrollview。我有圖書館。而在我的圖書館裏,我只能看到。我想要檢測我的視圖何時出現在屏幕上 – Fess
請清楚地解釋問題... –
我有uiview。這個視圖被添加到UIScrollView,但被添加到底部。起初我看不到我的觀點。但我想要檢測用戶何時開始在屏幕上看到視圖的時刻。但我只能用我的視圖工作,不能使用UIScrollView。 – Fess
嘿..分享你的輸出截圖和預期的輸出屏幕截圖... –