Кто-нибудь знает какие-либо элементы управления, которые будут копировать виды размытия в стиле iOS7.
Я предполагаю, что может быть какой-то подкласс UIView, который будет копировать поведение.
Я говорю об этих типовых представлениях, которые очень сильно размывают фон, так что они имеют эффекты вытягивания из фонового представления.
Ответы:
Для этого вы могли бы изменить что-то вроде RWBlurPopover Бин Чжана . Этот компонент использует мой GPUImage для применения размытия по Гауссу к компонентам, находящимся под ним, но вы также можете легко использовать CIGaussianBlur для того же. Хотя GPUImage может быть на волосок быстрее .
Однако этот компонент полагается на то, что вы можете захватить представление, стоящее за тем, которое вы представляете, и могут иметь проблемы с представлениями, которые анимируются за этим содержимым. Необходимость пройти через Core Graphics для растеризации фонового представления замедлит работу, поэтому у нас, вероятно, не будет достаточно прямого доступа, чтобы иметь возможность делать это эффективным способом для наложений при анимации представлений.
В качестве обновления вышесказанного я недавно переработал размытие в GPUImage для поддержки переменных радиусов, что позволило полностью воспроизвести размер размытия в представлении центра управления iOS 7. Исходя из этого, я создал класс GPUImageiOS7BlurFilter, который инкапсулирует правильный размер размытия и коррекцию цвета, которые Apple, похоже, использует здесь. Вот как размытие GPUImage (справа) сравнивается со встроенным размытием (слева):
Я использую 4-кратное понижение / повышающую дискретизацию, чтобы уменьшить количество пикселей, над которыми должно работать размытие по Гауссу, поэтому iPhone 4S может размыть весь экран примерно за 30 мс с помощью этой операции.
У вас все еще есть проблема, как эффективно вытащить контент из представлений, находящихся за ним, в это размытие.
источник
Я использую тот,
FXBlurView
который отлично работает на iOS5 +https://github.com/nicklockwood/FXBlurView
CocoaPods:
Я добавил его, используя:
источник
FXBlurView
сверху, результатUIScrollView
тоже медленный. Я считаю, что это связано с тем, как добавлено размытие. Apple, если я не ошибаюсь, напрямую обращается к графическому процессору при использовании собственного размытия, чего мы, как разработчики, не можем. Следовательно, решение @cprcrack на самом деле является лучшим решением здесь.ВНИМАНИЕ: кто-то в комментариях заявил, что Apple отклоняет приложения, использующие эту технику. Это НЕ случилось со мной, но просто для вашего рассмотрения.
Это может вас удивить, но вы можете использовать UIToolbar , который уже включает этот стандартный эффект (только iOS 7+). Вы просматриваете viewDidLoad контроллера:
источник
viewDidLoad
вот так. - (недействительно) viewDidLoad {[супер viewDidLoad]; self.view = [[UIToolbar alloc] initWithFrame: CGRectZero]; } В моем случае я размещаю свои представления программно (старый стиль). Я поддерживаю это решение, потому что UIToolbar наследует UIView, поэтому я не вижу в этом решении никаких проблем. Я буду тестировать больше по мере разработки и тестирования этого решения.Начиная с iOS8 вы можете использовать UIBlurEffect .
На iOS8Sampler есть хорошие примеры с UIBlurEffect и UIVibrancyEffect .
источник
UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
Лучший новый способ получить размытый оверлей - использовать новую функцию iOS 8 UIVisualEffectView.
UIBlurEffect поддерживает три вида стилей. Темный, светлый и сверхсветлый.
источник
Вы можете создать класс с UIToolBar, который является подклассом UIView, и создать его экземпляр в отдельном контроллере представления. Этот подход демонстрирует полупрозрачный UIToolBar (унаследованный от UIView), который обеспечивает живую обратную связь (в данном случае для AVCaptureSession).
YourUIView.h
YourUIView.m
После того, как вышеуказанный UIView был настроен, продолжайте и создайте класс, который является подклассом ViewController. Ниже я создал класс, использующий сеанс AVCapture. Вы должны использовать AVCaptureSession, чтобы переопределить встроенную конфигурацию камеры Apple. Таким образом, вы можете наложить скрытый UIToolBar из класса YourUIView .
YourViewController.h
YourViewController.m
источник