0

推薦使用什麼方法在iOS上的月視圖日曆上跨多天繪製多日事件矩形?請記住能夠在日曆上拖動/放下事件欄的目標如何在iOS的月視圖日曆上跨多天繪製多日事件矩形?

想到兩個選項,但我不確定哪一個最好(或者如果有另一個)是:

  1. 使用UICollectionView(與UICollectionViewFlowLayout) - 但那麼每個多日事件將不會有一個對象嗎?即每個多天事件都需要在每一天的單元格中分別有效地繪製其自身的一部分,並確保繪製線向上顯示爲單個線條

  2. 自己繪製日曆,以便您可以將多日矩形條以便於拖放,但是您不會從UICollectionView獲得與繼續滾動日曆相關的呈現支持,並且它會根據需要創建/刪除單元格?

任何建議/ direciton歡迎。

回答

1

我建議如下:

  • 創建表示,每天自己collectionviewcell(你也許可能 已經做到這一點)。
  • 的「事件」屬性添加到細胞保持 所有開始,結束或包括天(你設置這collectionView:cellForItemAtIndexPath:)事件。
  • 你,如果你自己(重寫的drawRect)繪製矩形來決定,或者如果你 添加視圖(如ImageView的,...)。在任何情況下:有 4方案:

    1. 該事件在小區開始,但在其他小區
    2. 該事件在細胞開始,並且在細胞中的結束而結束
    3. 事件在另一單元開始並且在這種細胞
    4. 事件細胞之前開始和小區

對於每個該SCE的結束後結束narios,繪製相應的圖形或添加相應的視圖。如果使用普通的彩色矩形/視圖,這非常容易,如果矩形具有邊框或圓角,則必須爲每個方案繪製不同的矩形。

如果拖動的情況下,只需調整事件的日期,並確保它被刪除/從/添加到相應的細胞和重繪細胞。

另一種(可能更容易)的方式向「事件」屬性可能是,該電池可以查詢從財產以後相應的事件,如事件管理。

+0

感謝 - 我可以問(一)將這一概念是阻力後觸發整個重裝,或者找到一種方法無效參與的開始和結束日期之間的所有細胞?和(b)怎麼樣在拖動和以某種方式顯示用戶被拖動的項目的查看/指示?理想情況下(可能很難),它會像iMovie那樣拖動它,突出顯示它在當時可能會下降的最近可用位置。 – Greg

+0

您不需要重新加載整個collectionView。由於您知道開始日期和結束日期(拖動時發生了哪些變化),因此您可以確定哪些單元需要更新,並且可以使用reloadItemsAtIndexPaths更新它們。由於您在拖動時調整開始日期和結束日期,矩形應自動移動。拖動時也可以繪製不同的矩形。對於最接近的目的地,我會插入一個臨時事件,呈現相同的方式(你應該得到這個免費)。 – liefersfl

+0

您可以將一個屬性'dragging'和一個屬性'placeholder'添加到事件類中。然後,您可以決定在單元格內繪製哪種矩形。 – liefersfl