2017-01-04 12 views
1

私はUIScrollViewで多くのYoutubeビデオを見てきました。 Here,hereおよびhere。しかし何も私の問題を解決している。UIScrollViewsの使用

ここでは、私が使用しているサンプルのストーリーボードを用意しました。

  1. のViewControllerは、ナビゲーションコントローラに埋め込まれている必要があります私は必要何

    enter image description here

  2. BlueViewおよびCyanViewは、アスペクト比に基づいて画面サイズに合わせて高さを調整します。
  3. YellowViewは、UITableViewまたはUICollectionViewが埋め込まれたContainerViewを含むため、可変の高さを持ちます。私のユーザーは、異なるフォーマットで同様のデータを見るためにビューを切り替えることができます。その情報はサーバー側から取得されます。これは、コンテンツがない場合、スクロールを必要としないことを意味します。フェッチするデータの行が多数ある場合は、すべての情報をスクロールして表示する必要があります。

問題は、私は私の意見のそれぞれに固有の高さを設定しない場合、IBは、高さまたはY位置の制約の必要性を訴えるだろう

  1. に直面していました。
  2. 実行時にyellowViewmyScrollViewの高さを変更しようとしたときに、高さをIBで指定しようとしましたが、スクロールがまったく行われません。
+0

スクロールビューではなく、必要に応じてコレクションビューをテーブルビューとして追加することをお勧めします。色付きビューをセルとして扱う方が簡単で適応性が高いと思います。 –

+0

そのような効果を出すには、ほとんどの人が行うことは 'UITableVIew'をメインのtableViewとし、' UITableViewCells'の高さはそれぞれのコンテンツに依存します。 'UITableViewCell'の' UIView'や 'UITableView'を埋め込んでいます –

+0

@AhmadFより具体的に言えば、私はUIViewsを使っていました。そのビューの中で、' UITableView'か 'UICollectionView'に変更して、 。 – jo3birdtalk

答えて

1

内部UIScrollViewコンテナビューを追加します。それはあなたの意見の残りを含みます。だから、階層構造はこのようになった:

|---UIScrollView 
     |----UIView 
       |---Blue View 
       |---Cyan View 
       |---Yellow View 

このコンテナのビューがありますUIScrollViewと下トップ末尾をリード。また、と同じ幅のを同じ高さのという制約をメインビューに追加します。 250の優先度を同等の高さの制約に指定します。そしてその後:

  • ブルービューに、追加スーパーからトップ制約を後端とアスペクト比制約を追加、をリード。あなたがうまく見えるUIViewが表示されるまで値をつけてください。シアンビュー
  • 、そのスーパーに末尾とをリードを追加し、ブルービュー上面間隔を加えます。同じのアスペクト比の青色の表示として追加します。
  • は、今すぐあなたの黄色ビューため、トップシアンビューから、およびは、をリードはそのスーパー間隔を末尾に追加します。

今、あなたのUITableViewは、コンテナビューにリード末尾トップを持っていますか、単に直接UITableViewを使用します。

あなたは黄色のビュー内UITableViewを埋め込むか、単にスクロールするメインUIScrollViewを直接UITableViewを使用し、期待したい場合は、手動でUITableViewのための高さ制約コンセントを取得する必要がありますし、それに応じて応じてそれを更新しますUITableViewの行数および各行の高さに基づいて、yellow viewが埋め込みの高さに基づいてその高さを増加させることができるようにし、それに応じてコンテンツビューを更新し、合計コンテンツサイズをUIScrollViewに更新する。

+0

あなたの答えは正当だと思われます。私はそれを試して結果を知らせるでしょう。ちなみに、 'UIScrollView'の子ビューはContainer Viewではないはずですか?それはちょうど 'UIView'ですか? – jo3birdtalk

+0

うん、それは通常の 'UIView'!混乱のため申し訳ありません、私はちょうどそれをコンテナビューと呼ぶのに慣れています! – Rikh

+0

私は 'BlueView'、' CyanView'、 'YellowView'を配置しようとしましたが動作できませんでした。しかし、私はそれを直接 'ScrollView'の下に配置しようとしました! 'YellowView'の高さにIBOutletを追加することは、この全部の鍵でした!ありがとう! – jo3birdtalk

関連する問題