iOS開発-UIコントロール:カレンダー選択コントロール


変換元:http://www.jianshu.com/p/bbe608a4abda?utm_campaign=hugo&utm_medium=reader_share&utm_content=note
今日のプロジェクトでは、次のようなニーズに遭遇しました.
iOS开发-UI控件:日历选取控件_第1张图片
QQ20141201-1.png
かなりカスタマイズが必要なカレンダー選択コントロールは、以前カレンダーを作ったことがなく、ちょうど検討してみました.
図から分かるように、このようなviewを作るには以下のいくつかのデータが必要です.
本日の日付今月は何日かあります
今月の初日は何曜日1、今日の日付はやりやすくて、[NSDate date]何でもあります.2、今月は何日ですか
- (NSInteger)totaldaysInThisMonth:(NSDate *)date{
    NSRange totaldaysInMonth = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
    return totaldaysInMonth.length;
}

3、初日は何曜日ですか
- (NSInteger)firstWeekdayInThisMonth:(NSDate *)date{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    [calendar setFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.
    NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    [comp setDay:1];
    NSDate *firstDayOfMonthDate = [calendar dateFromComponents:comp];

    NSUInteger firstWeekday = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:firstDayOfMonthDate];
    return firstWeekday - 1;
}

表はcollectionViewを使って、とても簡単で、demoアドレスhttps://github.com/StephenZhuang/SZCalendarPicker
最後の効果は以下の通りです.
SZCalendarPicker.gif