小编pmi*_*ick的帖子

如何通过自定义转换在当前上下文中呈现视图控制器?

我遇到了视图控制器包含问题,并希望使用自定义演示文稿/动画呈现视图控制器"当前上下文".

我有一个根视图控制器,它有两个子视图控制器,可以作为子项添加到根目录中.当这些子视图控制器呈现视图控制器时,我希望该呈现是在当前上下文中,以便当从视图中移除所呈现的子项时,所述呈现的模式也将被移除.此外,如果子A呈现视图控制器,我会期望子B的'presentViewController'属性在"当前上下文"演示中为零,即使A仍然呈现.

当我将modalPresentationStyle我呈现的视图控制器设置为overCurrentContext,并且子视图控制器definesPresentationContext设置为true 时,一切都按预期工作.

如果我已经modalPresentationStyle设置custom并覆盖shouldPresentInFullscreen在我的自定义演示控制器中返回false,那么当我期望它时,这不起作用.

这是一个说明问题的示例:

import UIKit

final class ProgressController: UIViewController {
    private lazy var activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
    private lazy var progressTransitioningDelegate = ProgressTransitioningDelegate()

    // MARK: Lifecycle

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

        setup()
    }

    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        setup()
    }

    override public func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor(white: 0, alpha: 0)

        view.addSubview(activityIndicatorView)
        activityIndicatorView.startAnimating()
    } …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uikit ios swift

8
推荐指数
1
解决办法
2813
查看次数

标签 统计

cocoa-touch ×1

ios ×1

swift ×1

uikit ×1