我创建了一个UITableViewController
,每个单元格都使用UIVisualEffectView
应用了模糊效果。我还有一个模糊的背景,该背景是在表视图链接到的UITabBarViewController
中创建的。应用于每个单元格的额外模糊效果为我正在设计的UI增添了不错的触感,并且它在大多数情况下都有效。
问题
一切正常,直到我从表中删除一个项目。这样做会导致整个表视图出现损坏。删除动画完成后,一切都恢复正常。
我尝试通过代码和故事板应用UIVisualEffectView
,问题无论如何都是一致的。使用代码时,我在这里应用效果:
// 'cell' is the cell being configured in tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
visualEffectView.frame = cell.bounds
cell.insertSubview(visualEffectView, atIndex: 0)
注意:经过更多测试后,我缩小了问题范围。通过故事板或使用cell.backgroundColor = UIColor.clearColor()
的代码将单元格设置为清晰颜色时,将显示损坏的动画。事实上,它为任何具有一些或完全透明度的颜色执行此操作。如果没有透明度,问题就会停止,但UITabBarController
的背景将不再可见。
我的问题
如何在保持相似/相同外观的同时修复受损动画?
如果您想看看我如何将模糊添加到UITableViewController
,请点击此处:
class MainTabBarViewController: UITabBarController, UITabBarControllerDelegate {
var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
imageView = UIImageView(image: UIImage(named: "Sunset"))
imageView.frame = self.view.bounds
imageView.contentMode = .ScaleAspectFill
view.insertSubview(imageView, atIndex: 0)
let blurEffect = UIBlurEffect(style: .Light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = imageView.bounds
view.insertSubview(blurEffectView, aboveSubview: imageView)
}
//...
这就是在模拟器上看到的动画损坏情况(同样的事情也发生在物理设备上):