IOS12 Flip TransitionWith: не работает должным образом - PullRequest
0 голосов
/ 22 октября 2018

При разработке приложения UI для тяжелых условий эксплуатации мне сообщили от команды QA, что «перевернутые» наши представления перестали работать должным образом.Астер тестирует проблему Мы заметили, что эта проблема только для IOS12.

Если вы протестируете код, который я добавил, даже для очень простого примера с двумя представлениями только с цветом фона, вы увидите, что в transitionWith: отображаемый вид не является анимированным, он просто скрыт.Скрытое представление корректно анимируется.

Опять же, это проблема только в IOS12 и отлично работает при переходе: От: до:

class ViewController: UIViewController {

    var firstView: UIView!
    var secondView: UIView!
    var containerView: UIView!

    var showBackView = false

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //containerView = UIView(frame: CGRect(x: 32, y: 32, width: 128, height: 128)) - // transitionFrom:To Code

        // General code
        firstView = UIView(frame: CGRect(x: 32, y: 32, width: 128, height: 128))
        secondView = UIView(frame: CGRect(x: 32, y: 32, width: 128, height: 128))

        firstView.backgroundColor = UIColor.red
        secondView.backgroundColor = UIColor.blue


        // transitionFrom:To Code
//        containerView.addSubview(firstView)
//        containerView.addSubview(secondView)
//        view.addSubview(containerView)


        // transitionWith: Code
        view.addSubview(firstView)
        view.addSubview(secondView)

        self.firstView.isHidden = false
        self.secondView.isHidden = true

        // General code
        let button = UIButton(frame: CGRect(x: 200, y: 200, width: 50, height: 50))
        button.addTarget(self, action: #selector(tappedButton), for: .touchUpInside)
        button.backgroundColor = UIColor.green
        view.addSubview(button)

    }

    @objc func tappedButton(sender: UIButton!) {
        flip()
    }

    func flip() {
        let transitionOptions: UIView.AnimationOptions = [.transitionFlipFromRight, .showHideTransitionViews]
        // transitionFrom:To Code
//        let toView = showBackView ? firstView : secondView
//        let fromView = showBackView ? secondView : firstView
//        UIView.transition(from: fromView!, to: toView!, duration: 1.0, options: transitionOptions, completion: nil)

        // transitionWith: Code
        print("******************")
        UIView.transition(with: firstView, duration: 3.0, options: transitionOptions, animations: {
            print(self.firstView.isHidden)
            print(self.secondView.isHidden)
            self.firstView.isHidden = !self.firstView.isHidden
        })

        print("----------------------")
        UIView.transition(with: secondView, duration: 3.0, options: transitionOptions, animations: {
            print(self.firstView.isHidden)
            print(self.secondView.isHidden)
            self.secondView.isHidden = !self.secondView.isHidden
        })
    }
}

Это известная проблема?Я не мог найти ссылку на это в Интернете;к сожалению, это ломает старые анимации.

1 Ответ

0 голосов
/ 29 ноября 2018

Я решил эту проблему с помощью transitionFrom: To: Но это не решение, это обходной путь.transitionWith: все еще тормозит на IOS12!

...