我知道有幾個Cocoa Touch/iPhone日曆實現可以在線使用,但由於某些原因,我試圖創建自己的日曆。我遇到了一個問題,我使用的代碼將日期(我將UIView的實例表示爲子視圖的實例放置到另一個UIView中)代碼在12月搞亂了。Cocoa Touch:在月視圖日曆上佈置日期
目前,我做的是分解日起NSDateComponents的一個實例,然後獲取組件的week
和weekday
性質找出日期視圖的X和Y「位置」,分別。我可以通過week
屬性在我放置的月份的第一天抵消X位置。
簡要示例:2009年8月的第一天屬於星期六,其日期組件week
屬性爲31(使用公曆)。因此,它的Y位置是6,它的X位置是0,我將使用的X偏移量是31.因此,我可以在8月的第二天,這是一個星期天,並確定它的X位置爲0, Y的位置是week
- 31 = 32 - 31 = 1.這樣我就可以爲8月份的日期視圖制定一個零索引的網格,並且它一切順利...
...直到我試着在十二月份做同樣的事情。 2009年12月,27日(星期日)顯然week
財產包攬到1,這意味着我打算將第27到第31位置於Y位置-48左右。
我的問題是雙重的:爲什麼week
財產中途進入一年的最後一個月?它是在上一年的最後一個星期日而不是一年中的第一天進行索引的?第二,有沒有更好的方式來鋪陳日期格這樣的(使用其他組件從NSDateComponents實例,或者別的什麼我可以從一個NSDate和NSCalendar獲得),或者我只需要添加一個檢查的「一年的最後一週」的條件?
但是這是可本地化的嗎?我希望儘可能在我的計算中儘可能通用,因爲我不想在非公曆環境中使用此代碼。 – Tim 2009-08-11 17:30:43
我認爲格里高利是一個很好的基礎來計算您的本地化的休息。我想不出比一年365天更全面的方式。您如何呈現數據與您的基礎實施完全分開。您可以創建一個新類別來處理從該系統到您可能需要的任何格式的翻譯。 – 2009-08-12 07:56:06