読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

UIScrollView + AutoLayoutの実装方法の考え方

Swift

ここに書いてある内容を読んだ。やっと言っている意味がわかってきたので、まとめておく。

  • UIScrollView→UIView(以後ContentViewとする)という配置方法を取る。
  • UIScrollVIewはViewControllerのViewにぴったり合わせる。
    • 全てのマージンを0にして、勝手に取られる左右のrelative marginを外す制約を与える。
  • UIScrollViewの中に入れるUIViewに対して適当にコンテンツを作る。
    • この時、このUIViewの高さをSize Inspectorで指定しておく。UIScrollViewのcontentsizeの高さが決定できないから(多分)
      • 高さが動的に決定されるものってUITableViewぐらい?
    • ContentViewにwidth制約を与えておく。StoryBoardで出てくるViewControllerのwidthに合わせると楽。この時Remove At build timeにチェックを入れておく。
  • このまま実行するとwidthが固定になってしまう。縦でも横でもデバイスの横幅にぴったり合わせるために、viewDidLoadでContentViewからUIScrollVIewに左右に対するマージンを0にする制約をプログラムで与える。
    • 適当に決めたwidthがデバイスの横幅によって動的に決定され、ContentView内部のAutoLayoutは活かしつつ、ContentView自体の高さ> デバイスの高さが成り立っている場合は、スクロールができるようになる。

ここまで考えて思いました

AutoLayoutがどんなものか分かったんで、良い勉強になりました。CSSのように出来る日はこないだろうね、きっと。

縦にスクロール出したい時って実はそんなに無いから、あまり使わない可能性高い。入力項目が多くて下にはみ出るというのは、お問い合わせフォームのようなものぐらいしか思いつかないし、スマホのアプリであんまりないよねきっとそれ。iPhone4s対応ぐらいかねぇ・・・。画像ギャラリーみたいなの実装するなら今はUICollectionVIew使うみたいだし、サムネのサイズと表示枚数が分かればcontentSizeはframeで計算できる。

また、AutoLayoutで電卓のようなグリッドレイアウトを組むのは死ねる。列と行を二重ループでframeで実装すれば何の問題もなく終わりそう。