The Old Blog Archive (Traditional Chinese), 2004-2009

滿城盡是封面流 (cover flow)

Xcode 3的Quartz範例中有一個叫CovertFlow的程式,示範如何以CoreAnimation來製作cover flow。程式相當複雜。有人在Cocoa mailing list上問:Apple有沒有Cover Flow的API?

答案是有的──雖然Apple沒有將之公開。Class就叫IKImageFlowView。

如果你會用IKImageBrowserView,那麼幾乎已經完成了把程式cover-flow化的準備。進Interface Builder弄一個class為IKImageFlowView的custom view,然後把data source (IKImageBrowserDataSource protocol)的兩個必備method換成:

  • - (NSUInteger)numberOfItemsInImageFlow:(id)aFlowLayer
  • - (id)imageFlow:(id)aFlowLayer itemAtIndex:(int)index

就可以了。事實上呢,Apple的API還會耍一下小把戲。當你什麼都不做時,console log會丟給你一個exception,說data source沒有實作 “-flowLayer:itemAtIndex:” 這個method,實際上的名字卻是上述的imageFlow:itemAtIndex: 。

於是就做完了,根據傳統,有圖有真相:

Cover Flow Study

範例程式碼可以從CocoaHeads Taipei Group此處取得

4 Responses to “滿城盡是封面流 (cover flow)”

  1. on 09 Nov 2007 at 13:48OOO

    拿來做OV選字介面XD?

  2. [...] 自從找出了 CoverFlow 效果的這個 Class – IKImageFlowView,就開始到處試著用用看;而如果用 CoverFlow 瀏覽 DigGirl 透過 RSS 發佈出來的資料,就會像下面這個樣子: [...]

  3. on 11 Nov 2007 at 17:22Orez

    ContactsFlow!…

    剛剛利用暗藏在 Leopard 中的 CoverFlow API 寫出了一個可以”流動您的聯絡人™” 的無聊小軟體XD 若您剛剛好是那種喜歡幫每個聯絡人都設定上圖片的人,那麼跑起來的爽度應該是很高的 :D 有圖有…

  4. on 23 Jul 2008 at 19:49wahaha

    如果iPhone上的通訊錄
    也能套用到CoverFlow上
    那就真的炫呆了
    HTC Daimond的那個3D快撥電話簿
    根本沒得比~~