2013-10-13 29 views
4

當一個UIView出現在屏幕上時,它調用什麼方法? 例如,如果一個有一個UIScrollView和我有一百個觀點,一個接一個的下 什麼方法被稱爲UIViews填充它的時候都滾動,使得它們出現在屏幕上?iOS - 當UIView出現在屏幕上時,它調用的是什麼方法?

是 - (void)didMoveToWindow?別的東西?

+1

無。你想達到什麼目的? – Wain

+1

我想創建一個自定義的uiview子類,當它出現在用戶的屏幕上時,調用委託函數的委託 – Zigglzworth

+0

該視圖沒有這方面的知識。滾動視圖可以告訴你他們目前顯示哪些內容區域,但不會自動顯示該區域中的子視圖。這些看法一無所知。 – Wain

回答

1

如果你正在試圖找出當一個視圖獲取滾動到滾動視圖的邊界,它可能是更容易,可能更高性能的使用表格視圖...表視圖中有一個讓你知道當一個細胞會出現方法和您可以隨時查詢可見單元格。

+0

將在添加子視圖時調用will/didMoveToSuperView,而不是滾動到視圖中。 – Wain

+0

Wain說的是真的 – Zigglzworth

+0

@說得很對,我把注意力集中在「當它出現在屏幕上」的問題部分。但就像我說的,去與表視圖... –

0

無,但如果實現了UIScrollView的委託的UIScrollView不會調用,讓你的滾動位置和更多的方法(方法很多,最有可能的scrollViewDidScroll)。

https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html

要查看視圖,你算算哪種觀點,通過是否CGRectIntersectsRect(scrollView.bounds,subview.frame)返回true是可見的。

+0

是的,但它不」告訴我哪個視圖進入了可見性,這是​​我正在尋找的。現在我意識到我可以將它們存儲在一個數組中,並通過遍歷它們的位置來找到我們的哪一個,但是這是太多的處理,並且不夠我所需要的。 – Zigglzworth

+0

您必須計算哪個視圖可見。我修改了答案 –

1

具體地用於滾動視圖,委託(通常是控制器)可以得到通知該滾動觀點滾動。當你得到這個回調您可以編寫代碼位,通過子視圖和檢查,這是在滾動視圖的可見幀迭代(使用CGRectIntersectsRectcontentOffsetbounds)。

+0

處理過多。不夠流暢。 – Zigglzworth

+0

這意味着你有太多的子視圖同時加載所有... – Wain

+0

Scrollviews可以很長,有很多子視圖加載他們..我知道我可以使用tableview來避免這種超載,但我期待以查看scrollview方式是否可能首先 – Zigglzworth

相關問題