2015-01-02 38 views
7

Interface Builderでレンダリングしたときに透明な背景を持つことができるIBDesignableクラスを作成しようとしています。今のところ、私は不透明な黒の背景を持っています。私は問題の簡単なデモンストレーションを設定しました:IBDesignableビューの背景が黒くなっています

私はInterface BuilderでこのシーンにUIViewを配置しました。その背景がはっきりしているので見えません。これはシーンのようにする必要があります。

A screenshot of an empty scene in interface builder

このスクリーンショットの唯一の違いは、私が「DesignableView」であると私たちの前に目に見えないビューのクラスを設定したということです。ここで

A screen shot of an Interface Builder scene with a black box in the middle

DesignableViewクラスの全体の実装です:

#import <UIKit/UIKit.h> 

IB_DESIGNABLE 
@interface DesignableView : UIView 
@end 

@implementation DesignableView 
- (void)drawRect:(CGRect)rect { 
    //rendering code goes here 
} 
@end 

は正しい、透明な背景を表示IBDesignableを与える方法はありますか?

+0

あなたが 'drawRect:'を使用していない場合は、コメントアウトする必要があります。パフォーマンスに影響します。それはまた問題かもしれません – Chris

+0

'drawRect:'の空の実装を持っているのは間違いですが、その点はこの質問には関係ありません。この例では、 'drawRect:'関数は空白です。これは、IBで黒い背景を持つ問題を再現する最も簡単な方法であるためです。 – BradB

答えて

10

私はこれをどのように修正したかを思い出しました。あなたは無効にする必要があります。layoutSubviews

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    self.backgroundColor = [UIColor clearColor]; 
} 
+2

ありがとう、クリス!これは素晴らしいです。私は、このトリックは 'self.backgroundColor'を設定する呼び出しが' prepareForInterfaceBuilder'関数で行われたときにもうまくいくことを発見しました。これは望ましい場所かもしれません。 – BradB

関連する問題