Вот еще один способ сделать это, который более быстрый.
Хитрость заключается в использовании:
YourMaskView()
.compositingGroup()
.luminanceToAlhpa()
maskedView.mask(YourMaskView())
Просто создайте свою маску с помощью Черно-белые фигуры, черный будет прозрачным, белый непрозрачный, все промежуточное будет полупрозрачным.
.compositingView()
, аналогично .drawingGroup()
, растеризует вид (преобразует его в растровую текстуру ). Кстати, это также происходит, когда вы .blur
или выполняете любые другие операции на уровне пикселей.
.luminanceToAlpha()
берет уровни яркости RGB (я угадываю путем усреднения значений RGB) и сопоставляет их с Альфа-канал (непрозрачность) растрового изображения.