模态视图是否有可能不能在整个屏幕上填充?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模态视图是否有可能不能在整个屏幕上填充?相关的知识,希望对你有一定的参考价值。

我想提出一个模态视图,用于在我的应用程序中创建内容,我想要像ios Mail应用程序这样的风格。撰写新邮件时,它会覆盖除顶部以外的大部分屏幕。我尝试了多种模态segue样式,所有这些都占据了整个屏幕。我明白了:enter image description here

我想要像这样的东西:enter image description here

我已经尝试了所有的演示风格。到目前为止,没有代码可以共享,这只是故事板。

答案
class ControllerForPresent: UIViewController {

var parentController: UIViewController!

func present(from parent: UIViewController) {
    parentController = parent
    parentController.view.superview!.backgroundColor = .black
    UIApplication.shared.keyWindow!.rootViewController!.addChildController(self)
    view.frame.origin.y = UIScreen.main.bounds.height
    view.frame.size.height = UIScreen.main.bounds.height - 40
    UIView.animate(0.45, damping: 1, velocity: 1, options: .allowUserInteraction) {
        self.parentController.view.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
        self.view.frame.origin.y = 40
    }
}

@objc private func close() {
    UIView.animate(0.3, animation: {
        self.parentController.view.transform = .identity
        self.view.frame.origin.y = UIScreen.main.bounds.height
    }, completion: {
        self.parentController.view.superview!.backgroundColor = .white
        self.removeFromParent()
    })
}
}

 class ControllerThatPresents: UIViewController {

     private func showAnotherController() {
        let vc = storyboard!.instantiateViewController(withIdentifier: "ControllerForPresentId") as! ControllerForPresent
        vc.present(from: self)
     }
 }

还要向要呈现的控制器添加标识符“ControllerForPresentId”。

以上是关于模态视图是否有可能不能在整个屏幕上填充?的主要内容,如果未能解决你的问题,请参考以下文章

ipad屏幕右半边的模态视图?

确定是不是正在显示模态视图控制器

如何在 RecyclerView 中填充整个屏幕

Facebook 在小模式视图中登录

是否可以使滚动视图不覆盖整个屏幕?

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉