Не в состоянии анимировать UIView, который является подпредставлением UIWindow - PullRequest
0 голосов
/ 28 октября 2019

Я создал собственный класс, в котором я получаю parentViewController и cardViewController. Затем я добавляю blackView (с 0,4 альфа) к keyWindow, и на этом 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 +)

1 Ответ

0 голосов
/ 28 октября 2019

Вы не должны использовать UIWindow ни для чего, кроме установки исходного RootViewController на нем, если только вы не создаете приложение, имеющее некоторую внешнюю проекцию на другой экран.

Вы должны устанавливать UIWindows, только если вы пытаетесьиспользуйте программный подход либо в вашем AppDelegate.swift pre XCode 11

    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. Но если вы создали пользовательский вид, вам следует создать подкласс UIView вместо UIViewController, а затем использовать view.addSubview(yourCustomUIView) в соответствующем viewController.

Если вы можете отредактировать свой вопрос, чего именно вы пытаетесь достичь, и показать больше своихкод. Мы могли бы помочь лучше. Код, который вы включили в свой AppDelegate ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...