2017-02-21 3 views
0

私の状況を説明する最善の方法は画像です。私が持っているものは、いくつかのUILabelUIImageを含むビューです。赤いボックスはUILabelであり、内容が大きすぎる場合は2行目に移動します。コンテンツがビューの最初の行に収まらない場合は、2行目のUILabel

ストーリーボードからは、コンテンツが適合するケースがありますが、問題は、最後の行(赤いボックス)が2行目に移動するときの処理方法がわかりません。私はautolayoutcartographyを使用しています。

誰かが私を正しい方向に向けることができれば、私はとても感謝しています。

enter image description here enter image description here

+0

あなたは、単一のラベルの2行のテキストを作成しますか?そうなら、numberOfLine = 0を設定することで可能になります。それが必要なのでしょうか? – Janmenjaya

+0

はそれ以上の大きさの制約を使用し、http://stackoverflow.com/a/39888662/6656894を参照してください。 –

+0

@ジャンメンジャヤ、いいえ、私はそれを望んでいません。 tiが大きすぎると、2行目のラベル全体を移動したいだけです。 – charbinary

答えて

1

まず、現在のラベルの位置ごとにテキストの幅を計算します。

テキスト幅は現在のラベルの幅を超えている場合は、リンクの下から私の答えを参照してください。

Auto Layout how to move the view2 from right to the bottom?

計算幅:

func widthForView1(_ text:String, font:UIFont, height:CGFloat) -> CGFloat 
{ 

let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: your_label_width, height: your_lable_height)) 
label.numberOfLines = 0 
label.lineBreakMode = NSLineBreakMode.byWordWrapping 
label.text = text 
label.font = font 
label.sizeToFit() 
return label.frame.width 
} 
+0

私はあなたの答えを受け入れましたこのようにして管理することができますが、ウイラーベルの右隅が親の幅を超えていないかどうかを正しくチェックする方法はありますか? – charbinary

+0

編集された回答を参照してください。 –

+0

ありがとう!私は – charbinary

0

タグビューの使用は、この問題を解決することができます。 TagListViewは外部ライブラリです。 ビューをtaglistViewのサブクラスとして追加すると、その高さは自動的にそれに応じて増加します。ポッドファイルへ

ADDこの:ポッドは 'TagListView' が

func addTags() { 
     let str1 = "Hi" 
     tagListView.addTag(str1) 
     let str2 = "Helloo" 
      tagListView.addTag(str2) 
     let str3 = "How Are u ? " 
     tagListView.addTag(str2) 
     tagListView.isUserInteractionEnabled = false 
    } 
+0

私はあなたが正確に何を意味するか分かりません。あなたはいくつかの詳細情報を与えてください。 – charbinary

0

あなただけの制約にそれを行うことはできません。画面上の要素の位置全体を変更するには、プログラムでそれを実行する必要があります。

+0

それは大丈夫です。しかし、私は、何が最良で、正しい、簡単な方法であるかを知りたいと思います。単なる論理 – charbinary

+1

ロジックは次のようになります 1. LABELをライン1に配置します(例:ストーリーボード) 2. LABELのテキストを設定します 3.サイズを考慮してください(それに合っているのか、それとも置き換えるべきですか) 4.サイズ== OK - >それをそのままにしてください else - >ラベルを置き換えてください これを行うには、いくつかの制約をプロパティとして保存する必要があります(例えば、LABELのトップコンストレインとLine2 2ビューのトップコンストレインなど) – Evgeniy

関連する問題