2012-02-07 4 views
0

サブクラス化は初めてですが、ラベル内のテキストに3ピクセルのアウトラインを付けるために、UILabelサブクラスを使用したかったのです。 this pageから、私はこの方法を使用:iOS - サブクラスの新しいプロパティへのアクセス

- (void)drawTextInRect:(CGRect)rect 
{  
    CGSize shadowOffset = self.shadowOffset; 
    UIColor *textColor = self.textColor;  

    CGContextRef c = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(c, 3); 
    CGContextSetLineJoin(c, kCGLineJoinRound);  
    CGContextSetTextDrawingMode(c, kCGTextStroke); 
    self.textColor = [UIColor whiteColor]; 
    [super drawTextInRect:rect];  

    CGContextSetTextDrawingMode(c, kCGTextFill); 
    self.textColor = textColor; 

    self.shadowOffset = CGSizeMake(0, 0); 
    [super drawTextInRect:rect]; self.shadowOffset = shadowOffset; 
} 

これは素晴らしい作品、と私は、テキストとアウトラインの両方のためにたい任意の色を表示する色を変更することができます。

「outlineColor」という名前のプロパティを作成する方法を教えてもらえますか。私はこのサブクラスを任意のラベルに設定し、アウトラインの色を変更できますか?私はどのようにわからない

[myLabel setOutlineColor:[UIColor whiteColor]]; 

基本的に、私は「CustomLabelClass」とし、他のいくつかのクラスの中に、私は何かのように言いたいし、ラベルのクラスを設定できるようにしたいのですがこれについて行く。ありがとう。

答えて

1

私は自分のコードで同じことをしました。私はUILabelのサブクラスを作成して、境界線の色と境界線の幅を設定しました。

JKBorderedLabel.h

@interface JKBorderedLabel : UILabel 

@property (nonatomic, retain) UIColor *borderColor; 
@property (nonatomic) NSInteger borderWidth; 

@end 

JKBorderedLabel.m

​​

そして使用する:

JKBorderedLabel *myLabel = [[JKBorderedLabel alloc] init]; 

myLabel.text = @"Hello World"; 
myLabel.textColor = [UIColor whiteColor]; 
myLabel.borderColor = [UIColor blueColor]; 
myLabel.borderWidth = 4; 
[myLabel sizeToFit]; 
+0

ありがとう!私はこれに似たものを試してみたと思っていましたが、他のクラスでは "[myLabel"と入力するたびに "setOutlineColor"のオプションは表示されませんでした。しかし、コードで初期化するのではなく、Interface Builderでクラスを設定しました。それは問題だったかもしれないと思いますか? – achiral

+0

可能です。私はIBを通じてこれを使用しようとはしませんでしたが、オブジェクトのクラスがアイデンティティ・インスペクタのカスタム・クラスに設定されていると仮定すれば、動作するはずです。 – jonkroll

関連する問題