Ios 如何以特定形状绘制图像

Ios 如何以特定形状绘制图像,ios,objective-c,uiimage,Ios,Objective C,Uiimage,每次新的网络通话,我都会从设计师那里得到一个普通的图像。但设计是图像必须是这样的形状: 我该怎么做?在android上,我使用路径创建这样的形状,然后使用着色器以该形状绘制图像。我在iOS上找不到这样的东西?多亏了克里沃布斯基。您可以使用以下代码屏蔽图像: - (UIImage*) _maskImage:(UIImage *) image withMask:(UIImage *) mask { CGImageRef imageReference = image.CGImage;

每次新的网络通话,我都会从设计师那里得到一个普通的图像。但设计是图像必须是这样的形状:


我该怎么做?在android上,我使用路径创建这样的形状,然后使用着色器以该形状绘制图像。我在iOS上找不到这样的东西?

多亏了克里沃布斯基。您可以使用以下代码屏蔽图像:

- (UIImage*) _maskImage:(UIImage *) image withMask:(UIImage *) mask
{
    CGImageRef imageReference = image.CGImage;
    CGImageRef maskReference = mask.CGImage;

    CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
            CGImageGetHeight(maskReference),
            CGImageGetBitsPerComponent(maskReference),
            CGImageGetBitsPerPixel(maskReference),
            CGImageGetBytesPerRow(maskReference),
            CGImageGetDataProvider(maskReference),
            NULL,
            YES
    );

    CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
    CGImageRelease(imageMask);

    UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
    CGImageRelease(maskedReference);

    return maskedImage;
}
你只需要确保你的图像是黑色的,而不是一种黑色,因为它将被用作透明度

这是一个非常好的教程,向您展示了遮罩图像:


只需将遮罩应用于您的UIImage。这是参考资料。你的问题是什么?你怎么做什么?如何画一个形状?如果你想画一个这样的形状,只需要使用UIBezierPath。不,我想画这个形状,然后在这个形状中必须画一个UIImage。所以UIImage就是这个形状,我现在正在读。我会让你知道的。