Размытие фона UITableViewController не отображается с помощью прокрутки

Я установил фоновое изображение для своего UITableViewController, а затем добавил эффект размытия с помощью следующего кода:

 var blur = UIBlurEffect(style: UIBlurEffectStyle.Dark)
 var blurView = UIVisualEffectView(effect: blur)
 blurView.frame = self.view.bounds
 self.view.insertSubview(blurView, atIndex: 0)

Когда я прокручиваю вниз, фоновое изображение все еще там, но эффект размытия присутствует только для первых нескольких ячеек, которые одновременно помещаются в представление. Как я могу сделать так, чтобы эффект размытия присутствовал при прокрутке?

Я попытался добавить эффект размытия к каждой ячейке, но это выглядит очень странно.


person shaydawg    schedule 26.11.2015    source источник


Ответы (1)


Для UITableViewControllers self.view является UITableView самим собой. Это означает, что любое подпредставление, которое вы добавляете в self.view, будет прокручиваться вместе с содержимым табличного представления.

Вы можете либо создать собственный UIViewController, настроить UITableView вручную и поместить его перед представлением размытия (вместо размещения представления размытия внутри представления таблицы), либо вы можете переместить расположение представления размытия при прокрутке представления таблицы.

Чтобы переместить представление размытия, чтобы компенсировать смещение представления таблицы, вы можете сделать что-то вроде этого:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    var blurViewFrame = CGRect()
    blurViewFrame.size = view.bounds.size
    blurViewFrame.y = tableView.contentOffset.y
    blurView.frame = blurViewFrame
}
person fluidsonic    schedule 26.11.2015