具有几个子视图的白色全屏视图,例如几个标签。
{放在一边-我总是使这样的视图“逻辑地”旋转,这正是娜塔莎HERE所解释的。我是在与行为有关的情况下提及这一点的,但是无论如何,这种行为似乎都会发生。}
旋转iPhone时...
让一切消失,
class CalmRotation: UIViewController {
override func willTransition(to newCollection: UITraitCollection,
with coordinator: UIViewControllerTransitionCoordinator) {
for v in view.subviews { v.alpha = 0 }
旋转后,将它们带回...
let s = coordinator.transitionDuration * 0.5
coordinator.animate(alongsideTransition: { _ in
},completion: { [weak self] _ in
for v in self?.view.subviews ?? [] {
UIView.animate(withDuration:s, animations:{v.alpha = 1})}
})
super.willTransition(to: newCollection, with: coordinator)
}
在任何模拟器中,在当今新的Xcode中尝试此操作。点击命令箭头以旋转该吸盘。
请注意闪烁。
在alpha = 0时,标签并不想消失。
(如果您只是简单地放弃复出动画,那没有什么区别,您仍然会在模拟器中看到闪烁。显然,每次都重新启动存根应用进行测试,因为视图将消失。)
所以有一个闪烁。
但是,它似乎确实可以在设备上正常工作。
但是可能是“假阳性”-因为旋转是在设备上触发得如此缓慢。
实际上,实际上是否存在一个名为“ will .. WillTransition”的调用,以便我们可以知道过渡即将发生?通常,这似乎是在过渡发生之前做您想做的事情的一种更好的方法,并且大概可以解决此类闪烁事件。
我是否在上面的代码中添加了其他可以让人们发现闪烁的内容?
如果这是模拟器中的缺陷,您会认为它是众所周知的,因此这似乎值得怀疑。