Примените фильтр к UIView / UIWindow, чтобы изменить рендеринг базового представления. - PullRequest
6 голосов
/ 20 декабря 2010

Я пытаюсь создать «темный режим» для своего приложения, и я хотел бы сделать это действительно простым способом.Есть ли способ применить фильтр или создать другое представление поверх других моих представлений, чтобы они выглядели перевернутыми - очень похоже на «Доступность» в iOS 3.2+?Я знаю, что фильтры Core Image не работают на iPhone, но для меня это не имеет большого значения - если есть способ применить другой тип фильтра.

Возможно ли это на iPhone?Как Apple это делает?

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

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

Еще один способ сделать это - изменить набор цветов и изображений, которые вы используете для рисования ваших видов.

Обе эти схемы будут проще и эффективнее, если вы работаете с пользовательскими представлениями. Если вы используете оверлей, то в приведенном выше документе объясняется, что стандартные элементы пользовательского интерфейса не относятся к пересылке событий. Если вы меняете цвета, ну ... в зависимости от того, какие элементы пользовательского интерфейса вы используете, может быть или не быть возможным заменить ваши собственные изображения и цвета.

0 голосов
/ 06 апреля 2018

Попробуйте!

Сначала создайте слой!

let foreground = CALayer() 
foreground.backgroundColor = UIColor.blue.cgColor //Whatever color you want
foreground.opacity = 0.5
foreground.frame = (UIApplication.shared.keyWindow?.bounds)
foreground.masksToBounds = true

Затем просто добавьте слой в корневой контроллер

UIApplication.shared.keyWindow?.rootViewController?.view.layer.addSublayer(foreground)

Надеюсь, что это может помочь кому-то еще!

...