Как создать правильную позицию вида снизу для ландшафтного режима, используя Swift? - PullRequest
0 голосов
/ 08 февраля 2019

Мой сценарий, я пытаюсь создать настоящий лист bottom с portrait и landscape совместимостью для приложения universal.Здесь я сделал animation для вида снизу present и dismiss, используя представление height и вычисление статической высоты.Здесь в режиме portrait все работает нормально, но если я изменяю ландшафтный режим, я получаю невыровненный нижний лист position, он показывает верхнюю часть экрана в режиме landscape, некоторое время не отображается.

Я использую приведенный ниже код,

    let cardHeight:CGFloat = 400
    let cardHandleAreaHeight:CGFloat = 0 

func setupCard() {
        visualEffectView = UIVisualEffectView()
        visualEffectView.frame = self.view.frame
        self.view.addSubview(visualEffectView)

        cardViewController = CardViewController(nibName:"CardViewController", bundle:nil)
        self.addChild(cardViewController)
        self.view.addSubview(cardViewController.view)

        cardViewController.view.frame = CGRect(x: 0, y: self.view.frame.height - cardHandleAreaHeight, width: self.view.bounds.width, height: cardHeight)

        cardViewController.view.clipsToBounds = true

    }

func animateTransitionIfNeeded (state:CardState, duration:TimeInterval) {
        if runningAnimations.isEmpty {
            let frameAnimator = UIViewPropertyAnimator(duration: duration, dampingRatio: 1) {
                switch state {
                case .expanded:
                    self.cardViewController.view.frame.origin.y = self.view.frame.height - self.cardHeight
                case .collapsed:
                    self.cardViewController.view.frame.origin.y = self.view.frame.height - self.cardHandleAreaHeight
                }
            }
}

Образец изображения для портретного режима

Образец изображения Пейзажный режим

...