2016-04-10 42 views
0

私は、横に置かれた箇条書きの点を持つ3つのラベルを持っています。私は箇条書きのカスタムデザインをしたいので、UIImageとして使うべきだと思った。私はそれを説明させてください:動的なUILabelに応じてContainerViewの幅を自動調整

o PHP o Swift o Java 

各ラベルとそれに割り当てられた箇条書きの間の固定された距離があります。ラベルは、次のラベルの箇条書きの点(PHP - Swiftの箇条書き点など)との距離も一定です。

最後に、私はそれを水平にビューに中央に揃えたいと思います。

上記のシナリオは、ラベルに静的テキストがある場合に機能します。しかし、私は動的テキストを使いたい。


私が考えた解決策は、3つのコンテナビューを作成することでした。だから私は持っているだろう:

しかし、それは動的/変化するテキストサイズに一貫して見えません。私はsizeToFitを使用してテキストをフィットさせますが、コンテナビューでは新しいViewControllerが作成されるため、コンテナビューの幅を'Bullet Point + Dynamic Label's width'に自動的に調整できるかどうかはわかりません。私は箇条書き+ラベルの幅に係る「コンテナビュー」の幅を自動的に操作することができるかどう

Parent ContainerView (or UIView?) 
|-----------------------------| 
|  CV1  CV2  CV3 | 
| |-----| |-------| |---| | 
| |o PHP| |o Swift| |o C| | 
| |-----| |-------| |---| | 
|-----------------------------| 

このシナリオはのみ動作します。したがって、私は各コ​​ンテナに対して固定マージンを作成し、水平方向に(おそらく親コンテナを使用して)中央に置くことができます。

これを達成する方法は何ですか?ストーリーボードやプログラムでそれを行う方法はありますか?

答えて

1

CVビューの幅がautolayout(これはsizetofitを使用すると言います)よりも広い場合、親コンテナビューは内容に合わせて幅を自動的に調整します。次に、最初と最後の間に固定された垂直方向のスペースがなければなりません。また、親コンテナ(先頭と末尾)にマージンを持たなければなりません。親コンテナは、内部の内容に応じてサイズを変更する必要があるため、制約のある幅(固定幅の制約など)を持たないようにする必要があります。 あなたは親ビューコンテナの自動レイアウトを使用していないか、あなたが

let size = parentViewContainer. systemLayoutSizeFittingSize(UILayoutFittingCompressedSize) 

を使用してコンテナのサイズを取得し、フレームまたは幅の制約のいずれかに設定することができ、幅の制約を持っている場合。

Hereは、これを実証するサンプルプロジェクトです。

+0

CV1がUILabelのsizeToFitの変更をどのように理解して、新しい幅(箇条書き+ラベルの幅)に独自の幅を更新するのか、実際にはわかりませんでした。この時点で、私はCV1 - CV2とCV2 - CV3は固定マージンを持つことを理解します。しかし、現在、ParentCVはCVにしたがって幅を調整し、CVは調整されません(CVからParentCVへの先頭と末尾を使用する場合)。その後、SuperViewのParentContainerを水平方向にセンタリングするのは簡単です。もっと詳細を教えてください。 – senty

+0

'CV'sの中には、親と同じメソッドを適用する必要があります。したがって、箇条書きイメージの先頭の余白、箇条書きのイメージとラベルの間の垂直方向の間隔、およびラベルの末尾の余白を設定する必要があります。そしてこれがそうであるべきです、autolayoutは内部の内容に基づいて 'CV'の幅を設定します。 – Jelly

+0

サンプルプロジェクトを作成してください。私は本当に混乱しており、これを学ぶことに非常に興奮しています。これまでに何を試みても何かが失敗しています:S – senty

関連する問題