private void DrawDayLabels(CoreGraphics.CGRect rect) { var font = UIFont.SystemFontOfSize(DayNameHeight); UIColor.White.SetColor(); var context = UIGraphics.GetCurrentContext(); context.SaveState(); var i = 0; var cultureInfo = new CultureInfo(NSLocale.CurrentLocale.LanguageCode); cultureInfo.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Monday; var dayNames = cultureInfo.DateTimeFormat.DayNames; if (!SundayFirst) { // Shift Sunday to the end of the week var firstDay = dayNames [0]; for (int count = 0; count < dayNames.Length - 1; count++) { dayNames [count] = dayNames [count + 1]; } dayNames [dayNames.Length - 1] = firstDay; } foreach (var d in dayNames) { d.Substring(0, 3).DrawString(new CoreGraphics.CGRect(i * DayCellWidth, HeaderViewSize.Height - DayNameHeight - 2, DayCellWidth, DayNameHeight), font, UILineBreakMode.WordWrap, UITextAlignment.Center); i++; } context.RestoreState(); }
public FMCalendar(CoreGraphics.CGRect mainViewSize, CoreGraphics.CGRect headerViewSize) : base(mainViewSize) { this.MainViewSize = mainViewSize; this.HeaderViewSize = headerViewSize; Initialize(); }
public override void Draw(CoreGraphics.CGRect rect) { if (TopBar != null) { TopBar.Draw(new CoreGraphics.CGRect(0, 0, 0, 0)); //(new CoreGraphics.CGPoint (0, 0)); } DrawDayLabels(rect); DrawMonthLabel(rect); }
private void DrawMonthLabel(CoreGraphics.CGRect rect) { var r = new CoreGraphics.CGRect(new CoreGraphics.CGPoint(0, (HeaderViewSize.Height / 2) - 15), new CoreGraphics.CGSize { Width = HeaderViewSize.Width, Height = HeaderElementSize }); UIColor.White.SetColor(); CurrentMonthYear.ToString(MonthFormatString, new CultureInfo(NSLocale.CurrentLocale.LanguageCode)) .DrawString(r, UIFont.SystemFontOfSize(20), UILineBreakMode.WordWrap, UITextAlignment.Center); }
public override void Draw(CoreGraphics.CGRect rect) { PerformDraw(); }
public FMCalendar(CoreGraphics.CGRect mainViewSize) : this(mainViewSize, new CoreGraphics.CGRect(0, 0, mainViewSize.Width, 60)) { }
private void DrawMonthLabel(CoreGraphics.CGRect rect) { var r = new CoreGraphics.CGRect(new CoreGraphics.CGPoint(0, (HeaderViewSize.Height / 2) - 15), new CoreGraphics.CGSize { Width = HeaderViewSize.Width, Height = HeaderElementSize }); UIColor.Black.SetColor (); CurrentMonthYear.ToString (MonthFormatString, new CultureInfo (NSLocale.CurrentLocale.LanguageCode)) .DrawString (r, UIFont.SystemFontOfSize (20), UILineBreakMode.WordWrap, UITextAlignment.Center); }
public void BuildGrid() { DateTime previousMonth = _currentMonth.AddMonths(-1); DateTime nextMonth = _currentMonth.AddMonths(1); var daysInPreviousMonth = DateTime.DaysInMonth(previousMonth.Year, previousMonth.Month); var daysInMonth = DateTime.DaysInMonth(_currentMonth.Year, _currentMonth.Month); weekdayOfFirst = WeekDayIndex(_currentMonth.DayOfWeek); var lead = daysInPreviousMonth - (weekdayOfFirst - 1); // build last month's days for (int i = 1; i <= weekdayOfFirst; i++) { var viewDay = new DateTime(previousMonth.Year, previousMonth.Month, i); var dayView = new CalendarDayView { SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor }; #if __UNIFIED__ dayView.Frame = new CoreGraphics.CGRect((i - 1) * WeekDayWidth, 0, WeekDayWidth, WeekDayHeigth); #else dayView.Frame = new RectangleF((i - 1) * WeekDayWidth, 0, WeekDayWidth, WeekDayHeigth); #endif dayView.Date = viewDay; dayView.Text = lead.ToString(); AddSubview(dayView); _dayTiles.Add(dayView); lead++; } var position = weekdayOfFirst+1; var line = 0; // current month for (int i = 1; i <= daysInMonth; i++) { var viewDay = new DateTime(_currentMonth.Year, _currentMonth.Month, i); var dayView = new CalendarDayView { #if __UNIFIED__ Frame = new CoreGraphics.CGRect((position - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #else Frame = new RectangleF((position - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #endif Today = (CurrentDate.Date==viewDay.Date), Text = i.ToString(), Active = true, Tag = i, Selected = viewDay.Date == SelectedDate.Date, SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor, }; dayView.Date = viewDay; UpdateDayView(dayView); if (dayView.Selected) SelectedDayView = dayView; AddSubview(dayView); _dayTiles.Add(dayView); position++; if (position > 7) { position = 1; line++; } } //next month if (position != 1) { int dayCounter = 1; for (int i = position; i < 8; i++) { var viewDay = new DateTime(nextMonth.Year, nextMonth.Month, i); var dayView = new CalendarDayView { #if __UNIFIED__ Frame = new CoreGraphics.CGRect((i - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #else Frame = new RectangleF((i - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #endif Text = dayCounter.ToString(), SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor, }; dayView.Date = viewDay; UpdateDayView(dayView); AddSubview(dayView); _dayTiles.Add(dayView); dayCounter++; } } #if __UNIFIED__ Frame = new CoreGraphics.CGRect(Frame.Location, new CoreGraphics.CGSize(Frame.Width, (line + 1) * WeekDayHeigth)); #else Frame = new RectangleF(Frame.Location, new SizeF(Frame.Width, (line + 1) * WeekDayHeigth)); #endif //Lines = (position == 1 ? line - 1 : line); if (SelectedDayView!=null) this.BringSubviewToFront(SelectedDayView); }
public void BuildGrid() { DateTime previousMonth = _currentMonth.AddMonths(-1); DateTime nextMonth = _currentMonth.AddMonths(1); var daysInPreviousMonth = DateTime.DaysInMonth(previousMonth.Year, previousMonth.Month); var daysInMonth = DateTime.DaysInMonth(_currentMonth.Year, _currentMonth.Month); weekdayOfFirst = WeekDayIndex(_currentMonth.DayOfWeek); var lead = daysInPreviousMonth - (weekdayOfFirst - 1); // build last month's days for (int i = 1; i <= weekdayOfFirst; i++) { var viewDay = new DateTime(previousMonth.Year, previousMonth.Month, i); var dayView = new CalendarDayView { SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor }; #if __UNIFIED__ dayView.Frame = new CoreGraphics.CGRect((i - 1) * WeekDayWidth, 0, WeekDayWidth, WeekDayHeigth); #else dayView.Frame = new RectangleF((i - 1) * WeekDayWidth, 0, WeekDayWidth, WeekDayHeigth); #endif dayView.Date = viewDay; dayView.Text = lead.ToString(); AddSubview(dayView); _dayTiles.Add(dayView); lead++; } var position = weekdayOfFirst + 1; var line = 0; // current month for (int i = 1; i <= daysInMonth; i++) { var viewDay = new DateTime(_currentMonth.Year, _currentMonth.Month, i); var dayView = new CalendarDayView { #if __UNIFIED__ Frame = new CoreGraphics.CGRect((position - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #else Frame = new RectangleF((position - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #endif Today = (CurrentDate.Date == viewDay.Date), Text = i.ToString(), Active = true, Tag = i, Selected = viewDay.Date == SelectedDate.Date, SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor, }; dayView.Date = viewDay; UpdateDayView(dayView); if (dayView.Selected) { SelectedDayView = dayView; } AddSubview(dayView); _dayTiles.Add(dayView); position++; if (position > 7) { position = 1; line++; } } //next month if (position != 1) { int dayCounter = 1; for (int i = position; i < 8; i++) { var viewDay = new DateTime(nextMonth.Year, nextMonth.Month, i); var dayView = new CalendarDayView { #if __UNIFIED__ Frame = new CoreGraphics.CGRect((i - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #else Frame = new RectangleF((i - 1) * WeekDayWidth, line * WeekDayHeigth, WeekDayWidth, WeekDayHeigth), #endif Text = dayCounter.ToString(), SelectionColor = _calendarMonthView.SelectionColor, TodayCircleColor = _calendarMonthView.TodayCircleColor, BackgroundColor = _calendarMonthView.MonthBackgroundColor, }; dayView.Date = viewDay; UpdateDayView(dayView); AddSubview(dayView); _dayTiles.Add(dayView); dayCounter++; } } #if __UNIFIED__ Frame = new CoreGraphics.CGRect(Frame.Location, new CoreGraphics.CGSize(Frame.Width, (line + 1) * WeekDayHeigth)); #else Frame = new RectangleF(Frame.Location, new SizeF(Frame.Width, (line + 1) * WeekDayHeigth)); #endif //Lines = (position == 1 ? line - 1 : line); if (SelectedDayView != null) { this.BringSubviewToFront(SelectedDayView); } }