7

次の関数を使用して、単純な長方形をビューに描画したいだけです。

- (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];
4

1 に答える 1

9

あなたの描画コードはOKです。カスタム描画ビューの背景を透明にしたい場合は、設定するだけです

self.backgroundColor = [UIColor clearColor];

ビューの- (id)initWithFrame:(CGRect)frame

編集: の呼び出しに関するちょっとしたメモ[super drawRect:rect]UIViewドキュメント 言います:

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

于 2013-06-18T07:18:15.203 に答える