UIViewControllerを部分ビューとして表示する方法は?
今ショーとして画面やメールコンを演奏。そのような私の意見を提示する方法。私は、すべてのオプションがフルスクリーンをカバーするように見えるだけで、必要に応じて部分的なモーダルではないので、ストーリーボードだけでは完全に達成できないと想定しています。私はそれだけでは絵コンテに純粋に達成することができないと仮定してい
UIViewControllerを部分ビューとして表示する方法は?
今ショーとして画面やメールコンを演奏。そのような私の意見を提示する方法。私は、すべてのオプションがフルスクリーンをカバーするように見えるだけで、必要に応じて部分的なモーダルではないので、ストーリーボードだけでは完全に達成できないと想定しています。私はそれだけでは絵コンテに純粋に達成することができないと仮定してい
これは最近の質問ではありませんので、今後の使用のためにこれを入れています。うまくいけば、あなたはすでにそれを作っています。
まず、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を見ることができます)と(メインビューより小さい)別のビューを追加し、白にその色を設定するには、背景色を変更しようとすることができます
...
frame & alpha
になるはずです。
。 :)ただ私のアイデア –