UIImageをカスタムパスにトリミングし、正しい解像度を維持しますか?
私はここに「メイン」と呼ぶことにしますビュー(青い背景が...)、メインに私はその後、回転UIImageView
、パンとスケールを追加しました。メインでは、クロッピングエリアを示す別のサブビューがあります。より暗い領域の下で何かが切り取られる必要があります。
この状態から切り取った画像を正しく作成する方法を理解しようとしています。私は、結果のイメージは次のようになりたい:
私は画像の解像度を維持することを確認します。
私はUIImageViewのlayer.maskプロパティを使用する方法を理解しようとしました。いくつかのフィードバックの後、私は青いビューで別のビュー(B)を持つことができたと思います.Bで私はイメージビューを追加するので、Bのフレームがクロップマスクオーバーレイのrectと一致することを確認します。それはうまくいくと思いますか?唯一のことは、私が決断を失わないようにしたいということです。
だから、以前の私はこれを試してみました:
maskShape.frame = imageView.bounds
maskShape.path = UIBezierPath(rect: CGRect(x: 20, y: 20, width: 200, height: 200)).cgPath
imageView.layer.mask = maskShape
RECTは単なるテストRECTた画像がそのパスにクロップされるだろうが、私はこのすべてからUIImageを取得する方法がわかりませんでした
私はmarcoが提案した方法を実装しました。解像度を維持する以外はすべて動作します。
私はビューのインクルードのスクリーンショットを取るために、このコールを使用するには、画像が含まれていると私はそれが限界にクリップがあります。
public func renderToImage(afterScreenUpdates: Bool = false) -> UIImage {
let rendererFormat = UIGraphicsImageRendererFormat.default()
rendererFormat.opaque = isOpaque
let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat)
let snapshotImage = renderer.image { _ in
drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates)
}
return snapshotImage
}
私が得る画像は正しいですが、1、私のようにシャープではありません作物。
私は解像度を高く保つことができますか?
私はあなたに簡単な答えを与えるのを助けるためにあなたの質問を更新してください:1:何を試しましたか2:あなたの結果は何ですか3:あなたが得る結果。たぶんそれのスクリーンショットイメージ。 –