2012-02-10 55 views
3

你好,我想在我的自定义annotationView重写的drawRect,所以当我写annotationView覆盖drawRect中,阿尔法图像

[[_mapView viewForAnnotation:annotation] setNeedsDisplay]; 

我的注解视图将被重绘,我也不会删除注释和补充它再次。

,这里是我的drawRect

- (void)drawRect:(CGRect)rect { 
    UIImage* theImage = nil; 
    if(_pinType == T_UNKNOWN) theImage = [UIImage imageNamed:@"imgU.png"]; 
    else theImage = [UIImage imageNamed:@"imgK.png"]; 
    [theImage drawInRect:rect]; 
} 

的问题是,我的图片与α和阿尔法部分为黑色。

所以也许有人知道这个解决方案或一些建议呢? 我读了很多关于这个帖子,也使用核心图形,但没有找到解决方案..

在此先感谢!

回答

3

您是否希望此视图部分透明并在其下显示内容?如果是这样,请使用[self setOpaque:NO]。不透明视图的drawRect负责以完全不透明的颜色绘制矩形中的每个像素。

+0

非常感谢!就是这样! – Lukas 2012-02-11 07:56:21

1

此功能对于iOS 5.0是正确的。当您使用iOS版本< 5.0时,您会将alpha部分设为黑色。

尝试使用另一种方法绘制图像。我不知道你使用这个代码。要尝试使用:

UIImageView *image = [[UIImageView alloc] initWithImage: theImage]; 
image.opaque = NO; 
[self.view addSubview: image]; 
+0

我已经在iOS 5的设备上测试过这个,但它仍然不起作用。你提出的initWithImage给出了相同的结果。谢谢你提供。 – Lukas 2012-02-10 12:47:02

+0

要尝试为UIImageView设置参数不透明,image.opaque = YES/NO。 – alexmorhun 2012-02-10 13:06:39

+0

@Infoq非常感谢你,这是它,但罗布纳皮尔是第一个,所以我要标记他的答案是正确的。感谢您的帮助! – Lukas 2012-02-11 07:57:30