weekdaysDatePicker 是一个带有日期、月份和年份组件以及额外的可自动调整的星期组件的拾取器视图。例如,选择 2015 年 12 月 31 日,星期行将自动滚动到周四。
推荐使用 CocoaPods 安装。将以下行添加到 Podfile 中
pod 'WeekdayDatePicker', '~> 1.1.0'
或者,只需将整个 weekdaysDatePicker 目录直接拖到您的项目中。这通过示例项目进行了演示。
在 Interface Builder 中将 UIPickerView 对象拖到视图中,并将其类设置为 BoSWeekdayDatePickerView
。
或者,您可以直接在源代码中创建它。例如
BoSWeekdayDatePickerView *weekdayDatePickerView = [[BoSWeekdayDatePickerView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 216.0f)];
在两种情况下都不忘设置最小、最大和初始选择日期,例如
#import "BoSWeekdayDatePicker.h"
(...)
NSDate *minDate = [NSDate bos_dateInCalendar:[BoSWeekdayDatePickerCalendar sharedInstance].calendar fromDay:1 month:1 year:2000];
NSDate *maxDate = [NSDate bos_dateInCalendar:[BoSWeekdayDatePickerCalendar sharedInstance].calendar fromDay:31 month:12 year:2020];
NSDate *initialSelectionDate = [NSDate bos_dateInCalendar:[BoSWeekdayDatePickerCalendar sharedInstance].calendar fromDay:8 month:8 year:2015];
[weekdayDatePickerView setupMinDate:minDate maxDate:maxDate initialSelectionDate:initialSelectionDate];
一旦安装了日期选择器,您就可以开始捕捉新行选择时发送的数据(基本上是从 pickerView:didSelectRow:inComponent:
方法)。这可以通过实现 BoSWeekdayDatePickerView
的公共块属性来完成:
@property (nonatomic, copy) void (^didSelectRowCallback)(BoSWeekdayDatePickerSelectedItems *selectedItems);
例如,选择后的回调,如上所示的 gif 所示
weekdayDatePicker.didSelectRowCallback = ^(BoSWeekdayDatePickerSelectedItems *selectedItems) {
NSLog(@"Selected row values: %@", selectedItems.arrayOfRowValues);
NSLog(@"Selected date: %@", selectedItems.selectedDate);
NSLog(@"Index of selected row: %d", selectedItems.indexOfSelectedRow);
NSLog(@"Index of selected component: %d", selectedItems.indexOfSelectedComponent);
};
将产生以下结果
Selected row values: (
Thursday,
12,
31,
2015
)
Selected date: 2015-12-31 00:00:00 +0000
Index of selected row: 30
Index of selected component: 2
日期选择器会根据设置 -> 一般 -> '区域格式' 中选择的格式调整组件顺序。例如,英国格式将导致日-月-年顺序,而美国将有月-日-年。
为了在您选择的语言中查看星期名称,请遵循添加本地化的标准程序。一个好的教程可以在 Ray Wenderlich 的页面 上找到。示例项目已启用波兰语环境。
基本的 weekdaysDatePicker 外观在 BoSWeekdayDatePickerAppearance
类中实现。我设置了 13 点 Helvetica Light 字体,用 13% 灰色着色,并为组件标签设置了任意间距和缩进。您可以自由修改或替换为自己的实现。
仅支持公历。此外,组件不“循环”。并且 weekdaysDatePicker 在具有手动内存管理的项目中泄漏,因此必须使用 ARC。
MIT