THCalendarDatePicker
此控件基于 datepicker-ios 控件和 KNSemiModalViewController 结合。
原始控制器不清楚方向变化,并且缺少我项目所需的某些自定义功能,因此我决定修改部分控制器以满足我自己的需求
截图
安装
CocoaPods
使用 CocoaPods 安装 CocoaPods,请将以下内容添加到 Podfile 中
Objective-C
platform :ios, '8.0'
pod 'THCalendarDatePicker', '~> 1.2.9'
Swift
platform :ios, '8.0'
use_frameworks!
pod 'THCalendarDatePicker', '~> 1.2.9'
注意:我们遵循 http://semver.org 规范来对公共API进行版本控制。
手动
或者将此仓库中的 THCalendarDatePicker/
目录复制到您的项目中。由于它使用 KNSemiModalViewController 作为依赖项,您需要添加并连接这些文件。
用法
以下是从 ExampleProject 中获得的示例初始化代码。
- (IBAction)touchedButton:(id)sender {
if(!self.datePicker)
self.datePicker = [THDatePickerViewController datePicker];
self.datePicker.date = self.curDate;
self.datePicker.delegate = self;
[self.datePicker setAllowClearDate:NO];
[self.datePicker setClearAsToday:YES];
[self.datePicker setAutoCloseOnSelectDate:YES];
[self.datePicker setAllowSelectionOfSelectedDate:YES];
[self.datePicker setDisableHistorySelection:YES];
[self.datePicker setDisableFutureSelection:NO];
[self.datePicker setSelectedBackgroundColor:[UIColor colorWithRed:125/255.0 green:208/255.0 blue:0/255.0 alpha:1.0]];
[self.datePicker setCurrentDateColor:[UIColor colorWithRed:242/255.0 green:121/255.0 blue:53/255.0 alpha:1.0]];
[self.datePicker setDateHasItemsCallback:^BOOL(NSDate *date) {
int tmp = (arc4random() % 30)+1;
if(tmp % 5 == 0)
return YES;
return NO;
}];
//[self.datePicker slideUpInView:self.view withModalColor:[UIColor lightGrayColor]];
[self presentSemiViewController:self.datePicker withOptions:@{
KNSemiModalOptionKeys.pushParentBack : @(NO),
KNSemiModalOptionKeys.animationDuration : @(1.0),
KNSemiModalOptionKeys.shadowOpacity : @(0.3),
}];
}
或者如何在 Swift 中实现
lazy var datePicker:THDatePickerViewController = {
var dp = THDatePickerViewController.datePicker()
dp.delegate = self
dp.setAllowClearDate(false)
dp.setClearAsToday(true)
dp.setAutoCloseOnSelectDate(false)
dp.setAllowSelectionOfSelectedDate(true)
dp.setDisableHistorySelection(true)
dp.setDisableFutureSelection(false)
//dp.autoCloseCancelDelay = 5.0
dp.selectedBackgroundColor = UIColor(red: 125/255.0, green: 208/255.0, blue: 0/255.0, alpha: 1.0)
dp.currentDateColor = UIColor(red: 242/255.0, green: 121/255.0, blue: 53/255.0, alpha: 1.0)
dp.currentDateColorSelected = UIColor.yellowColor()
return dp
}()
@IBAction func dateButtonTouched(sender: AnyObject) {
datePicker.date = curDate
datePicker.setDateHasItemsCallback({(date:NSDate!) -> Bool in
let tmp = (arc4random() % 30) + 1
return tmp % 5 == 0
})
presentSemiViewController(datePicker, withOptions: [
KNSemiModalOptionKeys.pushParentBack : NSNumber(bool: false),
KNSemiModalOptionKeys.animationDuration : NSNumber(float: 1.0),
KNSemiModalOptionKeys.shadowOpacity : NSNumber(float: 0.3)
])
}
特性
V1.2.X
V1.1.X
V1.0.X
- 修复了问题 #23
- 修复了问题 #22
- 拉取请求 #21,#20
- 修复了问题 #18,#17,#16,#15
- 拉取请求 #13
- 删除了iOS8弃用警告
- 修复了问题 #12,#11,#7,#5
- 修复了bug(现在它会采用该地区默认的起始日,而不是自定义设置“周起始日”)
- 可配置是否显示未来条目
- 从日历中选择一个日期
- 了解第一个星期的设置
- 可配置颜色
- 可配置是否允许清除选择
- 可配置是否在选择后关闭
未来
- 如果“hasItemCallback”未使用/禁用,则减小控件的大小
贡献
...非常欢迎。
我已经不再在我的项目中使用此组件,所以我可用于维护的时间真的很有限。
如果您有想法,请fork库,修改它,如果它对其他人有用且不影响其他用户的功能,我会将其插入
贡献者
许可协议
本项目的源代码在标准MIT许可下可用。请参阅许可文件。