作者:lyw | 来源:互联网 | 2022-10-21 19:49
iOS 13为模态呈现的视图控制器引入了modalPresentationStyle
.pageSheet
(及其兄弟姐妹.formSheet
)的新设计…
…我们可以通过向下滑动显示的视图控制器来消除这些页面(交互式消除)。尽管新的“拉动关闭”功能非常有用,但可能并不总是令人满意。
问题:我们如何关闭交互式解雇?
-请记住,我们保持演示文稿样式不变。
1> Jakub Truhlá..:
选项1:
viewController.isModalInPresentation = true
(禁用的交互式.pageSheet
解雇行为是这样的。)
由于iOS 13 UIViewController
包含一个名为的新属性isModalInPresentation
,必须将其设置true
为防止交互式解雇。
它基本上会忽略视图控制器范围之外的事件。如果您不仅在使用自动样式,还在使用演示样式(例如),请记住这一点.popover
。
false
默认情况下,此属性。
来自官方文档:如果为true
,则UIKit会忽略视图控制器范围之外的事件,并防止在屏幕上交互关闭视图控制器。
选项2:
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
return false
}
从iOS 13开始,UIAdaptivePresentationControllerDelegate
包含一个名为的新方法presentationControllerShouldDismiss
。
仅当未以编程方式关闭提供的视图控制器且其isModalInPresentation
属性设置为时,才调用此方法false
。
提示:不要忘记分配presentationController的委托。
如果提供的视图控制器是导航控制器,则可以在导航控制器上或导航堆栈中显示的各个视图控制器上设置`isModalInPresentation`。后者允许您逐个屏幕地选择是否可以进行交互式解雇。小心搜索控制器,它们优先于单个视图控制器(而不是导航控制器)。我的博客文章中的更多信息:https://medium.com/@hacknicity/view-controller-presentation-changes-in-ios-13-ac8c901ebc4e
2> Bilal..:
如果您希望获得与以前的iOS版本(UIModalPresentationStyle.fullScreen
let someViewCOntroller= \*VIEW CONTROLLER*\
someViewController.modalPresentatiOnStyle= .fullScreen
如果你使用的是故事板只需选择segua并选择Full Screen
形成Presentation
下拉。
如果您只想禁用交互式解雇并将新的演示文稿样式set UIViewController
属性设置isModalInPresentation
为true
。
if #available(iOS 13.0, *) {
someViewController.isModalInPresentation = true // available in IOS13
}