所以有點單步執行代碼後,我用錘子這種基本的方法。我採用了大部分TKCalendarMonthView.m-> selectDay:day方法的代碼。我基本上創建方法創建一個新對象TKCalendarMonthTiles和在細節填充,然後添加子視圖到主TKCalendarMonthTiles對象(個體)。我標記子視圖,所以我可以先幹掉他們,如果他們在方法的開始存在,因爲我只是想選擇一個額外的一天(如果你希望他們留在UI,你可以離開附着子視圖)。我不追蹤日期或存儲它們或任何東西,但這符合我的需求。
的想法是簡單地創建與您要使用包含實際的「日期」的文本標籤,如「14」,然後添加這些意見子視圖自正確的平鋪圖像和一個視圖。借來的代碼做所有計算。「這裏的」該日期瓦駐留在網格中,那麼該視圖在正確的位置繪製。代碼:
- (void)markDay:(int)day {
// First, remove any old subviews
[[self viewWithTag:42] removeFromSuperview];
[[self viewWithTag:43] removeFromSuperview];
int pre = firstOfPrev < 0 ? 0 : lastOfPrev - firstOfPrev + 1;
int tot = day + pre;
int row = tot/7;
int column = (tot % 7)-1;
TKCalendarMonthTiles *deliveryTile = [[TKCalendarMonthTiles alloc] init];
deliveryTile.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/MyDateTile.png")];
deliveryTile.currentDay.text = [NSString stringWithFormat:@"%d",day];
if(column < 0){
column = 6;
row--;
}
CGRect r = deliveryTile.selectedImageView.frame;
r.origin.x = (column*46);
r.origin.y = (row*44)-1;
deliveryTile.selectedImageView.frame = r;
deliveryTile.currentDay.frame = r;
[[deliveryTile selectedImageView] setTag:42];
[[deliveryTile currentDay] setTag:43];
[self addSubview:deliveryTile.selectedImageView];
[self addSubview:deliveryTile.currentDay];
} // markDay:
我把這種方法在TKCalendarMonthView.m-結束> selectDay:一天,以及在TKCalendarMonthView.m結束 - > - reactToTouch:下來。迄今爲止有限的測試非常好。瞭解爲什麼時區設置一直在考慮明天(我在太平洋時區)。
乾杯,邁克爾