2017-12-23 20 views
0

アプリでコンテンツを作成するためのモーダルビューを表示したいと思います。iOS Mailアプリのようなスタイルが欲しいです。新しいメールを作成すると、トップ以外のほとんどの画面が表示されます。私は複数のモーダルセグスタイルを試してみて、全員がフルスクリーンを使います。 enter image description hereモーダルビューは、画面全体をコンパクトに塗りつぶすことはできませんか?

そして、私はこのような何か希望:私はこれを取得、私はすべてのプレゼンテーションスタイルを試してみた enter image description here

を。これまで共有していたコードはストーリーボードにすぎません。

答えて

0
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」を追加します。

関連する問題