2013-06-18 6 views
7

私は次の関数を使用してビューにシンプルな長方形を描きたい:矩形が透明でない外UIBezierPathシンプルな長方形

- (void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
    if (self.drawTextBouble) { 
     [[UIColor blueColor] setFill]; 
     UIBezierPath *aPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(40, 0, 230, 120) cornerRadius:12.0]; 
     [aPath fill]; 
    } 
} 

上記のコードは、無地の黒の背景を持つビューを埋めます。これをどうすれば解決できますか?

編集:以下のソリューションが動作しているが、これにも取り組んでいる

:あなたは、コードを描画

[self setOpaque:NO]; 
+0

これは、私が考えていたよりも良い例です。既存の、誤りのあるコード、問題の説明、および望ましい結果があります。私が答えを知らないのは残念です! –

+2

あなたのコードで問題を再現できませんでしたが、 '[super drawRect:rect]'を呼び出さないでください。http://stackoverflow.com/questions/14074281/subclassed-uiview-shows-black-background-if -drawrect-is-overridden。 –

+0

コメントありがとうございました:)私は試しましたが、同じように動作します。 – flatronka

答えて

9

はOKです。カスタム描かれたビューは、透明な背景を持っているしたい場合は、単にビューの- (id)initWithFrame:(CGRect)frame

編集に

self.backgroundColor = [UIColor clearColor]; 

を設定する必要があります。[super drawRect:rect]を呼び出すことについてほんの少し注意を。 UIViewドキュメントは言う:

あなたが直接UIViewをサブクラス化する場合は、このメソッドの実装は、スーパーを呼び出す必要はありません。しかし、別のビュークラスをサブクラス化する場合は、実装のある時点でsuperを呼び出す必要があります。

+0

これは動作してくれてありがとう、私はまた働いている別の解決策を見つけました。 – flatronka