美文网首页iOS DeveloperiOS备忘录
自定义简单日历控件

自定义简单日历控件

作者: LJ_影子 | 来源:发表于2016-12-14 11:13 被阅读139次

最近在做一个蓝牙项目中需要用到日历,从网上浏览第三方的日历控件都不能满足需求,于是就考虑自定日历控件来满足需求。日历效果如下

要解决问题?

1.判断当前的日期是星期几

2.判断当前的这个月有多少天(还得判断当前的年是否闰年)

3.怎么获取下个月和上个月(有跨年的情况)

问题一: 好像是无从下手,但是查阅相关资料,苹果提供了相关的类来解决。 具体实现如下:

//输入日期输出星期几

- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {

NSArray*weekdays = [NSArrayarrayWithObjects: [NSNullnull],@"星期天",@"星期一",@"星期二",@"星期三",@"星期四",@"星期五",@"星期六",nil];

NSCalendar*calendar = [[NSCalendaralloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

NSTimeZone*timeZone = [[NSTimeZonealloc]initWithName:@"Asia/Shanghai"];

[calendarsetTimeZone: timeZone];

NSCalendarUnitcalendarUnit =NSCalendarUnitWeekday;

NSDateComponents*theComponents = [calendarcomponents:calendarUnitfromDate:inputDate];

return[weekdaysobjectAtIndex:theComponents.weekday];

}

其中weekdays可以自定义,可以填写一、二、三等等,根据具体的情况修改。

问题二:判断一个月有多天不难,最笨的方法直接用条件语句来判断输出这个月有多少天,但需要注意的是必须判断当前的年是否是闰年,这里提供另外一种方法来解决。同样还是利用苹果提供的类来实现。具体的方案如下:

//输入日期输出当月的天数

- (NSInteger)dayIntegerFromDate:(NSDate*)inputDate {

NSCalendar*calendar = [NSCalendarcurrentCalendar];

NSRangerange = [calendarrangeOfUnit:NSCalendarUnitDayinUnit:NSCalendarUnitMonthforDate:inputDate];

returnrange.length;

}

问题三:其实要解决这个问题并不难,最直接的方案就是推算,不过在推算的过程中需要注意跨年的情况。另一种方案是利用苹果提供的类来解决是最简单的,具体的实现如下:

//输入日期输出上个月日期

- (NSDate*)lastMonth:(NSDate*)date{

NSDateComponents*dateComponents = [[NSDateComponentsalloc]init];

dateComponents.month= -1;

NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];

returnnewDate;

}

// //输入日期输出下个月日期

- (NSDate*)nextMonth:(NSDate*)date{

NSDateComponents*dateComponents = [[NSDateComponentsalloc]init];

dateComponents.month= +1;

NSDate*newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];

returnnewDate;

}

到此难点完全解决。效果图如下:

最后附上完整的文件,控件还要不断的优化,有设计不合理的地方请多多包含。

https://pan.baidu.com/s/1dEAWzlR

相关文章

  • 自定义控件讲解(csdn爱哥)

    自定义控件其实很简单1/12 自定义控件其实很简单1/6 自定义控件其实很简单1/4 自定义控件其实很简单1/3 ...

  • 自定义日历控件

    Android自定义日历控件(继承系统控件实现) 主要步骤 编写布局 继承LinearLayout设置子控件 设置...

  • 自定义简单日历控件

    最近在做一个蓝牙项目中需要用到日历,从网上浏览第三方的日历控件都不能满足需求,于是就考虑自定日历控件来满足需求。日...

  • Qt任务事件日历控件

    Qt任务事件日历控件 @[toc] 功能 1.炫酷日历控件2.自定义修改日历肤色(接口没开放,可自行添加)3.任务...

  • JTCalendar使用技巧

    JTCalendar使用技巧1.简介:JTCalendar是一个可简单自定义的iOS日历控件,要求iOS 7及以上...

  • Android自定义View实现日历界面(带点击和历史标记)

    1、自定义view日历星期 2、简单自定义日历界面 3.xml代码 4.自定义日历界面带标记界面 5.自定义日历带...

  • Android源码社区高质量的开发类库(三)

    1.SuperCalendarandroid 自定义日历控件 支持左右无限滑动 周月切换 标记日期显示 自定义显示...

  • 自定义日历控件

    前言# 日历控件在一些旅游、教育、约车、学习类APP中经常被使用到,但是往往系统的NSCalendar控件都是不能...

  • 自定义日历控件

    效果图 使用 实现 MonthView 通过drawHeaderSpace(canvas)方法绘制顶灰色部间隔 通...

  • 自定义控件

    简单的自定义控件 Customizing appearance of UISegmentedControl

网友评论

    本文标题:自定义简单日历控件

    本文链接:https://www.haomeiwen.com/subject/eqrimttx.html