私はの画像をの背景から消去して、ユーザーが"カメラロール"からインポートするようにアプリを作ろうとしています。
私はUICmageでUIColor.clearColorを描く手を考えていました。 私は私のUIImageで描画するためにコアグラフィックスを使用してみました。問題は、それは非常にラグだったということですSwiftの画像を消去する最も良い方法は?
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first {
lastPoint = touch.locationInView(self)
}
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first {
var newPoint = touch.locationInView(self)
lines.append(Line(start: lastPoint, end: newPoint))
lastPoint = newPoint
self.setNeedsDisplay()
}
}
override func drawRect(rect: CGRect) {
imageToSend.drawAtPoint(CGPointZero)
var context = UIGraphicsGetCurrentContext()
CGContextBeginPath(context)
for line in lines {
CGContextMoveToPoint(context, line.start.x, line.start.y)
CGContextAddLineToPoint(context, line.end.x, line.end.y)
}
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor) //tried with a red color here
CGContextSetLineWidth(context, 80.0)
CGContextSetLineCap(context, .Round)
}
:
は私がで線を描画するために最初に試みました。(xCodeの)デバッグセッションでのメモリ使用量は、CPU使用率と同様に非常に高かった。
iPhone 6sでアプリを実行する。
Swiftの画像を消去する方がいいですか?
もう一つの問題は、それが線を作成することです、私はより滑らかにしたいと思います。しかし、それは別の問題です
私は、パフォーマンスラグは* drawRect *メソッドの頻繁な呼び出しによって発生すると仮定しています。あなたはそこで本当に巨大な仕事をしています。以下を削除することを検討してください:* imageToSend.drawAtPoint(CGPointZero)*。コメントアウトして、パフォーマンスが向上するかどうかを確認してください。それが役立つ場合は、UIImageViewを上に描画するカスタムビューでギャラリーからのイメージでオーバーレイしようとすることができます。興味深い問題ですが、サンプルコードを共有した場合は、そのコードで試してみます。 –
@Melifaroはい、それは良くなります。だから私はUIImageViewの上に私のDrawingViewを置く必要がありますか?どうすればイメージを消去できますか?ヘルプありがとう – Danny182