0

あなたがうまくやっていることを願っています。

ラベルを設定してフレームを調整しています。

UILabel *mylabel=[[UILabel alloc]init];
    mylabel.Text=@"This is my label";
    mylabel.frame=CGRectMake(10,10,200,21);

ラベルのテキストを、このように設定した文字列から変更すると、

NSString *mystring=@"This is my first string that is to be assigned to my label dynamilcally";
mylabel.Text=mystring;
mylabel.frame.size.width=mystring.length;

しかし、何も起こりません。初期化時に設定したように、ラベルの幅は200のままです。

これは、mystringのも取得する必要があります。それを取得する方法は?

たくさん助けてくれてありがとう。

4

1 に答える 1

1

[myLabel sizeToFit]1行で必要な場合。複数行のラベルの場合、NSStringsizeWithFont:constrainedToSize:lineBreakMode:関数を使用して文字列のサイズを取得し、それを使用してラベルの高さと幅を変更できます。

たとえば、200pxの固定幅の複数行ラベルの高さを提供するコード:

CGSize textSize = { 
    200.0,   // limit width
    20000.0  // and height of text area
}; 

CGSize size = [descriptionString sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = size.height < 36? 36: size.height; // lower bound for height

CGRect labelFrame = [myLabel frame];
labelFrame.size.height = height;
[myLabel setFrame:labelFrame];
[myLabel setText:descriptionString];
于 2012-11-09T10:50:52.437 に答える