2017-06-01 3 views
0

どのようにしてプレゼンテーションモーダルをカスタムサイズにすることができますか?さまざまなソリューションの多くを試してみました、Swiftのモーダル表示のカスタムサイズを設定すると、フルスクリーンで表示されます。

時代遅れに見えるその多くは、これは私が親ビューコントローラからモーダルビューをインスタンス化する方法である:モーダルビューだけではなく、100 *を占めるのフルスクリーンをカバーし、

self.definesPresentationContext = true 
let vc = (storyboard?.instantiateViewController(withIdentifier: "modalViewController"))! 
vc.modalPresentationStyle = .overCurrentContext 
vc.preferredContentSize = CGSize(width: 100, height: 100) 
present(vc, animated: true, completion: nil) 

しかし、 100.

答えて

1

提示されたUIViewControllerサイズをカスタマイズするには、UIViewControllerTransitioningDelegateメソッドとUIViewControllerAnimatedTransitioningメソッドを実装する必要があります。

を参照してください、カスタムアニメーターを実装する方法を知っている:https://github.com/pgpt10/Custom-Animator

編集:

class ViewController: UIViewController 
{ 
    //MARK: Private Properties 
    fileprivate let animator = Animator() 

    //MARK: View Lifecycle Methods 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    override func awakeFromNib() 
    { 
     super.awakeFromNib() 
     self.transitioningDelegate = self 
     self.modalPresentationStyle = .custom 
    } 

    //MARK: Button Action Methods 
    @IBAction func dismissController(_ sender: UIButton) 
    { 
     self.dismiss(animated: true, completion: nil) 
    } 
} 

// MARK: - UIViewControllerTransitioningDelegate Methods 
extension ViewController : UIViewControllerTransitioningDelegate 
{ 
    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? 
    { 
     self.animator.transitionType = .zoom 
     self.animator.size = CGSize(width: 100, height: 100) 
     return self.animator 
    } 

    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? 
    { 
     return self.animator 
    } 
} 
+0

ありがとう!これらは親ビューコントローラ上のメソッドです。 – salient

+0

これはモーダルの位置も制御できますか? – salient

+0

はい、カスタマイズできます。 – PGDev

関連する問題