使用UIAppearance自定义iOS UIDatepicker

dai*_*dai 9 iphone uidatepicker ios ios5 uiappearance

优衣库的新报警应用程序有一个自定义UIDatePicker:

习惯

我想创建自己的自定义UIDatePicker.

我试图改变DatePicker的外观,但UI_APPEARANCE_SELECTORUIDatePicker返回时没有找到.

这意味着它不可能根据文档更改任何值:

为了支持外观定制,类必须符合UIAppearanceContainer协议和相关的访问方法必须注明UI_APPEARANCE_SELECTOR.

怎么能改变我UIDatePicker的外表?

Kul*_*eep 26

API没有提供执行此操作的方法.您可以使用UIPickerView而不是使用UIDatePicker自己创建一个非常令人信服的副本.

由于UIDatePicker或UIPickerView没有UI_APPEARANCE_SELECTOR,甚至你不能将UIDatePicker内容的外观更改为其UIControl而没有任何委托因此它具有其原生外观,而在UIPickerView的情况下,您可以更改其内容的外观类似于在UITableView中.

#pragma mark -
#pragma mark UIPicker Delegate & DataSource

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 2;
}

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return 100;
}
//- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:  (NSInteger)component {
     //    return [NSString stringWithFormat:@"%d",row];
//}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

      UILabel *label= [[[UILabel alloc] initWithFrame:CGRectMake(30.0, 0.0, 50.0, 50.0)] autorelease];
      [label setBackgroundColor:[UIColor clearColor]];
      [label setTextColor:[UIColor blueColor]];
      [label setFont:[UIFont boldSystemFontOfSize:40.0]];
      [label setText:[NSString stringWithFormat:@"%d",row]];

      return label;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

看一下这个.