2016-04-20 4 views
-1

カスタムUILabelクラスを作成し、デフォルトの背景色を設定しました。 ここに私のカスタムクラスの.hと.mファイルがあります。Objective c/iOS:viewControllerでカスタムクラスのlayoutSubviewsをオーバーライドする方法

#import <UIKit/UIKit.h> 

@interface imLabel : UILabel 

@end 

#import "imLabel.h" 

@implementation imLabel 

- (void)drawRect:(CGRect)rect { 
} 

- (void) layoutSubviews { 

self.backgroundColor = [UIColor redColor]; 

} 

@end 

それが正常に動作しますが、ここで私は必要なものです:私はこの仕事をしたいのbackgroundColorがのViewControllerに設定されていない場合のみ。ここで

は、あなたが設定したラベルのbackgroundColorのかどうかのViewControllerに制御するので、私が思うあなたのニーズを満たすために最善の方法は、その後、ラベルはbackgroundColorの設定またはしていなかったかどうかをチェックしていない私のviewDidLoad

- (void)viewDidLoad { 
    [super viewDidLoad]; 

label = [[imLabel alloc] initWithFrame:CGRectMake(50, 50, 300, 300)]; 
label.backgroundColor = [UIColor blueColor]; 

[self.view addSubview:label]; 
} 
+0

は私がimLabelから 'Category'クラスを作成し、メソッド – byJeevan

+0

を呼び出しますiOSの新機能カテゴリクラスを呼び出す方法を教えてください。 –

答えて

0

ですそれを設定します。

/* Somewhere in your ViewController */ 
if (!self.label.backgroundColor) { 
    self.label.backgroundColor = [UIColor redColor]; 
} 
+0

私はこれの逆も必要です。私は私のViewControllerの私のカスタムクラスで設定されているデフォルトのbackgroundColorをオーバーライドしたい –

+0

私の質問を私の質問をより明確にするために私のviewDidLoadコードで更新しました。 –

+0

ViewControllerの私のカスタムクラスで設定されているデフォルトのbackgroundColorをオーバーライドしますか? ViewControllerでターゲットカラーに直接設定してみませんか?それでは、オーバーライドする必要はありません。 –

0

そして、imLabel.mで他のすべてのコードを削除します: - @Meiliang東へ

(instancetype)initWithFrame:(CGRect)aRect { self = [super initWithFrame:aRect]; if (self) { self.backgroundColor = [UIColor redColor]; } return self;} 

おかげ

関連する問題