Как создать переход, чтобы скользить и исчезать одновременно (Xcode 9, Swift 4) - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать пользовательский переход, который скользит справа и выдвигается (как по умолчанию Push segue), но также исчезает и исчезает при скольжении / выходе.Я думаю, что я выяснил код затухания для перехода к контроллеру представления назначения, но не могу понять, как заставить представление скользить слева и скользить вправо.Я думал, что это как-то связано с конечными и ведущими ограничениями представления, но я не совсем уверен, как ссылаться на эти ограничения в моем пользовательском классе segue.Я знаю, что вы можете подключить ограничения к коду, используя IBOutlets для определенных контроллеров представления, но я хочу использовать этот же собственный класс segue для пользовательских сегментов во всех моих контроллерах представления.

Мне также было интересно, как сделать так, чтобы segue ссылался на класс sewwind для перехода от контроллера представления назначения к контроллеру представления источника.Например, когда я нажимаю на переход в раскадровке, в текстовом поле «класс» я помещаю имя класса для перехода, который переходит к контроллеру представления назначения, но где бы я сделал то же самое для перехода назад, чтобы, когдаЯ нажимаю назад, он также выполняет пользовательский переход, чтобы вернуться к контроллеру исходного представления.

Это код, который я до сих пор делал для перехода, который переходит к контроллеру представления назначения (еще не начался при переходе назад, но я думаю, что это будет почти то же самое).В нижней части класса я начал опробовать свойства привязки, но они не работали.Спасибо!

class DimSegue: UIStoryboardSegue {

    override func perform() {
        // Get the view of the source
        let sourceViewControllerView = self.source.view
        // Get the view of the destination
        let destinationViewControllerView = self.destination.view

        let screenWidth = UIScreen.main.bounds.size.width
        let screenHeight = UIScreen.main.bounds.size.height

        // Make the destination view the size of the screen
        destinationViewControllerView?.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)

        // Insert destination below the source
        // Without this line the animation works but the transition is not smooth as it jumps from white to the new view controller
        destinationViewControllerView?.alpha = 0;
        sourceViewControllerView?.addSubview(destinationViewControllerView!);

        let margins = destinationViewControllerView?.superview?.layoutMarginsGuide

        // Animate the fade, remove the destination view on completion and present the full view controller
        UIView.animate(withDuration: 1, delay: 0, options: .curveLinear, animations: {

            destinationViewControllerView?.leadingAnchor.constraint(equalTo: (margins?.leadingAnchor)!, constant: 1000)

            destinationViewControllerView?.trailingAnchor.constraint(equalTo: (margins?.trailingAnchor)!, constant: 1000)

            destinationViewControllerView?.layoutIfNeeded()

            destinationViewControllerView?.alpha = 1

        }, completion: nil )


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