DateRangePicker - 最佳(?)的适用于OS X的日期范围选择器控件
为Timing(Mac自动时间/生产力跟踪应用)开发和使用。
用法
只需将日期范围选择器拖放到您的Storyboard或Nib中。当segmentStyle设置为.Separated时,它在工具栏中看起来特别漂亮。如果您希望将选择器居中在工具栏中,我可以推荐使用TAAdaptiveSpaceItem。
您可以通过观察startDate和endDate的更改以及为DateRangePickerView控件设置目标并执行动作来监视日期范围的变化。
功能
- 非常适合在工具栏中使用,但也可以在任何其他位置使用
- 日期范围预设:“过去7/15/30/90/365天”,“今天/昨天/本周/这个月/本季度/本年”
- pleasantly显示这些预设以及之前/之后的月份(例如“2015年十月”)
- “返回”和“前进”按钮可以让您根据当前持续时间移动日期范围,例如早/晚7天,上个月/下一个月/本周/本季度/本年
- 即通过月份按月递增数据,而不是简单的30天间隔
- 在弹出窗口中选择完全定制的日期范围(也可以仅使用弹出来使用)
- 允许你指定不能超过的最小和最大日期
- 这将在界面中体现——当日期范围达到最小/最大值时,“后退”/“前进”按钮会被禁用
- 提供了一种复杂的、可序列化的日期范围结构(作为Swift枚举实现),以便你可以在应用启动之间保持其持久性
- 为NSDate扩展提供了有用的日期计算函数
- 可以从Objective-C中使用
- 公开了兼容KVO/KVC的startDate和endDate属性
- 日期范围的变化也通过NSControl的目标动作模式发送
- 公开了-dateRangeAsData和-loadDateRangeFromData:方法,这些方法允许你在Objective-C中持久化日期范围
- NSDate扩展也从NSDate可用
- 可自定义的分段控件样式
- 本地化:英语、德语(欢迎添加其他语言!)
- 代码质量高
- 遵循Cocoa "最佳实践" (如果您发现任何反模式,请告知)
- 日期范围结构和日期计算的全面测试覆盖
- 与Interface Builder兼容(@IBDesignable)
- 小巧且自包含
缺少什么
- 当前无法自定义日期预设(但你可以轻松在ExpandedDateRangePickerController中替换它们)
- “上个月/周/季度/年”和“下个月/周/季度/年”的日期预设目前不可用(但可以轻松添加,您也可以通过选择“这个周/月/季度/年”然后按“后退”/“前进”来访问它们)
- 发现其他内容?提交一个pull request或联系我吧:-)
兼容性
需要(并且已在OS X 10.9或更高版本上测试过)。在OS X 10.10的工具栏上看起来更好;-)
关于旧NIB的注意事项
如果你的NIB使用旧的frameWithInititation:初始化方法或在使用OS X 10.9时被压缩,则在NSToolbar中的自定义视图会有一个错误。这导致日期范围选择器的大小无法正确初始化。为了避免这种情况,我建议以下步骤:
- 创建一个空的具有所需大小的自定义视图的示例NSToolbarItem,并添加一个IBOutlet来使用该NSToolbarItem
- 将选择器作为独立视图添加到NIB中,并添加一个IBOutlet来使用该选择器
- 在-awakeFromNib中,以编程方式设置工具栏项的视图为选择器
许可
此库在下列ISC许可证下提供,这是两段式的伯克利软件许可协议的一个简化版本。
如果你使用了这个库,请在Twitter上告知我 @daniel_a_a。我还有一个 博客。