0

メールを表示するための次のような UI を備えた Android アプリがあります。

レイアウト例

これを iOS に移植しようとしていますが、iOS 5.0 以降で動作する必要があります (iOS 6.0 では自動レイアウトを使用できません)。この例に基づいて、レイアウトがどのように調整/フローされるかを教えていただければ幸いです。

このタイプのレイアウトを処理する最良の方法は何でしょうか? From 行と Re 行は、示されているように高さを可変にする必要があります (実際には To: 行も同様です)。もちろん、メッセージ本文は高さが可変である必要があります。

これまでの私の唯一の試みは、静的セルで UITableViewController を使用しようとすることでした。各行に必要な高さを返すために、heightForRowAtIndexPath 内で sizeWithFont を使用することにより、そのように変数の高さを取得できます。その方法を使用して、私は自分が望むスタイルを手に入れようとしています (角を丸くし、上部のみの背景)。

それで、より良い方法はありますか?Collection View や Container View を使っているものでしょうか?移植する必要がある他のいくつかの画面では、同様の問題がありますが、ネストのレベルが高くなります (丸い青いセクション内の白いセクション内の丸い青いセクション)。それとも、IB を使用せずに、基本的なラベル要素と一般的なビューだけからコードで UI 全体を構築したほうがよいでしょうか?

4

1 に答える 1

2

私が考えることができる最も簡単な方法は、 内のラベル フレームを手動で計算することですviewDidLayoutSubviews。ここにいくつかの擬似コードがあります:

作成時:

  1. IB では、すべてのラベルを青い領域のサブビューとして配置します。コンテナーの自動サイズ変更マスクが上、左、右に固定され、幅が伸縮可能であることを確認します。高さとサブビュー フレームをコードで修正します。メッセージ本文は、ラベルまたは別のビューとしてのテキストビューにすることができます。
  2. viewDidLoad、含まれているビューのレイヤーの cornerRadius、borderColor などを適切に設定します。

viewDidLayoutSubviews

  1. 時間ラベル: 簡単。幅をスーパービューの幅からパディングを引いた値に設定し、高さを次のように設定しますsizeWithFont:
  2. To:From:およびRe:; コールsizeToFit。最大幅を取得し、それを保持します。
  3. To:label: x を 0 に、y を時間ラベルの下部に設定します。
  4. 受取人の名前ラベル: x を (2.) から取得した幅に設定し、y を (3.) と同じ幅に設定します。幅を (コンテナの幅 - (2.)) に、高さを で設定しsizeWithFont:ます。
  5. From:行と行に対して、(3.) から (4.) までの同じ手順を実行しRe:ます。
  6. サブジェクト ラベルのフレーム下部に青いビューの高さを設定します。
  7. フレームの残りの部分を本文の textview/label で埋めます。

自分でパディングを追加する必要がsizeToFitありsizeWithFont:ます。また、本文UITextViewはそれ自体でスクロールできますが、長い件名が予想される場合は、全体を別のタイトルでラップする必要がありますUIScrollView(または、IB でメイン ビューのクラスを に設定するだけですUIScrollView) 。

于 2012-10-03T04:48:46.913 に答える