ありがとうございました。イメージに何かを描いた後、ImageViewのコンテンツモードが機能しなくなる
画像をタップする前に画像がうまくいき、タップしてから画像が圧縮されます。
は、ここに私のコードです:私は、ストーリーボードを使用していない
ので、私はコードですべてを作成し、ここでImageViewのです。そして、コードにも制約を加えました。
let imageEditingView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
return imageView
}()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.first != nil {
lastPoint = (touches.first?.location(in: imageEditingView))!
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.first != nil {
let currentPoint = touches.first?.location(in: imageEditingView)
drawLines(fromPoint: lastPoint, toPoint: currentPoint!)
lastPoint = currentPoint!
drawLines(fromPoint: lastPoint, toPoint: lastPoint)
}
}
func drawLines(fromPoint: CGPoint, toPoint: CGPoint) {
UIGraphicsBeginImageContext(imageEditingView.frame.size)
imageEditingView.image?.draw(in: CGRect(x: 0, y: 0, width: imageEditingView.frame.width, height: imageEditingView.frame.height))
let context = UIGraphicsGetCurrentContext()
context?.move(to: CGPoint(x: fromPoint.x, y: fromPoint.y))
context?.addLine(to: CGPoint(x: toPoint.x, y: toPoint.y))
context?.setBlendMode(CGBlendMode.normal)
context?.setLineCap(CGLineCap.round)
context?.setLineWidth(CGFloat(Int(120 * lineWidthSliderView.value)))
context?.setStrokeColor(red: red/255, green: green/255, blue: blue/255, alpha: 0.01)
context?.strokePath()
imageEditingView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
はそうありがとう多く!これで問題は解決しましたが、UIImageWriteToSavedPhotosAlbumを使用すると、画像が保存されただけで、drawingLayerに図面が保存されることはありません。それにdrawingLayerでイメージを保存するにはどうすればいいですか? –
イメージを別の変数に渡して保存して解決策を見つけました。再度、感謝します! –