UIBezierPath
に基づいてUIImage
をクリップしようとしましたが、結果のイメージは元の形とサイズを保持します。シェイプとサイズをパス、つまり新しい画像の表示内容に似せてください。UIBezierPathにUIBezierPathをクリップする(マスキングしない)
この次の例を見てみましょう:
次は、私はパス指定した画像をマスクするために使用していたコードです:
func imageByApplyingClippingBezierPath(_ path: UIBezierPath) -> UIImage {
UIGraphicsBeginImageContextWithOptions(CGSize(
width: size.width,
height: size.height
), false, 0.0)
let context = UIGraphicsGetCurrentContext()!
context.saveGState()
path.addClip()
draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
context.restoreGState()
UIGraphicsEndImageContext()
return newImage
}
一つの解決策は、作物になりますそれをマスキングした後の画像ですが、理想的には、これを可能な限りシンプルかつ効率的に実行したいと考えています。
解決方法やヒントがあれば幸いです。
いいえ、ちょうどそれを切り抜いてください。しかし、CGImageCreateWithImageInRectを1回呼び出すだけで、とても簡単です。 – Rob
コメントをいただきありがとう@Rob、これを実装する方法についての素早いコードスニペットをお伝えしますか? – Aleksander
コーディングサンプルRobの必要がなくなりました。ポインタありがとう! – Aleksander