Я пытаюсь создать приложение с универсальным фоновым изображением.Поскольку большинство моих фонов ViewController настроены на прозрачный цвет, это представляет проблему для большинства переходов.Мое решение состояло в том, чтобы попытаться создать этот пользовательский класс segue, который перемещает исходный VC влево и вытягивает новый VC справа.Однако я получаю эту ошибку:
Поток 1: EXC_BAD_ACCESS (код = 2, адрес = 0x16ecb3ff0
В конструкторе интерфейса Storyboard Segue: у меня есть пользовательский класссвязать, и установить вид «Пользовательский». Анимация включена. Этот переход работает с моего виртуального экрана входа в систему на Забыли пароль ВК, но не работает, если я использую его на своих контактах ВК для добавления контакта ВК.
Не уверен, почему он работает на одном, а не на другом? Я просто делаю все это неправильно? (Я новичок в разработке и изучении iOS)
class PushSegue: UIStoryboardSegue {
override func perform() {
push()
}
func push () {
let toViewController = self.destination
let fromViewController = self.source
let containerView = fromViewController.view.superview
let originalCenter = fromViewController.view.center
fromViewController.view.transform = CGAffineTransform(translationX: 0, y: 0)
fromViewController.view.center = originalCenter
toViewController.view.transform = CGAffineTransform(translationX: 600, y: 0)
toViewController.view.center = originalCenter
containerView?.addSubview(toViewController.view)
UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: { toViewController.view.transform = CGAffineTransform.identity
fromViewController.view.transform = CGAffineTransform (translationX: -600, y: 0)
}, completion: {success in
fromViewController.present(toViewController, animated: false, completion: nil) //Crashes here
})
}
}
class UnwindPushSegue: UIStoryboardSegue {
override func perform() {
push()
}
func push () {
let toViewController = self.destination
let fromViewController = self.source
fromViewController.view.superview?.insertSubview(toViewController.view, at: 0)
toViewController.view.superview?.insertSubview(toViewController.view, at: -600)
UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: { fromViewController.view.transform = CGAffineTransform.init(translationX: 600, y: 0)
toViewController.view.transform = CGAffineTransform.init(translationX: 0, y: 0)
}, completion: {success in
fromViewController.dismiss(animated: false, completion: nil)
})
}
}
Я бы ожидал, что контроллер представления исходного кода будетдвигайтесь влево, однако он не двигается влево. Новый VC входит справа, но я все еще могу видеть контроллер представления источника внизу.