0

UIScrollViewand で管理されている大きな画像がありますCATiledLayer( Large Image Downsizing iOS sample codeのように)。UIView線と長方形を描画するために、描画ビュー(描画メソッドでオーバーライド)がありました。パフォーマンスを向上させるために、画像を拡大したときに表示されている四角形のみを再描画する方法を見つけようとしています。

setNeedsDisplayInRect()メソッドを見つけて、次のように使用しています:

CGRect visibleRect = CGRectApplyAffineTransform(scrollView.bounds, CGAffineTransformMakeScale(1.0 / imageScale, 1.0 / imageScale));
[self.drawingView setNeedsDisplayInRect:visibleRect];

しかし、私のdrawRect()方法では、今のところ、すべての線と四角形を再描画します。どの可視線を再描画する必要があるかを知るにはどうすればよいですか?

4

2 に答える 2

0

線がどこにあるかを判断し、それを使用して線を描きnsbezierpath/cgpathます。

おそらく、ほとんどの時間は、ではなく、ストロークアルゴリズムに費やされますdetermining。パスのクリップ領域をdrawRect's dirtyRect引数に設定するだけです。ダミーのストロークは、その場合は何の費用もかかりません。

于 2012-12-26T12:48:15.813 に答える