UIDatePicker将时间绘制为另一种颜色

时间:2012-11-15 00:07:30

标签: iphone objective-c ios uidatepicker

我有UIDatePicker,我想在UIDatePicker中绘制时间,例如灰色

我需要这个,如果在我的图形中画了一些间隔,那么在datePicker用户无法选择这个时间

enter image description here

2 个答案:

答案 0 :(得分:0)

很抱歉告诉您,但UIDatePicker不支持设置您所描述的有效时间范围。唯一的选择是最短和最长日期。如果你真的需要这个,你需要从头开始构建一个自定义控件,这需要花费很多精力。

答案 1 :(得分:0)

我想我找到了解决办法,我可以抽出时间换另一种颜色

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            for (UIView *subSubView in subView.subviews) {
                for (UIView *thirdSubView in subSubView.subviews) {
                    for (UILabel *label in thirdSubView.subviews) {
                        if ([label isKindOfClass:[UILabel class]]) {
                            label.textColor = [UIColor redColor];
                        }
                    }
                }
            }
        }
    }

enter image description here

我需要在滚动DatePicker时捕获事件,我这样做,这项工作,但我打破了滚动

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            Class UIPickerTableView = objc_getClass("UIPickerTableView");

            if ([subView isKindOfClass:UIPickerTableView]) {
                UITableView *sub = (UITableView *) subView;
                sub.delegate = self;
            }
            for (UIView *subSubView in subView.subviews) {

enter image description here

我尝试了另一种方式,但它不起作用

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            Class UIPickerTableView = objc_getClass("UIPickerTableView");

            Method targetMethod = class_getInstanceMethod(UIPickerTableView, @selector(scrollViewDidScroll:));
            Method newMethod = class_getInstanceMethod(UIPickerTableView, @selector(__scrollViewDidScroll:));
            method_exchangeImplementations(targetMethod, newMethod);

            for (UIView *subSubView in subView.subviews) {