NSDatePicker格式化程序

时间:2011-10-16 15:37:03

标签: objective-c macos cocoa

我在我的应用程序中使用NSDatePicker,但我的日期选择器在日期/月/小时/等方面没有零作为iCal的日期选择器。你可以看到我在下面两张图片中突出显示的部分所说的差异。

这是iCal的日期选择器:

iCal date picker

这是我应用的日期选择器:

app date picker

请您告诉我如何使用像iCal这样的格式化程序?

2 个答案:

答案 0 :(得分:0)

使用NSDatePicker实例方法setDatePickerStyle:

- (void)setDatePickerStyle:(NSDatePickerStyle)newStyle

答案 1 :(得分:0)

Apple在NSDatePicker上使用私有方法来强制显示前导零,而与语言环境无关。您也可以这样做,尽管它可能无法在Mac App Store中清除评论。

是的,您可以强制使用始终显示两位数日期字段的语言环境,但是某些用户会看到错误的字段顺序或其语言环境的分隔符。

对于Calendar.app / iCal,我们可以在Hopper中查看CalendarUI.framework,看看它们在哪里调用私有方法_setForcesLeadingZeros:

screenshot

您可以使用…

调用私有方法
let sel = Selector(("_setForcesLeadingZeroes:"))
let imp = class_getMethodImplementation(NSDatePicker.self, sel)
let impClosure = unsafeBitCast(
    imp,
    to: (@convention(c)(Any?, Selector?, Bool) -> Void).self)
impClosure(datePicker, sel, true)