删除单元格时,UITableViewCell中的UIVisualEffectView会中断

时间:2016-06-04 18:53:22

标签: ios swift uitableview tableviewcell uivisualeffectview

我创建了一个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)
    }

    //...

这就是在模拟器上看到的动画损坏情况(同样的事情也发生在物理设备上):

enter image description here

0 个答案:

没有答案