Swift

scrollViewと同階層にあるけど見た目はscrollView上に乗っかっているsubView

More than 1 year has passed since last update.

開発環境

  • XCode9beta3
  • Swift4

やりたかったのはscrollViewを動かしても連動せず、画面上の相対位置を維持するオブジェクトを用意する事で、思えば今まで作った事なかったなあと思っていざ実装!と意気込んだもののあっさりと実現してしまってちょっと色々足してみたのがこちらです。

20170719.gif

ソースはこちら
SubPanelSample

StoryBoardで、登場した頃に比べ格段に使いやすくなったAutoLayoutでそれぞれを配置するだけです。scrollViewを先に配置した後で、subView(画像でのSubPanel)を配置しようとするとすぐscrollViewの上に乗ってしまうので、配置時に注意するか、後でConstraintsを調整します。

スクリーンショット 2017-07-20 23.56.23.png

scrollViewとsubPanelのデータのやり取りはKVOを利用してます。下記リンクのkvoModelの作り方をそのまま使わせて貰ってます。scrollViewをタップしたpointをSubPanelに表示し、SubPanelのchangeを押すと、scrollViewのラベルのテキストを書き換えるという、お互いからのイベントを受け取って対応しています。
SwiftでKVOを使って堅牢なMVCを実現するサンプル