我正在實現項目的水平旋轉木馬 - 有點像UITableView,但單元格水平排列而不是垂直排列。我希望它支持大量的項目,方法是重複使用一個項目並僅在需要繪製或點擊視圖時才設置其屬性。如何重用UIView進行繪圖?
我該怎麼做?我可以從傳送帶的drawRect中調用視圖的drawRect,還是需要做更復雜的事情?
我正在實現項目的水平旋轉木馬 - 有點像UITableView,但單元格水平排列而不是垂直排列。我希望它支持大量的項目,方法是重複使用一個項目並僅在需要繪製或點擊視圖時才設置其屬性。如何重用UIView進行繪圖?
我該怎麼做?我可以從傳送帶的drawRect中調用視圖的drawRect,還是需要做更復雜的事情?
我懷疑它會如此簡單,因爲drawRect
中的實際繪圖可能發生在與單元設置不同的時間。在理想情況下,drawRect
中的任何東西都應該負責在該視圖中繪製事物,而不是佈局。
因此UITableView的有一大堆的方法來設置部分,行等
你可能想看看丹尼爾·塔爾的DTGridView這基本上是做正是你想要達到的目標。
DTGridView看起來不錯,也考慮iCarousel爲iOS這也將做的CoverFlow風格
你不應該叫drawRect:
你要打電話-[UIView setNeedsDisplay]
調用-[UIView drawRect:]
。這將設置您要繪製的圖形上下文。
至於佈局,你的傳送帶應該實現-[UIView layoutSubviews]
,你調用-[UIView setNeedsLayout]
調用。
另請參閱PhotoScroller
來自Apple的示例代碼。它的每一個高效。
稍作修改:'drawRect:'將內容繪製到背景'CALayer'中,而不是視圖本身。 –