似乎很难改变 a 的UIDatePicker
出现方式。
在我看来,您提供的示例是对UIPickerView
具有两列的简单控件的复杂自定义,并且可能是模拟的无限滚动(就像 Apple 在日期选择器中所做的那样,实现起来非常简单)。
UIDatePicker
您可以通过代理更改很少的内容UIAppearance
,如下例所示:
UIDatePicker *picker = [UIDatePicker appearance];
picker.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.3];
UIView *view;
view = [UIView appearanceWhenContainedIn:[UITableView class], [UIDatePicker class], nil];
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
UILabel *label = [UILabel appearanceWhenContainedIn:[UITableView class], [UIDatePicker class], nil];
label.font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
label.textColor = [UIColor blueColor];
在应用程序开始时使用这段代码(试一试),您可以只更改日期选择器的几个主要组件的外观。
标签无法自定义(此测试代码证明了这一点);显然,每次旋转列时它们的外观都会发生变化,因为它们被放置在自定义UITableView
控制器中。
要完全改变这些外观,您可能应该使用 Apple 的私有 API,这最终会导致您的应用程序被拒绝。
如果您只需要一个自定义小时-分钟选择器(如屏幕截图所示),则只需扩展类或为实例UIPickerView
分配适当的委托即可实现外观的完全自定义。UIPickerView
通过
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;
委托上的方法,您可以使选择器视图的单个元素以您想要的方式显示。然后,您将必须适当地处理数据源,以使选择器的两个组件实际上是无限的。