iOS 13中默认的卡片模态弹出窗口新增了一个很不错的功能,即可通过滑动取消。在使用传统的 .fullscreen
模态弹出窗口时,是否可以使用此功能呢?
我进行了检查,如果在全屏模式下 isModalInPresentation
是false.
有什么想法吗?
iOS 13中默认的卡片模态弹出窗口新增了一个很不错的功能,即可通过滑动取消。在使用传统的 .fullscreen
模态弹出窗口时,是否可以使用此功能呢?
我进行了检查,如果在全屏模式下 isModalInPresentation
是false.
有什么想法吗?
看起来,只有将模态呈现为sheet时,滑动以解除操作才有效,正如今年的wwdc所述:
那么,要支持Pull to Dismiss,你们需要做什么呢?通常不需要做任何事情。如果你将某物呈现为Sheet,则可以免费使用向下拉的功能。
这很有道理。当你将其呈现为sheet时,UI会让它看起来像是可以向下滑动模态。当你在全屏幕上呈现它时,对于用户来说,他应该向下滑动页面才能解除操作并不直观。在这种情况下,我宁愿使用一个按钮。
正如@pepsy所说,全屏视图不是通过滑动来解除的。但是,如果你仍然想尝试一下,这是我开始的内容
注意:当拖动时,父控制器不可见,有些小故障。
我向视图添加了一个UIPanGestureRecognizer来模拟滑动解除行为。我还有一个关闭(X)按钮,因为滑动手势不像对于表格那样直观。
@IBAction func panGestureRecognizerHandler(_ sender: UIPanGestureRecognizer) {
let translationY = sender.translation(in: sender.view!).y
switch sender.state {
case .began:
break
case .changed:
view.transform = CGAffineTransform(translationX: 0, y: translationY)
case .ended, .cancelled:
if translationY > 160 {
dismiss(animated: true, completion: nil)
} else {
UIView.animate(withDuration: 0.2, animations: {
self.view.transform = CGAffineTransform(translationX: 0, y: 0)
})
}
case .failed, .possible:
break
@unknown default:
break
}
}