Мой сценарий, я пытаюсь создать настоящий лист 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
}
}
}
Образец изображения для портретного режима
Образец изображения Пейзажный режим