2016-09-14 9 views
0

私はカード(Facebookのアプリのように)を表示するためにスクロールできるアプリを作成したいと考えています。どのコンポーネントがこの目的に適していますか? UIScrollViewの内部iOSでカードを作成するには、どのコンポーネントを使用する必要がありますか?

  • 再利用可能なのUIView(パフォーマンス?)
  • UIScrollViewの内部UIStackView(...?)
  • UITableCellViewのUITableView内部? (そうは思わない)

私はそれはいくつかの影や内容に応じて、動的な高さを持っていると思います。

ありがとうございます。ピクチャー enter image description here

+2

UICollectionViewもオプションです –

+1

これは、セルのcontentView内のビューで、その背景色が異なります。 – Tj3n

+0

ニュースフィード、テーブルビュー、コレクションビューなどのリストをこれらのリストとして表示するには、実際のセルには、テーブルビューの背景と同じ色の境界線があるカスタムビューが含まれます。私は現在、私のアプリに同じ機能を追加しています。それがどうやってそれにアプローチするのですか?あなたのセルは、セルよりも小さくするために、実際のコンテンツには明確な背景と制約があります。 – Scriptable

答えて

2

あなたが、その後のUITableViewを使用して、Facebook上でのようにニュースフィードに似たものを作成したい場合は


は、移動するための方法です。いくつかの異なる種類のカードレイアウトに応じて、各カードレイアウトごとに異なる動的プロトタイプUITableViewCellを作成することができます。 UITableViewsはこれに最も自然であり、パフォーマンスにも優れています。基本的には、「再利用可能なUIScrollView内のUIView」と言って、最初にお伝えしたことです。 UITableViewはUIScrollViewであり、UITableViewCellsは基本的にUIViewであり、はい、再利用されます。いつでも、スクリーン上に何が表示されるのに必要なだけの十分なセルがあります。ニュースフィードに100個のアイテムがある場合、まだ7個のセルしかなく、ニュースフィードをスクロールすると、7個のセルが再利用されてニュースフィードに異なるアイテムが作成されます。

動的高さの場合:ストーリーボードで動的高さを明示的に指定することはできません。代わりに、あなたのラベルの高さを変えて、線の属性を0にします。それが0になると、セルの上端から下端まですべて適切に配置されていることを確認する必要があります。あなたには多くの要素があるかもしれませんが、iOSは完全に厳密に高さを決定できるように制約が必要です。

対応するビューコントローラでは、あなたのviewDidLoad方法で次のように書きます。

tableView.rowHeight = UITableViewAutomaticDimension

その後、私はあなたのスクロールがのようにグラグラされないようにもtableView.estimatedRowHeight = 150またはそのような何かをやってお勧めします。

動的なセルの高さで通常行われるため、スクロールしない(特にスクロールアップする)ための100%ソリューションは、tableViewデリゲートメソッドtableView(:heightForRowAtIndexPath)メソッドを実装することです。

これは、これをどのように開始するのかについてのちょっとした先駆けだと言いました。ダイナミックな高さの話題は、Web上の多くのチュートリアルや、人々が遭遇する問題についてのStackoverflowに関する多数の質問で見つけることができます。

+0

。実際にUITableView内部でUITableCellViewを試してみました。セパレータの色を変更しました。私はセル(画像、タイトル、内容を含むサブビュー)をカスタマイズしました。しかし、私は動的な高さのプロパティを設定できませんでした。自動レイアウト(サブビューとセルの間)を使用するとコードがコンパイルされない – David

+0

@David編集した答えをチェックしてください。 – David

+0

うわー、素晴らしい! UITableViewAutomaticDimensionがトリックでした! – David

関連する問題