簡體   English   中英

EKCalendarEKCalendar CGcolor未在iPhone日歷中設置顏色

[英]EKCalendarEKCalendar CGcolor is not setting color in iPhone's calendar

我有兩種類型的事件,所以我設置了兩種不同的顏色來區分日歷中的事件,但是我無法設置EkCalendar的顏色,這是我的代碼

NSDateComponents* deltaComps = [[NSDateComponents alloc] init];
//[deltaComps setDay:3];
[deltaComps setMinute:02];
NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];
//NSDate* dayAfterTomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:tomorrow options:0];
// You can use the event store now
EKCalendar *cal;
EKEvent *myEvent  = [EKEvent eventWithEventStore:eventDB];
myEvent.title     = @"Visit1";
myEvent.startDate = tomorrow;
myEvent.endDate   = tomorrow;
myEvent.allDay = NO;
myEvent.notes = @"Visit 5:30p - 8:30p";
cal.CGColor=[UIColor yellowColor].CGColor  ;
//myEvent.
//[myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];
cal = [EKCalendar calendarForEntityType:EKEntityMaskEvent eventStore:eventDB];
//[myEvent setCalendar:cal];
[myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];
EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:1.0f];
[myEvent addAlarm:alarm];

NSError *err;
//[eventDB saveEvent:myEvent span:EKSpanFutureEvents error:&err];
[eventDB saveEvent:myEvent span:EKSpanThisEvent commit:YES error:&err];


NSDateComponents* deltaComps1 = [[NSDateComponents alloc] init];
[deltaComps1 setDay:2];
NSDate* tomorrow1 = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps1 toDate:[NSDate date] options:0];
//NSDate* dayAfterTomorrow1 = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:tomorrow1 options:0];



// 2nd event
EKEvent *myEvent2  = [EKEvent eventWithEventStore:eventDB];
myEvent2.title     = @"Visi1";
myEvent2.startDate = tomorrow1;
myEvent2.endDate   = tomorrow1;
myEvent2.allDay = NO;
myEvent2.notes = @"Visit 9:00a - 8:30p";
[myEvent2 setCalendar:[eventDB defaultCalendarForNewEvents]];
EKAlarm *alarm1 = [EKAlarm alarmWithRelativeOffset:1.0f];

[myEvent2 addAlarm:alarm1];
[eventDB saveEvent:myEvent2 span:EKSpanThisEvent commit:YES error:&err];
if (err) {
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@", err] delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    [alert show];
}else {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setBool:YES forKey:@"EVENTS_CREATED"];
    [prefs synchronize];
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Visit events has been added to calendar." delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    [alert show];
}

您要在未初始化的對象上設置“ CGColor”屬性:

EKCalendar *cal;
[...]
cal.CGColor=[UIColor yellowColor].CGColor  ;
cal = [EKCalendar calendarForEntityType:EKEntityMaskEvent eventStore:eventDB];

您應該在設置顏色的調用之前移動日歷初始化。

另外,我不確定這是否可能。 嘗試執行此操作之前,請檢查calendar.immutable返回false。 我認為對於由用戶應用程序創建的日歷無權更改顏色,否則您可以運行應用程序,並且所有日歷都可以更改顏色...

我認為,如果您想使用自己的自定義顏色設置日歷,則可能需要自己創建一個日歷。 例如參見本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM