2012-01-23 20 views
27

Xcodeでは、何行のテキストを置くかに応じて自動サイズ変更するUILabelを作成しました。 は、しかし、私はUILabelの高さが一定の限度(私の例では240)を超えることはしたくない、コードは次のようになります:私のテキストを約10〜15行以内であるとき、これが正常に動作しますUILabelにスクロール機能を追加する方法

NSString *text = @"imagine this is a huge wall of text\n\n\n" 
UILabel *myLabel = [[UILabel alloc] init]; 
[myLabel setNumberOfLines:0]; 
CGSize labelSize = [text sizeWithFont:myLabel.font constrainedToSize:CGSizeMake(280, 240) lineBreakMode:myLabel.lineBreakMode]; 
myLabel.frame = CGRectMake(0, 0, 280, labelSize.height); 

。 しかし、もし私が40行のテキストのようなものを入れたら、余分なテキスト行は私のUILabelを越えて途切れるでしょう。

スクロール機能をmyLabelに追加して、myLabelの最大高さが240になるようにするにはどうしたらいいですか?

+0

多分これは助けることができますhttp://stackoverflow.com/a/16860529/1463604 – Nishant

+0

26kユーザーからこの質問のみを表示しました19 upvote !! wierd !! –

答えて

96

UITextViewreference)。

これはまさにそれを行うように設計されています。編集を無効にすると、スクロール可能なラベルが表示されます。あなたはこのようUIScrollViewの上であなたのUILabelを追加することができますし、また、このように行うことができます

+4

UITextViewはUILabelのドロップイン置換ではないことに注意してください。例えば(iOS 6のように)、属性付きテキストを使ってUILabel上にフォントを設定すると、それは "stick"に変わります。 UITextViewでフォントを設定すると、その変更はすでにUITextViewにある属性にのみ適用されます。新しい属性付き文字列を割り当てると、以前に設定したフォントは反映されません。 (これは私が今夜これで働いた経験です) –

+1

@JonSchneiderは今日でもUITextViewはまだ "正しい"ものですか? – rottenoats

+0

@rugdealer私はあなたに確かな答えを与えることはできません。私は2014年後半から深刻なiOS開発を行っていません。 –

1

---ここ

scrollView.backgroundColor = [UIColor clearColor]; 

     UILabel * label = [[UILabel alloc] init]; 
     [label setNumberOfLines:0]; 
     label.text=[detailDict valueForKey:@"ABC"]; 
     [label setFont:[UIFont fontWithName:@"Georgia" size:16.0]]; 
     CGSize labelsize=[label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(250, 1000.0) lineBreakMode:UILineBreakModeWordWrap]; 
     int y=0; 
     label.frame=CGRectMake(38, y, 245, labelsize.height); 
     [label setBackgroundColor:[UIColor clearColor]]; 
     [label setTextColor:[UIColor whiteColor]]; 
     scrollView.showsVerticalScrollIndicator = NO; 
     y+=labelsize.height; 
     [scrollView setContentSize:CGSizeMake(200,y+50)]; 
     [scrollView addSubview:label]; 
     [label release]; 

Yは増加またはテキストとしてラベルのサイズを小さくするために使用されます。

+1

より良い選択肢があれば、それは常に間違ったやり方です。 :( –

+0

これは、実際には、UITextViewのスクロール動作で問題が増えていることに疲れてしまったあなたにとって、優れたソリューションです。特に、透明なナビゲーションバーと混在している場合があります。 UITextViewは実行されません。 –

関連する問題