swiftハーフモーダル
ハーフモーダル実装したことがなかったのでしてみた。とても簡単でした。
ハーフモーダルを発火させるボタンと遷移先の画面をそれぞれ用意
//遷移前画面 prepareをoverrideしてあげる。sheet.detentsを複数指定することによってハーフモーダルと通常モーダルをどちらも使える。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let next = segue.destination
if let sheet = next.sheetPresentationController {
sheet.detents = [.medium(),.large()]
}
}
//遷移先画面 IBActionで下記のように設定。 ボタンを押すと、ハーフだったらラージへ、ラージだったらメディアムになるように設定する
animateChangesにすることによって、うまくアニメーションしてうごいていくれる。
@IBAction func change(_ sender: Any) {
if let sheet = self.sheetPresentationController {
if sheet.selectedDetentIdentifier == .medium {
sheet.animateChanges {
sheet.selectedDetentIdentifier = .large
}
} else {
sheet.animateChanges {
sheet.selectedDetentIdentifier = .medium
}
}
}
}
とても簡単に実装できました。