土曜日と日曜日の色を変更したカレンダーを表示する方法(Xamarin.iOS)
対象製品
Xuni
詳細
Xuniのカレンダーコントロールは、規定で標準的なカレンダーを表示し、日付選択ができる状態になりカレンダーとしての機能を利用できます。
これが標準的な表示です。
日本にある多くのカレンダーは、土曜日が青、日曜日が赤で表示されています。
カレンダーをカスタマイズして、曜日の色を変更するには以下のコード記述で実現できます。
曜日、日付ともに対応するイベント内で表示内容を変更します。
曜日を表示する領域(曜日スロット): DayOfWeekSlotLoading
日付を表示する領域(日付スロット): DaySlotLoading
このイベント内でカレンダーに表示される領域を判断して設定する必要がありますが、
Xamarin.iOSでは曜日の取得方法が異なりますのでご注意ください。
イベントではNSDate型で対象スロットの日付が引数として渡されます。
それをNSCalendarクラスを利用して、システムのカレンダーから曜日を取得します。
サンプルでは日付スロットの処理内に記述してあります。
サンプルコード
C#(Xamarin.iOS)
Xuni > 技術情報 > ドキュメント > Calendar-機能-日付コンテンツのカスタマイズ
これが標準的な表示です。
日本にある多くのカレンダーは、土曜日が青、日曜日が赤で表示されています。
カレンダーをカスタマイズして、曜日の色を変更するには以下のコード記述で実現できます。
曜日、日付ともに対応するイベント内で表示内容を変更します。
曜日を表示する領域(曜日スロット): DayOfWeekSlotLoading
日付を表示する領域(日付スロット): DaySlotLoading
このイベント内でカレンダーに表示される領域を判断して設定する必要がありますが、
Xamarin.iOSでは曜日の取得方法が異なりますのでご注意ください。
イベントではNSDate型で対象スロットの日付が引数として渡されます。
それをNSCalendarクラスを利用して、システムのカレンダーから曜日を取得します。
サンプルでは日付スロットの処理内に記述してあります。
サンプルコード
C#(Xamarin.iOS)
public override void ViewDidLoad() { base.ViewDidLoad(); Xuni.iOS.Core.XuniLicenseManager.Key = License.Key; XuniCalendar calendar = new XuniCalendar(); // カレンダーのフォントサイズを指定 calendar.CalendarFont = UIFont.BoldSystemFontOfSize(20); calendar.DayOfWeekFont = UIFont.BoldSystemFontOfSize(20); // 曜日スロットの処理 calendar.DayOfWeekSlotLoading += (object sender, DayOfWeekSlotLoadingEventArgs e) => { // 曜日スロットを取得して曜日領域に表示する内容を設定 var dayofweekSlot = e.DayOfWeekSlot; dayofweekSlot.TextColor = getColor(e.DayOfWeek); }; // 日付スロットの処理 calendar.DaySlotLoading += (XuniCalendar sender, Foundation.NSDate date, bool isAdjacentDay, CalendarDaySlotBase daySlot) => { var ds = daySlot as CalendarDaySlot; // 日付スロットを取得して日付領域に表示する内容を設定 if (!isAdjacentDay) { // NSDateから曜日のインデックスデータを取得する var weekday = NSCalendar.CurrentCalendar.Components(NSCalendarUnit.Weekday, date).Weekday; var dayofweek = int.Parse(weekday.ToString()); ds.DayTextColor = getColor((XuniDayOfWeek)dayofweek); } return daySlot; }; // カレンダーの表示Frameを設定 calendar.Frame = new CoreGraphics.CGRect(0, 20, this.View.Bounds.Width, this.View.Bounds.Height-20); this.View.AddSubviews(calendar); } // 曜日で判断して色を返す関数 private UIColor getColor(XuniDayOfWeek dayofWeek) { UIColor color; switch (dayofWeek) { case XuniDayOfWeek.Saturday: // 土曜日は青 color = UIColor.Blue; break; case XuniDayOfWeek.Sunday: // 日曜日は赤 color = UIColor.Red; break; default: color = UIColor.Black; // 既定値は黒 break; } return color; }
Xuni > 技術情報 > ドキュメント > Calendar-機能-日付コンテンツのカスタマイズ