Подтвердить что ты не робот

Стандартная реализация размытия iOS 7

Я прочитал десятки вопросов о подражании эффекту размытия iOS 7 в более ранних версиях iOS. Но основной вопрос, который возникает здесь, заключается в том, действительно ли iOS 7 UIKit имеет приятный и удобный способ сделать любой UIView размытым? Это кажется мне вполне логичным. Любая помощь была оценена.

4b9b3361

Ответ 1

UPDATE

Начиная с iOS 8.0 (не iOS 7), UIKit предоставляет UIVisualEffectView и UIBlurEffect. Вы можете смотреть WWDC 2014 Session 419 "Расширенная графика и анимация для приложений iOS" (или просто скачать слайды) для ознакомления с этими классами.

ORIGINAL

Нет, это не так. Apple не раскрывает интерфейс для этого. Например, если вы читаете это обсуждение, ответы Rincewind должны ясно дать понять, что Apple не предоставляет публичный API для этого, и что частные API, которые они используют, имеют серьезные ограничения и могут измениться.

Вы должны реализовать эффект размытия самостоятельно. Вероятно, вы захотите использовать новый метод -[UIView drawViewHierarchyInRect:afterScreenUpdates:], чтобы захватить внешний вид фона, а затем применить к нему CIFilter для выполнения размытия.

Ответ 2

Apple предоставила образец кода, чтобы размыть любой UIImage в стиле iOS 7.

Перейдите в папку Apple Developer и войдите в систему, если необходимо. Найдите "imageeffects", чтобы открыть запись WWDC 2013 Sample Code, и загрузите образец iOS_UIImageEffects.

В этом проекте есть категория UIImage в UIImage+ImageEffects.h, которую вы можете скопировать в свой собственный проект, содержащий метод applyBlurWithRadius:....

Вам нужно будет связать свой проект с каркасом Accelerate.

Это не будет автоматически делать размытие изображения в реальном времени - для этого см. FXBlurView, который выполняет аналогичную технику, автоматически снижая его супервизор. Это может быть довольно интенсивным, хотя: сначала подумайте, сможете ли вы добиться того, чего хотите, статически смазывая изображение, вместо того, чтобы пытаться "жить" - перемещать содержимое.

Ответ 3

UIKit не имеет удобного способа достижения этого эффекта. Однако есть несколько библиотек в Github, которые легко достигают этого эффекта. Ник Локвуд, кажется, самый популярный.