IOS之使用CKCalendar做datePicker

比较符合项目需要,要做一个日历选择器,并且实现当前日期之后的时间不可选。网上找了一下,GitHub上的一个开源日历选择器CKCalendar比较符合项目需求。效果图如下:(很反感网上那些文章讲了半天连个效果图都没有,纯个人吐槽,勿喷~)

刚开始对着CKCalendar的源码看来半天,还想着直接修改源码让当前日期之后的不可选,却忘了去测试作者提供的代理接口,真傻!

鼓捣半天后终于弄出来了,怕时间久了就忘了,还是做一下笔记:

当前日期之后不可选

#pragma mark - CalendarPickerDelegate Method
- (BOOL)calendar:(CKCalendarView *)calendar willSelectDate:(NSDate *)date
{
    NSDate *now = [NSDate date];
    NSString *stringNow = [DATE_FORMATER stringFromDate:now];
    now = [DATE_FORMATER dateFromString:stringNow];
    NSString *selectedValue;
    if ([date compare:now] == NSOrderedSame ||[date compare:now] == NSOrderedAscending) {
        _calendarPickerVC.selectedDate = date;
        selectedValue = [DATE_FORMATER stringFromDate:_calendarPickerVC.selectedDate];
        _evalItem.value0 = selectedValue;
        [_btnValue0ValueList setTitle:selectedValue forState:UIControlStateNormal];
        [self makeOtherItemValues];
    }
    else
        return NO;

    return YES;

}

- (void)calendar:(CKCalendarView *)calendar configureDateItem:(CKDateItem *)dateItem forDate:(NSDate *)date
{
    NSDate *now = [NSDate date];
    NSString *stringNow = [DATE_FORMATER stringFromDate:now];
    now = [DATE_FORMATER dateFromString:stringNow];
    if ([date compare:now]==NSOrderedDescending ) {
        dateItem.textColor = [UIColor lightGrayColor];
    }

}

当前日期之前不可选:

#pragma mark - CalendarPickerDelegate Menthod
- (BOOL)calendar:(CKCalendarView *)calendar willSelectDate:(NSDate *)date
{
    NSDate *now = [NSDate date];
    NSString *stringNow = [DATE_FORMATER stringFromDate:now];
    now = [DATE_FORMATER dateFromString:stringNow];
    NSString *selectedValue;
    if ([date compare:now] == NSOrderedSame ||[date compare:now] == NSOrderedDescending) {
        _calendarPickerVC.selectedDate = date;
        selectedValue = [DATE_FORMATER stringFromDate:_calendarPickerVC.selectedDate];
    }
    else
        return NO;

    return YES;

}

- (void)calendar:(CKCalendarView *)calendar configureDateItem:(CKDateItem *)dateItem forDate:(NSDate *)date
{
    NSDate *now = [NSDate date];
    NSString *stringNow = [DATE_FORMATER stringFromDate:now];
    now = [DATE_FORMATER dateFromString:stringNow];
    if ([date compare:now]==NSOrderedAscending ) {
        dateItem.textColor = [UIColor lightGrayColor];
    }

}

特别记得不要忘记设置代理: _calendarPickerVC.calendar.delegate =
self
;

完!

IOS之使用CKCalendar做datePicker

时间: 2024-08-23 15:16:55

IOS之使用CKCalendar做datePicker的相关文章

Android与IOS的优缺点比较 对 Android 与 IOS 比较是个个人的问题。 就好比我来说,我两个都用。我深知这两个平台的优缺点。所以,我决定分享我关于这两个移动平台的观点。另外,然后谈谈我对新的 Ubuntu 移动平台的印象和它的优势。 IOS 的优点 虽然这些天我是个十足的 Android 用户,但我必须承认 IOS 在某些方面做的是不错。首先,苹果公司在他们的设备更新方面有更

Android与IOS的优缺点比较 对 Android 与 IOS 比较是个个人的问题. 就好比我来说,我两个都用.我深知这两个平台的优缺点.所以,我决定分享我关于这两个移动平台的观点.另外,然后谈谈我对新的 Ubuntu 移动平台的印象和它的优势. IOS 的优点 虽然这些天我是个十足的 Android 用户,但我必须承认 IOS 在某些方面做的是不错.首先,苹果公司在他们的设备更新方面有更好的成绩.这对于运行着 iOS 的旧设备来说尤其是这样.反观 Android ,如果不是谷歌亲生的 Ne

iOS仿喜马拉雅FM做的毕业设计及总结(含新手福利源码)

其实仿喜马拉雅FM很早就开始了,从我刚接触iOS开始,就开始仿做了一部分,眼尖的人都从我的github找到了那个项目.随着找到实习iOS工作,仿写就落下了,但唯一的收获就是给过去打了一个响亮的耳光,因为刚入门没注意一些变量的命名,看着以前的view1,view2,button1,button2有一股想哭的冲动. 项目的缺陷很多,除了命名垃圾之外,还有项目框架的搭建也很垃圾,项目目录结构还算清晰,但在 Finder 中的目录结构就惨不忍睹了.如果不习惯的可以使用synx使工程目录和Finder目录

在写一个iOS应用之前必须做的7件事(附相关资源)

本文由CocoaChina--不再犹豫([email protected])翻译 作者:@NIkant Vohra 原文:7 Things you must absolutely do before writing an iOS app 这两年,我一直在编写并发布有质量的iOS 应用.我发现大多数的开发人员有直接跳进编码应用程序的核心逻辑的倾向,因为这是乐趣所在.遵循流程开发是很无聊的. 我了解到最有效的方式是,如果你提前花些时间正确设置项目,你将会为将来节省大量的时间.如果你是一位独立开发者,

iOS UI基础-14.0 DatePicker

DatePicker的主要属性: Mode:显示的内容,可以选择日期.时间的自由组合 Locale:显示的语言样式 Interval:每个选项的时间间隔 Date:当前选择的时间 Constraint:指定最小和最大时间 Timer:计时器 使用代码创建DatePicker // 1.创建DatePicker UIDatePicker *datePicker = [[UIDatePicker alloc] init]; // 2.设置模式 [datePicker setDatePickerMod

iOS 特定时间内才做某件事,有类似奇葩需求可以参考

我们项目启动的时候要弹出一个广告窗口,很简单的一个功能,服务器的判断一下满足条件,即返回数据,客户端判断数据部位NULL,则弹出弹窗但是老板说,这个要时间短弹出,每天的中午12点到下午2点不能弹出来这这这,有点坑我们吧,每天存一个key,有点坑吧仔细想想,没有必要啊,这就是考验我们对时间的操作,代码实现如下: 代码实现 #pragma mark -- 判断是否弹出广告 - (BOOL)isLoadAdvertIn { //当前时间戳 NSTimeInterval interval = [[NSD

写一个iOS应用之前需要做的事情

为工程设置编码风格规范 Objective-C: https://github.com/garfieldc/NYT-Objective-C-Style-Guide-CN https://github.com/raywenderlich/objective-c-style-guide Swift: https://github.com/raywenderlich/swift-style-guide 确定应用架构 MVC MVCS MVVM VIPER 设定应用的目录结构 项目依赖管理

iOS不使用JSONKit做Dic到JsonString的转换

NSDictionary to jsonString [self DataTOjsonString:dic] -(NSString*)DicToJsonString:(id)object { NSString *jsonString = nil; NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options:NSJSONWritingPrettyPrinted //Pass 0

带农历日历的DatePicker控件!Xamarin控件开发小记

原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePicker Mato.DatePicker 说明 这是一个带有农历日历的日期选择Xamarin控件 可以指定初始日期 多选和单选日期 引用 PCL:https://www.nuget.org/packages/Mato.DatePicker.PCL/ Android:https://www.nuget

IOS 视频分解图片、图片合成视频

在IOS视频处理中,视频分解图片和图片合成视频是IOS视频处理中经常遇到的问题,这篇博客就这两个部分对IOS视频图像的相互转换做一下分析. (1)视频分解图片 这里视频分解图片使用的是AVAssetImageGenerator,利用这个class可以很方便的实现不同时间戳下,视频帧的抓取.注意一般这种视频分解图片帧的方法都是放在子线程中的,而UI更新操作都是放在主线程中的.下面来看看核心代码: _imageGenerator = [[AVAssetImageGenerator alloc] in