У меня возникли проблемы с созданием пользовательского segue с помощью быстрых 3 и iOS 8. Я пытаюсь перейти между контроллерами представлений, затухая от одного VC до черного экрана и затем исчезать от черного до моего второго VC , Я попытался реализовать segue, создав пользовательский segue, используя код ниже, но он не работает так, как мне бы хотелось. Моя цель состоит в том, чтобы выполнить анимацию, когда черный квадрат идет от 0,5 альфа до 1,0 альфа, затем представит мой второй контроллер представлений, затем установите черный квадрат с 1.0 alpha обратно в 0.5 alpha и удалите его. Прямо сейчас, он выполняет первую часть правильно, но после окончания анимации вы можете увидеть первый VC в течение короткого момента до появления второго VC. Как мне изменить свой код, чтобы сделать переход более плавным и получить желаемый результат?Пользовательский Segue Class UIView Animation Issue
override func perform() {
let sourceVC = self.source
let destinationVC = self.destination
let square = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
square.alpha = 0.5
square.backgroundColor = UIColor.black
sourceVC.view.addSubview(square)
UIView.animate(withDuration: 0.2, animations: {
square.alpha = 1.0
})
UIView.animate(withDuration: 0.2, delay: 0.2, animations: {
square.alpha = 0.5
}) { (finished) in
sourceVC.present(destinationVC, animated: false, completion: nil)
}
}
Просто обновленный ответ попробовать и дайте мне знать, если не исправить. –
хорошо исправлена старая проблема, но теперь вторая часть анимации, похоже, не запускается. Черный квадрат переходит в 1.0 alpha, а затем, кажется, исчезает, и вместо этого появляется destinationVC. –
Запишите всю задачу обновления пользовательского интерфейса в этом блоке DispatchQueue.main.async {} как обновление альфа и т. Д. –