2017-03-02 36 views
1

enter image description here如何將UIViewController作爲局部視圖呈現?

enter image description here 音樂正在播放畫面和郵件撰寫的表演。如何呈現我的意見。我假設它不能單純地在故事板上實現,因爲所有選項似乎都覆蓋了整個屏幕,而不是根據需要覆蓋部分模式。

+0

你可以嘗試改變背景色以清除(所以你能夠看到的viewController這是下文),並添加另一種觀點認爲(除主視圖小)和其顏色設置爲白色。 :)只是我的想法 –

回答

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 
    }) 

不要忘了添加反向動畫。結果:

result!

1

我假設它不能單單純粹的故事板實現...

相關問題