2012-02-10 12 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

1

この機能は、iOS 5.0では正常に動作します。 iOSバージョン< 5.0を使用すると、アルファ部分が黒くなります。

イメージを描画する別の方法を試してみてください。私はあなたがこのコードを使用するかどうかわかりません。試してみる:

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

iOS 5搭載のデバイスでこれをテストしましたが、まだ動作しません。提案したinitWithImageは同じ結果を返します。あなたが提供してくれてありがとう。 – Lukas

+0

UIImageViewに対してパラメータopaqueを設定しようとすると、image.opaque = YES/NOになります。 – alexmorhun

+0

@Infoqこんにちは、ありがとう、これはそれでしたが、Rob Napierが最初でしたので、私は彼の答えを正しいものとしてマークします。お手伝いありがとうございます! – Lukas

関連する問題