2016-11-21 4 views
0
 if !UIAccessibilityIsReduceTransparencyEnabled() { 
      self.blurOutletTop.backgroundColor = UIColor.clear 

      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 

      let blurEffectView = UIVisualEffectView(effect: blurEffect) 
      blurEffectView.frame = self.blurOutletTop.bounds 
      blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

      self.view.addSubview(blurEffectView) 

      //self.logoOutlet.addSubview(blurEffectView) 

     } 
     else { 
      self.view.backgroundColor = UIColor.black 
     } 
    } 

У меня есть размер UIView на навигационной панели вверху моего экрана. Вышеприведенный код добавляет к нему эффект размытия. То, что я пытаюсь сделать, это добавить мои кнопки навигации на вершине представления, чтобы они не были размыты, но делать это просто через раскадровку приводит к тому, что кнопки также размыты.Добавление подсмотра в размытый вид

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

self.logoOutlet.addSubview(blurEffectView) 

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

Что является самым простым способом получить мои кнопки/изображения над верхней частью моего blurTopOutlet?

ответ

1

Я подклассифицировал UIVisualEffectView в коде, а затем добавил в него все виды элементов управления. Очень приятный эффект. Не уверен, что это можно сделать на 100% через IB, хотя из-за ожидания ожиданий иерархии.

  • (1) Создайте «основной» вид в IB и добавьте ограничения. Альтернативой здесь является то, что я сделал, подкласс UIVisualEffectView.
  • (2) Создайте «основные» представления в виде кода, добавьте их в «основное» представление и добавьте ограничения в код.
  • (3) Поскольку вам нужны определенные действия, связанные с некоторыми подзонами (UIButtons), также обязательно используйте код addTarget (target: for :) вызывает их.

ADDED EDIT: Вы можете сделать большую часть этого через IB. Задайте все, и, поскольку UIButtons являются подчиненными вашему размытому виду, попробуйте использовать showSubview (ToFront :). Если это сработает, это, наверное, намного проще! (Я старая школа и как кодирование вещи больше.)

0

вместо добавления blurEffectView к logoOutlet:

logoOutlet.addSubview(blurEffectView) 

вы должны добавить logoOutlet к blurEffectView в:

blurEffectView.contentView.addSubview(logoOutlet) 
Смежные вопросы