質問: ### 前提・実現したいこと 度々の質問失礼致します。初学者で分からないことが多く、またこちらにお世話になります。 因数分解を練習するアプリを開発しております。 画面に配置するラベル、ボタン、イメージ、コレクション等の位置を、直接座標で指定するのではなく、制約によって指定しようと試みました。 ### 発生している問題 他のアイテムと同様、CollectionView1も制約(x座標がセンターから-70, y座標がセンターから+70)を付けたところ、画面にCollectionView1が表示されなくなりました。 ### 設定画面 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/615039c700a38644b9b68d3f1e971c8c.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c558682721acbe8e28c97be7e0b412ac.png) ### 実行画面 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9812f55c8ffda6d0db7a97b662b755a4.png) ### 試したこと CollectionView1の位置を直接座標で指定する場合であれば、画面に表示することができます。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a052290736e2ba16f34b10aadd1c30ac.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b7b2cf41fbfba8afe6cfbd033bacbb43.png) ### 追加情報(FW/ツールのバージョンなど) Xcodeのバージョンは10.3です。 シミュレータはiPhoneXsです。 画像を追加しました ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/dbfe918958db8b83a2cd82b18b3fef96.png) ### 更に画面を追加しました。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/40da5e493b0ddce6de4025fd0ec2bc44.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/242d76d6aa64ded6bb854a821f77c675.png) ### 意図したことが出来ました! ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/5fb3cd37025bcc16ece96e70ae621f23.png)
回答: 調べるためにprint(collectionView)をviewdidAppear()内に書いてみるのも手だと思います。 frameをコンソールに出力してくれるので、実際に設定した場合との違いを比べてみたらどうでしょう? 完全に当てずっぽうですが、直接座標で指定する時は、frameを設定しているので、 widthとheightも設定されていますが、制約の時は、widthとheightが設定されておらず、 0で出力されていて見えないのではないですか??? storyboard上でviewの枠が赤い状態になってないですか??? ちなみにviewdidload()の後に制約は設定されるようなので、viewdidload内に書いても、 設定前の値が出るだけで、そちらの値は参考になりませんのでお間違いの無いように。