当前位置:  开发笔记 > IOS > 正文

更改UIPickerView背景

如何解决《更改UIPickerView背景》经验,为你挑选了4个好方法。

我想更改UIPickerView的边框颜色.我没有看到UIPickerView的色调属性.有什么办法可以做到吗?还是一个解决方法?

谢谢.



1> Lukas..:

您还可以屏蔽组件.有点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 


在XCode 4+中,你需要框架:[mask setFrame:CGRectMake(10.0f,10.0f,260.0f,196.0f)] ;,但是非常有用,并且不需要使用图像叠加.

2> Ed Marty..:

如果你只想要一个解决方法,在模拟器中拍摄一个屏幕截图,在photoshop中打开它,将其裁剪到UIPickerView区域,使中心透明,应用你想要的任何色调,将该图像添加到项目中,并将其添加为UIPmageView顶部的UIImageView.


@anka你提供的链接不起作用

3> adam..:

我的UIPickerView有3个组件.没有选择指标.

这给了它11个子视图. [[picker subviews] count]

隐藏第一个和最后一个子视图完全删除了背景.

[(UIView*)[[picker subviews] objectAtIndex:0] setHidden:YES];
[(UIView*)[[picker subviews] objectAtIndex:10] setHidden:YES];

隐藏每三个其他子视图(索引1,4和7)会隐藏组件上的不透明背景.给我一个很好的效果,我可以按照我的意愿去皮肤.

希望有人帮助:)


选择器在完全加载之前不会有子视图.如果您尝试在viewDidLoad或viewWillAppear中执行此操作,它将无法正常工作.但是,我将我的一个UIPickerView协议方法移动到了它.-(NSString*)pickerView:(UIPickerView*)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {.

4> Matt Hudson..:

选择器在完全加载之前不会有子视图.如果您尝试这样做:

[(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];
}

您可以将选择器子类化为更有效地执行此操作,但我更愿意避免子类化.

哦,这也许是显而易见的,但是如果您的选择器中没有任何项目,则上面的代码不会删除子视图.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有