watchOS 2からようやくWatch上でCore Motionが使えるようになりましたね!
Core Motionを使ったアプリを作っている自分としてはとても嬉しいニュースでした。
というわけで、さっそくApple Watchの傾きに沿って丸い物体が転がるデモを作ってみました。
さっそく問題が
確かにCore MotionによってApple Watchの傾きを取得できるようになったわけですが、ここで致命的な問題が。。。
そう、Apple Watch上ではオブジェクトの座標を指定できないのです。
要するに
view.frame = CGRectMake();
みたいなことはできないわけですね。
Apple Watchの傾き(x,y)から移動量を計算して物体を動かそうと考えていたのですが、これではどうすることもできません。とは言え、座標指定できないのにはきっと理由がある(Appleさんも望んでない)と思うので、ここでいったん諦めようとしました。
どうしても転がしたい
そこで思いついたのが、オブジェクトのinsetを使う方法ですw
insetにより余白を作ることで物体の位置を調整するわけです。Apple Watchの傾きに合わせてinsetを調整することで、物体が動いているように見えます。
イメージ図:
もちろんこれは正しい使い方ではありません。
あくまでネタなのでご理解くださいm( )m
問題点
これで無事、Apple Watchの傾きに合わせて物体が転がるようになったわけですが、もうひとつだけ問題が。。
Apple Watchをちょっとでも上方向に傾けると、すぐに画面が消えてしまうのです。
ただ、これはとても正しい動きだと思います。腕を下ろす動作をしたら画面は消えるべきなのです。
そもそもApple Watchは長い時間見るものではないのです。
まとめ
もう一度書いておきますが、このinsetの使い方は間違っております。決して真似しないでくださいね☆