При разработке приложения 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
})
}
}
Это известная проблема?Я не мог найти ссылку на это в Интернете;к сожалению, это ломает старые анимации.