我将如何更改 CPPickerView(一个简单的 UIPickerView 替换)以使用清晰的背景而不是图像?

Posted

技术标签:

【中文标题】我将如何更改 CPPickerView(一个简单的 UIPickerView 替换)以使用清晰的背景而不是图像?【英文标题】:How would I go about changing CPPickerView (a simple UIPickerView replacement) to use a clear background instead of an image? 【发布时间】:2013-10-12 20:53:58 【问题描述】:

现在,CPPickerView 使用图像作为背景,如它的 drawRect 方法所示:

- (void)drawRect:(CGRect)rect 
    // Draw background
    [self.backgroundImage drawInRect:self.bounds];

    // Draw super/UIScrollView
    [super drawRect:rect];

    // Draw shadow
    [self.shadowImage drawInRect:self.bounds];

    // Draw glass
    if (self.showGlass) 
        [self.glassImage drawInRect:CGRectMake(self.frame.size.width / 2 - 30, 0.0, 60, self.frame.size.height)];
    

我希望我的 CPPickerView 与它背后的视图具有相同的颜色,但我似乎无法弄清楚如何做到这一点。我在drawRect中尝试了以下代码无济于事(它只会在背景中产生白色条纹):

- (void)drawRect:(CGRect)rect 
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);
    CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextSetLineWidth(context, 5.0);
    CGContextMoveToPoint(context, 100.0,0.0);
    CGContextAddLineToPoint(context,100.0, 100.0);
    CGContextStrokePath(context);

我该如何说清楚?

【问题讨论】:

【参考方案1】:

正如GitHub 页面上所说:

要自定义外观,请将以下图片替换为您自己的:

wheelBackground.png stretchableGlass.png shadowOverlay.png

【讨论】:

【参考方案2】:

这里是 CPPickerView 的创建者 - 问题是您一直使用的 CPPickerView 版本无法不绘制这些图像。如果您只是将图像排除在我们的项目之外,我相信它也会为它们绘制一个黑框,这显然不是您想要的。

要解决这个问题,您可以为 wheelBackground.pngshadowOverlay.png 创建清晰的图像并关闭玻璃 (picker.showGlass = NO)。

不过,我也刚刚将 CPPickerView 更新到了 1.1.0 版。此更新将backgroundImageglassImageshadowImage 公开为公共属性,因此在创建CPPickerView 后,您可以简单地将它们设置为nil,并且根本不会绘制图像:

CPPickerView *picker = [[CPPickerView alloc] initWithFrame:yourFrame];
picker.backgroundImage = nil;
picker.shadowImage = nil;
picker.glassImage = nil;

默认情况下,CPPickerView 仍会查找命名图像(为了向后兼容),因此如果您不想绘制它们,则需要明确将它们设置为 nil

希望这会有所帮助!

【讨论】:

以上是关于我将如何更改 CPPickerView(一个简单的 UIPickerView 替换)以使用清晰的背景而不是图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用简单的字符串更改自定义 Info.plist 键

如何在 OpenGL/Glut 中更改鼠标光标的位置?

我将如何更改我的程序,以便在方法正确后计时器停止

如何更改数据库文件的路径?

如何更改 Mac OS 窗口左侧的默认图标?

我将如何更改此静态数组以从 xCode 中的此 plist 中提取?