私は背景UIImageを持っています。カスタムシェイプを使ってバックグラウンドUIImageをトリミングしたいので、このバックグラウンドイメージはカスタムシェイプでしか表示されません。たとえば、私は月形のカスタムシェイプを持っています。そして、私は月の形をした部分だけに背景イメージが来るようにしたいと思います。他の回答に基づいてUIImageをカスタムシェイプでトリミングする
、私はそうのような画像にマスクを課すことをしようとしています:
- (UIImage *)createImageFromImage:(UIImage *)image
withMaskImage:(UIImage *)mask {
CGImageRef imageRef = image.CGImage;
CGImageRef maskRef = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef),
NULL,
YES);
CGImageRef maskedReference = CGImageCreateWithMask(imageRef, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
しかし、この結果はのように見え、それにはいくつかの問題があります。
は、- 私が持っている月は100 * 100ですが、これは奇妙な割合を伸ばしています
- 私の目標は画像が月を通過することです - しかし、現時点では月が来る白い形です画像
作物の問題をどのように修正できるかについてのご意見は、大変ありがとうございます。ありがとう!
このライブラリはカスタムシェイプに使用できます。あなたのパスを描くだけで、イメージが切り取られます。 https://www.cocoacontrols.com/controls/mdimagecroper –