iOS12からtransform3Dが追加されました。z軸回転アニメーションも出来る凄いやつです。
さて、こんなtransform3DですがiOS12では使えません。
え??
いやいやいやいや
ビルド通るし…
エッ…!?
Terminating app due to uncaught exception 'NSInvalidArgumentException'
reason: '-[UIView setTransform3D:]: unrecognized selector sent to instance 0x7fb8a3404790'
意訳:setTransform3Dなんて知らないから例外で落としたよ
何が起きてるの?
わからないけど、多分setTransform3Dの実装が公開されてないけどavailableが付けられてしまった…?
前にもSceneKitかなにかでリリース前のiOSバージョンのavailableが付いていたりしたのでこのあたりは結構ガバガバなのかもしれない。
ちなみに内部的には -(void)_setTransform3D:(CATransform3D)arg1 ;
というのが存在しているので、実装自体はありそう。
https://developer.limneos.net/index.php?ios=12.1&framework=UIKitCore.framework&header=UIView.h
iOS13では問題なく動作します。ランタイムでしか気がつけないバグでした。
もしかしたらiOS12.3とか途中から使えるようになっているかもしれないです。情報お持ちの方はコメントくださいmm
おまけ
view.perform(Selector("_setTransform3D:"), with: CATransform3DIdentity)