我想更改UIPickerView的边框颜色.我没有看到UIPickerView的色调属性.有什么办法可以做到吗?还是一个解决方法?
谢谢.
您还可以屏蔽组件.有点fiddeling你可以获得组件的大小,并使用以下代码将其删除:
CALayer* mask = [[CALayer alloc] init]; [mask setBackgroundColor: [UIColor blackColor].CGColor]; [mask setFrame: CGRectMake(10.0f, 10.0f, 260.0f, 196.0f)]; [mask setCornerRadius: 5.0f]; [picker.layer setMask: mask]; [mask release];
别忘了
#import
如果你只想要一个解决方法,在模拟器中拍摄一个屏幕截图,在photoshop中打开它,将其裁剪到UIPickerView区域,使中心透明,应用你想要的任何色调,将该图像添加到项目中,并将其添加为UIPmageView顶部的UIImageView.
我的UIPickerView有3个组件.没有选择指标.
这给了它11个子视图. [[picker subviews] count]
隐藏第一个和最后一个子视图完全删除了背景.
[(UIView*)[[picker subviews] objectAtIndex:0] setHidden:YES]; [(UIView*)[[picker subviews] objectAtIndex:10] setHidden:YES];
隐藏每三个其他子视图(索引1,4和7)会隐藏组件上的不透明背景.给我一个很好的效果,我可以按照我的意愿去皮肤.
希望有人帮助:)
选择器在完全加载之前不会有子视图.如果您尝试这样做:
[(UIView*)[[picker subviews] objectAtIndex:0] setHidden:YES]; [(UIView*)[[picker subviews] objectAtIndex:10] setHidden:YES];
在viewDidLoad或viewWillAppear中它将无法正常工作.但是,我将我的一个UIPickerView协议方法移动了,并删除了背景框架.
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (self.pickerBackgroundNotHidden) { self.pickerBackgroundNotHidden = false; [(UIView*)[[tempPicker subviews] objectAtIndex:0] setHidden:YES]; [(UIView*)[[tempPicker subviews] objectAtIndex:7] setHidden:YES]; [(UIView*)[[tempPicker subviews] objectAtIndex:8] setHidden:YES]; } return [arrayColors objectAtIndex:row]; }
您可以将选择器子类化为更有效地执行此操作,但我更愿意避免子类化.
哦,这也许是显而易见的,但是如果您的选择器中没有任何项目,则上面的代码不会删除子视图.