Swift iOS - второе UIWindow иногда анимирует от неправильных координат

У меня есть кнопка внутри VC. Когда я нажимаю эту кнопку, я запускаю второе окно UIWindow из нижнего правого угла экрана. По какой-то причине, когда он запускается, он иногда запускается из нижнего правого угла, как и предполагалось, но в других случаях он запускается из верхнего левого угла или середины экрана. Я пробовал звонить window.layoutIfNeeded() внутри анимации, но это фактически испортило весь макет.

Почему он не начинается последовательно с правого нижнего угла экрана?

Второе окно начинается с небольшого кадра 10x10 в / ч в нижнем правом углу экрана, а затем анимируется в положение x/y 0,0, чтобы заполнить весь экран.

@IBAction fileprivate func launchSecondWindowButton(_ sender: UIButton) {

    guard let mainWindow = UIApplication.shared.keyWindow else { return }

    let myVC = MyController()
    let nav = UINavigationController(rootViewController: myVC)
    nav.navigationBar.isHidden = true

    // starts from a small 10x10 w/h frame in the lower right hand corner of the screen
    let startingFrame = CGRect(x: mainWindow.frame.width - 10, y: mainWindow.frame.height - 10, width: 10, height: 10)

    let secondWindow = UIWindow(frame: startingFrame)
    secondWindow.windowLevel = UIWindowLevelStatusBar
    secondWindow.rootViewController = nav
    secondWindow.makeKeyAndVisible()

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {

        secondWindow.frame = mainWindow.frame // this is the entire screen
        // secondWindow.layoutIfNeeded() didn't help
    }
}

0 ответов

Другие вопросы по тегам