質問: 画面が横向きになるとそれに応じて`TableView`のセル内の`View`の幅を変えたいのですが、以下の画像のように横向きになってもセル内の`View`の幅が変わりません。ちなみに緑の部分は`ScrollView`となっています。 縦向き !画像の説明をここに入力 横向き !画像の説明をここに入力 `viewWillTransitionToSize`内で`scrollView.contentSize`としてもサイズは変わりませんでした。どうすれば画面の回転によってセル内の`View`のサイズを変えることができるでしょうか? どなたか分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。
回答: Auto Layoutを使って、ビューのサイズをコントロールする方法を説明します。 まず、UITableViewCellのサイズは、UITableViewの横幅と、行の高さ(Row Height)に追従します。画面のたてよこの向きを変えたり、プログラムで行の高さを変更すると、UITableViewCellのサイズも変わります。このサイズの変化に、セルに貼り付けたUIScrollViewのサイズを追従させたいなら、下図のような、Constraintsの設定を行います。 !画像の説明をここに入力 (テキストフィールド内の数値は、無視してください。) 上下左右のConstraintsを指定することで、スクロールビューのサイズは可変となります。 つぎに、スクロールビューの内部、コンテンツ内のConstraintsの設定に移ります。 Constraintsを設定しないと、**コンテンツのサイズ**(UIScrollViewのプロパティcontentSize)**は不定です**。不足のないConstraintsの設定で、はじめてコンテンツのサイズが決まります。これは重要なポイントです。 左右に長いスクロールビューの場合、左端のサブビューのConstraintsと、右端のサブビューのConstraintsによって、最小限のコンテンツサイズを決定する条件がそろいます。 左端のサブビューのConstraints !画像の説明をここに入力 5箇所指定していることに注目してください。 つぎに右端のサブビューのConstraints !画像の説明をここに入力 こちらは4箇所。上下のサイズ決定は、左端のサブビューで行っているので、右端のサブビューでは不用というわけです。