7783


画面が横向きになるとそれに応じて`TableView`のセル内の`View`の幅を変えたいのですが、以下の画像のように横向きになってもセル内の`View`の幅が変わりません。ちなみに緑の部分は`ScrollView`となっています。

縦向き  
![画像の説明をここに入力](https://i.stack.imgur.com/LePY5.png)

横向き  
![画像の説明をここに入力](https://i.stack.imgur.com/MiLYF.png)

`viewWillTransitionToSize`内で`scrollView.contentSize`としてもサイズは変わりませんでした。どうすれば画面の回転によってセル内の`View`のサイズを変えることができるでしょうか？  
どなたか分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。


CC BY-SA 3.0
2015-03-11T02:01:33.267
7747
2015-03-11T08:48:03.823
5210
question
objective-c uitableview
画面の回転に合わせてセル内のViewの幅を変えたい


Auto Layoutを使って、ビューのサイズをコントロールする方法を説明します。

まず、UITableViewCellのサイズは、UITableViewの横幅と、行の高さ（Row
Height）に追従します。画面のたてよこの向きを変えたり、プログラムで行の高さを変更すると、UITableViewCellのサイズも変わります。このサイズの変化に、セルに貼り付けたUIScrollViewのサイズを追従させたいなら、下図のような、Constraintsの設定を行います。

![画像の説明をここに入力](https://i.stack.imgur.com/8cSXv.png)

（テキストフィールド内の数値は、無視してください。）  
上下左右のConstraintsを指定することで、スクロールビューのサイズは可変となります。

つぎに、スクロールビューの内部、コンテンツ内のConstraintsの設定に移ります。  
Constraintsを設定しないと、 **コンテンツのサイズ** （UIScrollViewのプロパティcontentSize） **は不定です**
。不足のないConstraintsの設定で、はじめてコンテンツのサイズが決まります。これは重要なポイントです。  
左右に長いスクロールビューの場合、左端のサブビューのConstraintsと、右端のサブビューのConstraintsによって、最小限のコンテンツサイズを決定する条件がそろいます。  
左端のサブビューのConstraints

![画像の説明をここに入力](https://i.stack.imgur.com/Sox9X.png)

5箇所指定していることに注目してください。  
つぎに右端のサブビューのConstraints

![画像の説明をここに入力](https://i.stack.imgur.com/kZC4f.png)

こちらは4箇所。上下のサイズ決定は、左端のサブビューで行っているので、右端のサブビューでは不用というわけです。


CC BY-SA 3.0
2015-03-11T08:48:03.823
7783
2015-03-11T08:48:03.823
7362
7747
answer