土曜日と日曜日の色を変更したカレンダーを表示する方法(Xamarin.iOS)

文書番号 : 81955     文書種別 : 使用方法     登録日 : 2017/01/30     最終更新日 : 2017/01/30
文書を印刷する
対象製品
Xuni
詳細
Xuniのカレンダーコントロールは、規定で標準的なカレンダーを表示し、日付選択ができる状態になりカレンダーとしての機能を利用できます。
これが標準的な表示です。

日本にある多くのカレンダーは、土曜日が青、日曜日が赤で表示されています。
カレンダーをカスタマイズして、曜日の色を変更するには以下のコード記述で実現できます。
曜日、日付ともに対応するイベント内で表示内容を変更します。

曜日を表示する領域(曜日スロット): 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-機能-日付コンテンツのカスタマイズ

関連情報