2015-01-02 19 views
7

Arayüz Oluşturucuda işlendiğinde saydam bir arka plana sahip olabilecek bir IBDesignable sınıfı oluşturmaya çalışıyorum. Şimdiye kadar, opak siyah arka planlar aldım. Sorunun basit bir tanıtımını hazırladım:Temizle IBDesignable görünümler siyah arka plana sahip

Bu sahneye UIView'i Interface Builder'da yerleştirdim. Bunu göremezsiniz çünkü arka planı açıktır. Bu sahnesinin gibi görünmesi gereken manzaradır.

A screenshot of an empty scene in interface builder

bu ekran görüntüsünde tek fark ben 'DesignableView' olmak bizim önceden görünmez bakış sınıfını kurdum olmasıdır.

#import <UIKit/UIKit.h> 

IB_DESIGNABLE 
@interface DesignableView : UIView 
@end 

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

IBDesignable doğru, şeffaf bir arka plan görüntülemek vermek için bir yol var mı:

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

İşte DesignableView sınıfının tüm uygulamasıdır?

+0

geçersiz kılmak gerekir:' senin de yorum gerekir; performansı etkiler. Bu da – Chris

+0

numaralı konu olabilir. "DrawRect:" in boş bir uygulamasının olması doğru bir fikirdir, ancak bu nokta bu konuyla ilgili değildir. Bu örnekte, "drawRect:" işlevi boştur, çünkü IB'de siyah bir arka plan oluşturma sorununu yeniden üretmenin en basit yolu budur. – BradB

cevap

10

Bunu nasıl düzelttiğimi hatırlıyorum. Sen `drawRect kullanmıyorsanız layoutSubviews

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

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

Teşekkürler Chris! Bu harika çalışıyor. Bu hilenin de 'self.backgroundColor' ayarlaması çağrısının 'prepareForInterfaceBuilder' işlevinde yapıldığında, tercih edilen bir yer olabileceğini öğrendim. – BradB