ストーリーボードには2つのUILabelsが並んでいます。 2番目のラベルは最初のラベルの右端に突き当たるはずです(1の末尾の制約)が、最大幅に達しない限りコンテンツのサイズに等しい幅を設定するには最初のラベル(左側のラベル)も必要です。視覚的に:
| 1つのテキストにラベルを付ける| |ラベル2のテキスト|
そして、次の制約が必要です。
1)ラベル1は、最大サイズに達しない限り、幅ごとにサイズを変更する必要があります。
2)ラベル2は常にラベル1の右端に突き合わせてください
ストーリーボードでこれを設定するにはどうすればよいですか?
label2
からlabel1
にドラッグします。ポップアップから水平間隔を選択します。制約をダブルクリックします。定数を1に変更します。label1
に最大幅を与える:label1
を選択します。トップメニューバーに移動し、[エディター]> [ピン]> [幅]を選択します。制約をダブルクリックします。関係を<=に変更し、定数を最大幅に変更します。label1
32ポイント、上部レイアウトガイドから34ポイントを固定しました。注:label1
の幅にコンテンツサイズを反映させるために、制約を作成する必要がないことに注意してください。コンテンツのサイズ制限は自動的に生成されます。
最初に以下のコードでtextSizeを取得してください:
CGSize textSize = { 230.0, 10000.0 };
CGSize size = [[NSString stringWithFormat:@"%@", yourLabelText]
sizeWithFont:[UIFont systemFontOfSize:10]
constrainedToSize:textSize
lineBreakMode:NSLineBreakByWordWrapping];
次に、このコンテンツサイズで最初のラベルフレームを設定します。
UILabel *lblFirst = [[UILabel alloc] initWithFrame:CGRectMake(X, Y, W, size.height)];
lblFirst.lineBreakMode = YES;
lblFirst.lineBreakMode = NSLineBreakByWordWrapping;
lblFirst.numberOfLines =size.height;
lblFirst.backgroundColor = [UIColor clearColor];
[self.view addSubview:lblFirst];
2番目のラベルフレームは次のようになります。
UILabel *lblFirst = [[UILabel alloc]
initWithFrame:CGRectMake(lblFollowerName.frame.size.width + lblFollowerName.frame.Origin.x, Y, W, H)];