質問: !rotationValue } ``` なお、storyboardには、回転ロックボタン用の UIButton と、縦向き表示と横向き表示で内容の変わる UILabel を設置し、制約でオートレイアウト対応してあります。 これで一応、ポートレートのときには縦向きビュー、ランドスケープのときには横向きビューにすることができるのですが、問題があります。 たとえば、縦向きビューに固定して、デバイスを横向きにした場合、ビューが一旦横向きになってから縦向きに戻る、という動作をしてしまいます。最終的には定位置になるのですが、ビューが無駄にぐるぐるするのが困ります。 回転を全くさせずにしっかりビューを固定するには、どうしたらいいのでしょう? overrideするメソッドの、 shouldAutorotate() supportedInterfaceOrientations() preferredInterfaceOrientationForPresentation() を使うことも考えましたが、これらを使うとシーンの縦横表示がどちらかに完全に固定されてしまうようで、「ユーザが好きな向きを選べる」ようにする使い方が分かりませんでした。 縦向き表示、横向き表示どちらにも対応するアプリ内に設置する、ユーザが好きなときに好きな向きで回転ロックできる機能をもつボタンをどうしたらつくれるか、教えていただけませんか? 上記コードをどのように変えれば、デバイス回転時にビューが一度回転して戻るような不自然な動作を回避することができるでしょう? デバイス自体に回転ロック機能がありますが、横向き表示固定できる機能がないアプリは、横向き表示でデバイスの回転ロックを使うと強制的に縦向き表示にされてしまいます。横向き表示で回転ロックできるアプリをつくりたいと思っています。 よろしくお願いいたします。
回答: 単純に、shouldAutorotate()でロック状態を返すだけで上手く行きませんか? ``` class ViewController: UIViewController { @IBOutlet weak var rotateSwitch: UISwitch! override func shouldAutorotate() -> Bool { return rotateSwitch.on } } ``` これで、switchがONの時は画面が自由に回転して、OFFにした時点で回転が固定されるようになります。