我有一个要求UIPickerView应该被定制的要求。选择器视图应如下所示:
alt text http://i45.tinypic.com/2ut565s.png
同样定制pickerView的应用程序是: http://itunes.apple.com/us/app/convert-the-unit-calculator/id325758140?mt=8
我尝试通过重置UIImagePicker的属性showsSelectionIndicator
并添加叠加视图来删除默认的pickerView选择栏。但问题是,叠加视图应该是透明的,以便它后面的轮子可见。但是,即使选择栏不透明,其他应用程序也会以某种方式执行此操作。
关于如何实现这一壮举的任何想法?
谢谢和问候, 拉吉
答案 0 :(得分:2)
这是关于自定义UIPickerView的非常好的文章 http://www.inexika.com/blog/Customizing-UIPickerView-UIDatePicker
答案 1 :(得分:1)
你将不得不从头开始写这个。 UIPickerview无法自定义。在。所有。很糟糕,但就是这样。我开始创建一个uitableview并在其周围分层框架,并试图模仿uipickerview。
答案 2 :(得分:1)
我认为您可以在选择器下打印子视图并进行修改。 首次加载数据后,UIPickerView会创建子视图。 使用performSelecter:WithObject:afterDelay:,您可以删除它们或插入您需要的任何内容。
- (void)viewDidLoad
{
[super viewDidLoad];
[self refreshClock];
[timePicker_ performSelector:@selector(leakSelf) withObject:nil afterDelay:0];
[self performSelector:@selector(setupTimePicker) withObject:nil afterDelay:0];
}
- (void)setupTimePicker {
[[timePicker_ subviewOfClass:NSClassFromString(@"_UIPickerViewTopFrame")] removeFromSuperview];
CGRect frame = timePicker_.frame;
frame.size.width += 20;
frame.origin.x -= 10;
timePicker_.frame = frame;
}
@implementation UIView(UIViewDebugTool)
- (void)leakSubview:(UIView*)subroot atDepth:(NSUInteger)dep {
DLog( @"trace sub view[%u] %@", dep, [subroot description] );
CALayer* layer = subroot.layer;
for( CALayer* l in layer.sublayers ) {
DLog( @"layer[%u] %@", dep, l );
}
for( UIView* v in subroot.subviews ) {
[self leakSubview:v atDepth:dep+1];
}
}
- (void)leakSelf {
NSUInteger dep = 0;
[self leakSubview: self atDepth:dep];
}
@end