2012-05-26 10 views
7

詳細ビューコントローラにUILabelがあるため、選択したテーブル行によって内容が変わります。私は問題がある、私はテキストに応じて私のUILabelと動的な高さの固定幅を設定します。これどうやってするの? (私の間違いで申し訳ありませんが、私は英語ではありません)固定幅と柔軟な高さを持つUILabel

答えて

-2

あなたはコードがあります。

UILabel *yourlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, sizeToFit)]; 
yourlabel.numberOfLines = 0; 

すべてのクエリについてご意見ください。

+0

CGRectの高さの値としてsizeToFitを使用することはできません.Xcodeはこれを行うことを許可していません。それは '宣言されていない識別子'です。 –

+0

Albert;)ありがとうございます –

+0

私はそれがあなたの問題を解決すると思います。 http://basheerad.blogspot.com/2011/12/dynamic-width-and-height-for-uilabel-in.html – jamil

8

サブクラスUILabel私はこれを行うには。

AutosizingLabel.h

#import <UIKit/UIKit.h> 


@interface AutosizingLabel : UILabel { 
    double minHeight; 
} 

@property (nonatomic) double minHeight; 

- (void)calculateSize; 

@end  

AutosizingLabel.m

#define MIN_HEIGHT 10.0f 

#import "AutosizingLabel.h" 

@implementation AutosizingLabel 

@synthesize minHeight; 

- (id)init { 
    if ([super init]) { 
     self.minHeight = MIN_HEIGHT; 
    } 

    return self; 
} 

- (void)calculateSize { 
    CGSize constraint = CGSizeMake(self.frame.size.width, 20000.0f); 
    CGSize size = [self.text sizeWithFont:self.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];  

    [self setLineBreakMode:UILineBreakModeWordWrap]; 
    [self setAdjustsFontSizeToFitWidth:NO]; 
    [self setNumberOfLines:0]; 
    [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, MAX(size.height, MIN_HEIGHT))]; 

} 

- (void)setText:(NSString *)text { 
    [super setText:text]; 

    [self calculateSize]; 
} 

- (void)setFont:(UIFont *)font { 
    [super setFont:font]; 

    [self calculateSize]; 
} 

@end 

これを使用するには、インポート/プロジェクト内の.hと.mファイルのファイルを作成します。あなたはXIBを使用している場合には、すべてのUILabelを選択します、それを設定するには、右サイドバーのアイデンティティインスペクタをクリックすることができます

#import "AutosizingLabel.h" 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    AutosizingLabel *label = [[AutosizingLabel alloc] init]; 
    label.text = @"Some text here"; 
    [self.view addSubview:label]; 
} 

:あなたはコード内であなたのUILabelを作成している場合はその後、それは次のようになりますクラスをAutosizingLabelに設定します。いずれの場合も、.textプロパティを設定すると、ラベルのサイズが自動的に更新されます。

+0

ありがとうございます。次に、Detail View Controllerでこのサブクラスを使用して、UILabelの動的な高さをどのようにすることができますか? –

+0

私は答えをどのように使用するかについての更なる情報で更新しました。 –

+0

ありがとう、私は今すぐ試してみるつもりです。 –

関連する問題