Вы можете использовать CGImageCreateWithMask
, чтобы применить к нему маскирующее изображение.Вы можете сгенерировать подходящую маску достаточно просто, рисуя в CGBitmapContext в оттенках серого или только в альфа-формате с помощью CGContextDrawLinearGradient
.
Если она отображается как содержимое CALayer, вы можете применить соответствующий маскирующий слой к родительскомусвойство слоя mask
.Вы можете использовать CAGradientLayer
с соответствующими цветами для создания этой маски.
Вы можете нарисовать изображение в CGBitmapContext, а затем нарисовать соответствующий альфа-градиент поверх него, используя kCGBlendModeDestinationIn
.Или сначала нарисуйте градиент и нарисуйте на нем изображение, используя kCGBlendModeSourceIn
.В обоих случаях CGContextDrawLinearGradient
снова ваш друг.Затем, конечно, получите изображение из CGContext, используя CGBitmapContextCreateImage
или CGImageCreate
в базовом буфере данных.
Или, конечно, если вы управляете исходным изображением и вам никогда не нужна версия безальфа-градиент, вы можете просто сохранить его как PNG с соответствующими значениями альфа в первую очередь.