无法为作为UIWindow子视图的UIView设置动画

问题描述 投票:0回答:1

我创建了一个自定义类,在其中获得了parentViewControllercardViewController。然后我在blackView上添加了keyWindow(带有0.4 alpha),并在keyWindow上添加了cardViewController.view.

事实是它最初显示,但是交互/滑动手势在名片视图上不起作用。

这里是代码:

    window = UIApplication.shared.keyWindow!

    blackView.backgroundColor = UIColor.black
    blackView.alpha = 0.4
    window.addSubview(blackView)
    blackView.frame = window.frame

    blackView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTapRecognizer)))

    window.addSubview(cardViewController.view)

    card.translatesAutoresizingMaskIntoConstraints = false
    cardHeightConstraint = card.bottomAnchor.constraint(equalTo: window.bottomAnchor, constant: containerView.bounds.height - (self.headerHeight ?? 0))
    card.leadingAnchor.constraint(equalTo: window.leadingAnchor).isActive = true
    card.trailingAnchor.constraint(equalTo: window.trailingAnchor).isActive = true
    card.heightAnchor.constraint(equalToConstant: containerView.bounds.height).isActive = true
    cardHeightConstraint.isActive = true

以上代码在类的初始化中被调用。我看到的是:

enter image description here

如果我不添加blackView,并且不执行与UIWindow相关的任何操作,而只是简单地将cardViewController作为子级添加到parentViewController,则所有动画和名片手势均应正常工作。仅当将卡添加到UIWindow时,卡视图上的动画和滑动手势才起作用。

我该怎么办?帮助将不胜感激。 (使用Xcode 11,iOS 13 +)

ios swift animation uiwindow keywindow
1个回答
0
投票

除非您要在其上设置初始RootViewController,否则您不应将UIWindow用于其他任何事情,除非您创建的应用程序具有对其他屏幕的某些外部投影。

[如果您尝试在XCode 11之前的AppDelegate.swift中使用程序化方法,则仅应设置UIWindows。>

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    window?.rootViewController = TabBarViewController()

    return true
}

尚不清楚您要使用CardViewController实现的目标。但是,如果您已经创建了一个自定义View,则应该继承UIView而不是UIViewController,然后在相应的viewController中使用view.addSubview(yourCustomUIView)

如果您可以编辑您的问题,您到底想达到什么目的并显示更多代码。我们可以提供更好的帮助。您是否从AppDelegate中包含了代码?

© www.soinside.com 2019 - 2024. All rights reserved.