Как сделать так, чтобы UIViewController скользил снизу вверх, не исчезая из предыдущего вида? - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю новое приложение с помощью Swift и хотел бы скользить моим UIViewController снизу вверх с помощью UINavigationController, но мое текущее решение затухает по сравнению с предыдущим представлением.

Это раздражающее затухание выглядит следующим образом: https://i.imgur.com/wAcO9IS.jpg

Я использую Swift 4.2 и XCode 10. Я тестирую свое приложение на своем iPhone 7 Plus с iOS 12.0.

В настоящее время я использую это решение для перемещения вида снизу вверх:

let transition = CATransition()
transition.duration = 0.3
transition.timingFunction = CAMediaTimingFunction(name: 
    CAMediaTimingFunctionName.easeInEaseOut)
transition.type = CATransitionType.moveIn
transition.subtype = CATransitionSubtype.fromTop
navigationController?.view.layer.add(transition, forKey: nil)
navigationController?.pushViewController(LoginScreen(), animated: false)

и это решение для перемещения сверху вниз:

// same code
transition.type = CATransitionType.reveal
transition.subtype = CATransitionSubtype.fromBottom
// same code
navigationController?.popToRootViewController(animated: false)

Я хочу сдвинуть свой UIViewController снизу вверх и наоборот, без выцветания предыдущего UIViewController, но теперь мойрешение исчезает из предыдущего UIViewController.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

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

let loginScreenVC = storyboard?.instantiateViewController(withIdentifier: "LoginScreen") as! LoginScreen
loginScreenVC.modalPresentationStyle = .overCurrentContext
self.present(loginScreenVC, animated: true)
//might be as well:
//navigationController?.present(loginScreenVC, animated: true)

ОБНОВЛЕНИЕ:

Если вы хотите закрыть его, просто позвоните:

self.dismiss(animated: true, completion: nil)
0 голосов
/ 18 февраля 2019

Есть много способов сделать это наилучшим образом, я бы посоветовал вам просто посмотреть эти видео, здесь я делюсь только одной ссылкой, но вы можете получить другие 2 части по просмотру этого видео по ссылке: https://youtu.be/k-GvIqh5Xcs

Я уверен, что это, безусловно, будет лучшим решением для вашего вопроса.☺️

...