Есть ли режим смешивания или что-то еще, что я могу установить для UIControls, чтобы я мог видеть слой под ним? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть различные UIControls, добавленные на мой взгляд.Мне бы хотелось, чтобы изображение градиента было показано через него, как в режиме смешивания в Photoshop.

UIControls untouched

UIControls with gradient underneath it, showing through

Здесь я использовал режим смешивания яркости.Я надеюсь, что есть что-то похожее, что я могу получить доступ к слою в Swift.

1 Ответ

0 голосов
/ 19 февраля 2019

Я понял, как это сделать с помощью свойства compositingFilter.Я попробовал это, но имел это назад.Он должен использоваться на изображении, которое должно быть слоем поверх UIControls:

    let image: UIImage = UIImage(named: "testBGGradient.png")!
    let bgImage = UIImageView(image: image)
    bgImage.frame = CGRect(x:0, y:topBarYPos + topBarHeight + topMargin, width:UIScreen.main.bounds.width, height:UIScreen.main.bounds.height)
    guard let str = dbBlendStr else { return }
    bgImage.layer.compositingFilter = "darkenBlendMode"

    self.view.addSubview(bgImage)

Есть много compositingFilters.Используйте те, которые вы нашли здесь: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/uid/TP30000136-SW71

Вы можете использовать имена фильтров, удаляя "CI" и начиная со строчных букв.Вот простой список на выбор:

добавление, композитинг

colorBlendMode

colorBurnBlendMode

colorDodgeBlendMode

darkenBlendMode

diffBlendM

divBlendMode

exclusionBlendMode

hardLightBlendMode

hueBlendMode

lightenBlendMode

linearBurnBlendMode

*1231*1033 *

luminosityBlendMode

MaximumCompositing

минимумCompositing

multiplyBlendMode

multiplyCompositing

overlayBlendMode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...