2011-06-26 36 views
0

我有一個也是基本視圖子視圖的視圖數組。我想高效地刪除不在基本視圖框架內的所有視圖(即不可見)。查找視圖外部子視圖的有效方法

我在尋找建議,除了計算所有幀與基本視圖幀的交集外,還尋找最有效的方法。

+1

蘋果的iphone名爲[TiledScrollView]書面例子(http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Listings/3_Tiling_Classes_TiledScrollView_m.html#//apple_ref/doc/uid/DTS40008904- 3_Tiling_Classes_TiledScrollView_m-DontLinkElementID_26)還通過運行for循環計算交點來找出不可見的圖塊。查看示例鏈接中的layoutSubViews函數。 –

回答

1

如果你想刪除你的子視圖,當它們不在基本視圖的框架內時,你將需要計算它們與基本視圖的交集。或者,您可以使用bool CGRectContainsRect (CGRect rect1, CGRect rect2);而不是完全計算交點。

如果你想這樣做是爲了優化子視圖圖紙,您可以考慮使用UIView'scliptobounds property,而不是移除子視圖:

clipsToBounds

一個布爾值,確定子視圖是否被限制到接收者的邊界。

@屬性(非原子)BOOL clipsToBounds

討論

將此值設置爲YES導致子視圖被裁剪到接收器的邊界。如果設置爲NO,那麼其幀超出接收器可見邊界的子視圖不會被剪切。默認值是NO。