オンラインで検索してみましたが、私の問題に対する明確な答えが見つからなかったため、専門家のアドバイスを求めるようになりました。2 つのラベルが付いたビューがあります。どちらのラベルも、plist とは異なる文字列の長さを表示します。
アプリを実行すると、文字列の長さに応じてラベルが他のラベルと重なってしまいます。
以下は私の問題のスクリーンショットです
オンラインで検索してみましたが、私の問題に対する明確な答えが見つからなかったため、専門家のアドバイスを求めるようになりました。2 つのラベルが付いたビューがあります。どちらのラベルも、plist とは異なる文字列の長さを表示します。
アプリを実行すると、文字列の長さに応じてラベルが他のラベルと重なってしまいます。
以下は私の問題のスクリーンショットです
secondLabel のオリジンを変更する必要があります。
CGRect frame = secondLabel.frame;
frame.origin.y= firstLabel.frame.origin.y + firstLabel.frame.size.height;
[secondLabel setFrame:frame];
より良いオプションはUITextView
代わりに使用することですUILabel
が、それでもラベルを使用したい場合は、以下のコードを使用してテキストの高さを見つけ、その高さに応じてラベルのフレームを設定できます
NSString *text = [arr objectAtIndex:indexPath.row];
CGSize constraint = CGSizeMake(contentWidth - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:20] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = MAX(size.height, 44.0f);
ここで contentWidth はラベルの幅で、CELL_CONTENT_MARGIN = 10;
ええ、あなたは多くの方法でそれを解決できます。
たとえば、最初のラベルに目的のテキストを入力してから、
[label1 sizeToFit]
この呼び出しにより、テキストの長さに合わせて適切なサイズのラベルが作成されます。これで、最初のラベルの後に 2 番目のラベルを配置できます。
label2.frame = CGRectMake (x, label1.frame.size.height + ..., .....)
それが役に立てば幸い!