我有一张用UIImageView显示的png格式的黑白图片。这是一个没有把手的钟形。所以背景是白色的 - 圆圈是黑色的。 然后我想画几小时和几分钟的手柄,我正在努力做到这一点,虽然我不远,我不能让它工作......
当我画出手柄时,我最终得到了一个大的黑色方块(所以我无法通过它看到我背后的png),至少我看到了我的2个手柄(蓝色是我想要的)。我想我的目标是让那个大的黑色方块变成白色/透明,所以它应该有效......
我的代码如下:
- (void)drawRect:(CGRect)rect
{
......
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
[self drawLineForContext:context Width:10.0 angle:hAlpha length:self.frame.size.width/2.0 - 40];
[self drawLineForContext:context Width:5.0 angle:mAlpha length:self.frame.size.width/2.0 - 12];
}
你认为我错过了什么?
有关信息,要设置图像,我只是这样做,我想这是正确的,因为它有效...
UIImage *image = [UIImage imageNamed: [md objectForKey:Q_DIRECTION_PIC]];
[ivDirectionPic setImage: image];
ivDirectionPic.backgroundColor=[UIColor clearColor];
ivDirectionPic.contentMode = UIViewContentModeScaleAspectFit;
感谢您的帮助!
干杯, geebee
EDIT1:我添加了UIColor clearColor但它仍然是相同的......我不明白你对如何添加另一个具有相同框架的子类的评论:请问怎么样?在哪里?
我还添加了您要求我发布的额外功能:
- (void) drawLineForContext:(const CGContextRef)context Width:(float)_width angle:(double)_angle length:(double)radius
{
CGPoint c = CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0);
CGContextSetLineWidth(context, _width);
CGContextMoveToPoint(context, self.center.x, self.center.y);
CGPoint addLines[] =
{
CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0),
CGPointMake(radius*cos(_angle) +c.x, radius*sin(_angle) +c.y),
};
CGContextAddLines(context, addLines, sizeof(addLines)/sizeof(addLines[0]));
CGContextStrokePath(context);
}
答案 0 :(得分:0)
您的UIImageView
需要将backgroundColor
设置为[UIColor clearColor]
。
如果这不起作用,只需在图像视图顶部添加另一个UIView
的子类,并使用相同的框架。
您的错误的另一个来源可能是您未发布任何代码的drawLineForContext
方法。