0

を使用setNumberOfLinessizeToFitて、tableView セルのラベルのサイズを動的に変更しています。2行以上だとラベルが上に伸びてしまうのですが、下に伸ばしたいです。

label1私がと を持っていると しましょうlabel2。それらのy位置は設定前と同じですlabel.text:

label1         label2
---------     --------- 
|       |     |       |
---------     ---------

label1 は 1 行のみですが、label2 はlabel.text個別に設定すると 2 行になります。現在は次のようになっています。

label1         label2
              --------- 
---------     | line1 |
| line1 |     | line2 |
---------     ---------

ただし、私が欲しいのは次のとおりです。

label1         label2                  
---------     ---------
| line1 |     | line1 |
---------     | line2 |
              ---------

目標を達成する簡単な方法があると思いますが、思いつくキーワードでグーグル検索しても見つかりません。

私のコード:

myLabel.text = value;
[myLabel setNumberOfLines:0];
[myLabel sizeToFit];
4

5 に答える 5

1

これを試して:

NSString *text1 = @"Your text for label2";
CGSize constraint1 = CGSizeMake(125, 2000);   //width of your label....
CGSize size1 = [text1 sizeWithFont:[UIFont fontWithName:@"ArialMT" size:12.0] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap];  //font of your label

cell.myLabel.frame = CGRectMake(posx,posy,125,size1.height); 
//posy is same as for label1
cell.myLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.myLabel.numberOfLines = 0;
cell.myLabel.text = text1;
于 2013-05-15T09:47:36.400 に答える
1

人々が私の質問に反対票を投じる理由がわかりません。とにかく、私は理想的な解決策を得ました。同じ問題を抱えている人々を助けることができれば幸いです.

テーブル ビュー セルのラベルが伸びないようにするには、Top Space toストーリーボードのラベルに制約を設定する必要があります。

ここに画像の説明を入力

ラベルをセルの上部近くにドラッグすると、Xcode によって自動的に生成されます。この画像の右下にあるボタンをクリックすると、制約の値を変更できます。

制約を作成すると、ラベルは伸びなくなります。

于 2013-05-16T04:25:38.060 に答える
0

これを実現するには、テキストに従ってフレームを具体的に設定し、ラベルが表示されるようにする必要があります

CGSize maximumLabelSize = CGSizeMake(Width,VeryLargeHeight);

CGSize expectedLabelSize = [string sizeWithFont:label.font                        
                              constrainedToSize:maximumLabelSize 
                                  lineBreakMode:label.lineBreakMode];

expectedLabelSize.height は、フレームに設定するラベルの高さで、numberofLines を 0 に設定します

于 2013-05-15T09:39:22.173 に答える
0

sizeToFitテキスト コンテンツをフレームの上部に移動します。この回答の図を参照してください。
代わりに、sizeWithFont:constrainedToSize:lineBreakMode:API を使用してテキストの正確な高さを取得し、これをラベルに設定します。

于 2013-05-15T09:40:41.167 に答える
0

以前に投稿されたすべての回答は、いくつかの追加で問題に使用できます。テキストが UITableViewCell (カスタムかどうか) に含まれていることが重要です。によって返された値tableView:heightForRowAtIndexPath:がラベルの高さより大きい場合、コードは機能します。そうでない場合、ラベルは正しく表示されません。

したがって、必要に応じてコンテンツを表示するには、正しい値を返すtableView:heightForRowAtIndexPath:必要があるため、表示するテキストの必要な高さを計算してくださいtableView:heightForRowAtIndexPath:(+- 他のビューがある場合は他の値)。また、autoloayout を使用している場合は、セル ビューの制約を確認してください。そうでない場合は、セル ビューのスプリングとストラットを確認してください。

于 2013-05-15T11:18:38.090 に答える