我在我的应用程序中使用NSDatePicker,但我的日期选择器的日期/月份/小时/等不为零(如iCal的日期选择器)。您可以在以下两个图像的突出显示部分中看到我所说的区别。

这是iCal的日期选择器:



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



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

最佳答案

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

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

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



您可以使用以下方法调用私有方法:

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)

关于objective-c - NSDatePicker格式化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7785331/

10-12 01:49