Как реализовать представления визуальных эффектов в Interface Builder?

Как вы используете представления визуальных эффектов с размытием и яркостью в Interface Builder?

Я перетащил этот элемент в представление, а затем перетащил UILabel в последнее представление в иерархии — я предполагаю, что яркий эффект contentView. Это приводит к размытому изображению сверху, но метка не видна. В любом другом месте я размещаю метку в иерархии, она становится видимой, но это просто сплошной черный текст.

введите здесь описание изображения


person Jordan H    schedule 25.10.2014    source источник


Ответы (1)


Наконец-то разобрался.

  1. В UIViewController измените фон представления на синий.
  2. Перетащите объект Visual Effect Views с Blur и Vibrancy в представление, чтобы оно было добавлено в качестве подпредставления.
  3. В первом представлении визуальных эффектов настройте ограничения Auto Layout для содержащего его представления: Leading, Trailing, Top и Bottom (чтобы эффект размытия заполнил экран).
  4. Разверните представление, которое является подвидом первого представления визуальных эффектов, чтобы открыть второе представление визуальных эффектов.
  5. Настройте ограничения автоматического макета для этого представления визуальных эффектов, снова установите все края в его содержащее представление, чтобы заполнить экран - обязательно измените константы на 0
  6. Разверните второе представление визуальных эффектов, чтобы открыть окончательный вид.
  7. Перетащите UILabel в сцену как подпредставление последнего представления.
  8. Настройте ограничения Auto Layout для этой метки на содержащее ее представление — возможно, Leading и Top с константами 15.
  9. Измените цвет текста этикетки на чисто белый с альфа-каналом 0,5.
  10. Измените стиль на темный для обоих представлений визуальных эффектов в инспекторе атрибутов (просто чтобы лучше показать эффект)
  11. Запустите приложение на устройстве, которое поддерживает полный эффект яркости (iPhone 5+, iPad Air+).

Вуаля!
Скриншот iPhone 6
А вот так это выглядит в конструкторе интерфейсов:

введите здесь описание изображения

person Jordan H    schedule 07.01.2015
comment
Извините, вы имели в виду alpha вместо opacity? Если нет, то как вы изменили opacity на этикетке? Спасибо. - person Cesare; 08.03.2015
comment
Если вы хотите представить его в виде presentViewController, обязательно установите для параметра Presentation значение Over Current Context. См. xmcgraw.com/a-smooth-introduction-to-uivisualeffectview - person mllm; 04.07.2016
comment
Если кто-то хочет знать, чтобы удалить размытие, просто установите для обоих визуальных эффектов яркие цвета. - person Jeff; 04.05.2018