0

现在,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);
}

我该怎么说清楚?

4

2 回答 2

0

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.

希望这可以帮助!

于 2014-01-11T19:38:41.710 回答
0

正如它在GitHub页面上所说:

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

  • 车轮背景.png
  • 可拉伸玻璃.png
  • shadowOverlay.png
于 2013-10-13T05:14:27.450 回答