4

答えがわからない iOS (6.x) の AutoLayout に問題があります。

次のように、UILabel と UITextField を持つ UITableViewCell があります。

+------------------+
| label  textField |
+------------------+

これらをAutoLayoutでレイアウトしたいのですが、注意点があります。UILabel は、縦モードで 100 ポイント、横モードで 175 ポイントにする必要があります。

つまり、ビジュアル形式の言語では、これは次のようなものになります

Portrait:
|-[label(100)]-[textField]-|

Landscape:
|-[label(175)]-[textField]-|

したがって、テキストフィールドはセルのビューの残りを占めます。

もちろんwillRotateToInterfaceOrientation:duration:、現在表示されているセルを上書きして把握し、それらを呼び出すupdateConstraintsことでこれを解決できるので、方向に応じてラベルの幅を更新できますが、そうではないようです。まず第一に、回転アニメーションにフックすることは難しいか不可能に思えます。第二に、私の気持ちは優先順位と不平等で解決できることを教えてくれます。ラベルのようなものを追加[label(>=100,<=175)]しますが、別のことを行う必要があります。そうしないと、ラベルは常に特定のサイズ (100 または 175) にサイズ設定されるためです。

私はそれを修正したと思った: ラベルのコンテンツの優先度を 200 に設定し、テキスト フィールドに幅が少なくとも 152 であるという制約を設定し、たとえば編集モードを有効にしない限り、それは私が望むことを行うテキストフィールドの幅を 152 ポイントにすることはできません (十分なスペースがありません)。この任意の「152」を入力するのも、道理にかなっていないように感じます。

では、これを修正する方法について何か提案はありますか?

4

1 に答える 1