2017-03-02 3 views
1

enter image description hereUIViewControllerを部分ビューとして表示する方法は?

enter image description here 今ショーとして画面やメールコンを演奏。そのような私の意見を提示する方法。私は、すべてのオプションがフルスクリーンをカバーするように見えるだけで、必要に応じて部分的なモーダルではないので、ストーリーボードだけでは完全に達成できないと想定しています。私はそれだけでは絵コンテに純粋に達成することができないと仮定してい

+0

。 :)ただ私のアイデア –

答えて

1

これは最近の質問ではありませんので、今後の使用のためにこれを入れています。うまくいけば、あなたはすでにそれを作っています。

まず、this UIPresentationController guideに従ってください。

次に、ビューコントローラーフレームを画面の2/3より大きく調整します。

override func containerViewWillLayoutSubviews() { 
    presentedView?.frame = frameOfPresentedViewInContainerView 
    presentedView?.layer.cornerRadius = 5.0 
    presentedView?.layer.masksToBounds = true 
} 

override func size(forChildContentContainer container: UIContentContainer, 
        withParentContainerSize parentSize: CGSize) -> CGSize { 
    switch direction { 
     case .left, .right: 
      return CGSize(width: parentSize.width*(2.0/3.0), height: parentSize.height) 
     case .bottom, .top: 
      return CGSize(width: parentSize.width, height: parentSize.height-40.0) 
    } 
} 

override var frameOfPresentedViewInContainerView: CGRect { 
    var frame: CGRect = .zero 
    frame.size = size(forChildContentContainer: presentedViewController, 
       withParentContainerSize: containerView!.bounds.size) 

    switch direction { 
     case .right: 
      frame.origin.x = containerView!.frame.width*(1.0/3.0) 
     case .bottom: 
      frame.origin.y = 40.0 
     default: 
      frame.origin = .zero 
    } 
    return frame 
} 

次に、調光アニメーション中ビュー・コントローラ・フレームを提示を設定します。

self.presentingFrame = self.presentingViewController.view.frame 
    var frame = self.presentingFrame 
    frame.size.width -= 40.0 
    frame.size.height -= 60.0 
    frame.origin.x += 20.0 
    frame.origin.y += 30.0 

    coordinator.animate(alongsideTransition: { _ in 
     self.dimmingView.alpha = 1.0 

     self.presentingViewController.view.frame = frame 

     self.presentingViewController.view.layer.cornerRadius = 5.0 
     self.presentingViewController.view.layer.masksToBounds = true 

     UIApplication.shared.statusBarStyle = .lightContent 
    }) 

リバースアニメーションも忘れずに追加してください。結果:あなたはクリアにします(以下でのViewControllerを見ることができます)と(メインビューより小さい)別のビューを追加し、白にその色を設定するには、背景色を変更しようとすることができます

result!

1

...

  • はい、それはすることはできません。
    遷移を得るためにCustom View Controller Transition Animationの実装を評価すると、右に&の遷移が表示され、提示されたView Controllerのサブビューの操作がちょうどframe & alphaになるはずです。
関連する問題