2012-02-17 10 views
2

私はいくつかの図面でカスタムビューを持っています。 私はそれを新しい割合にリサイズしたいと思います。同じ比率でサイズを変更するdrawRectの描画パターンも欲しいです。カスタムUIViewのサイズを変更し、カスタム描画を比例して維持する方法は?

私はすべてをリフレッシュして再描画せずにこれを達成できますか。

+0

一部の図面には自動サイズ変更マスクが必要です – NeverBe

答えて

2

これは自動的にデフォルトのcontentModeUIViewContentModeScaleToFill)で行われます。 contentModeは、新しい呼び出しを強制的に行わずにキャッシュされたビットマップを調整する方法を決定します。drawRect:contentStretchを参照すると、ビューのどの部分が拡大縮小されるかを制御できます。

0

新しい割合で再描画する必要があります。

そのためには、CGPathを作成したポイントを保存し、ポイントを新しい割合に従ってスケーリングしてもう一度レンダリングする必要があります。

CGPathの再描画には注意が必要です。

  • 単純なmoveTopoint/AddlinePointを使用していた場合は、ポイントを配列に格納するだけで実行できます。後でスケーリングして再描画することができます。
  • addcurveTopointなどの関数を使用できる場合は、配列にポイントを格納することはできません。汎用目的の方法が必要です。そのためには、CGpathApply関数を使用する必要があります。ここでその例を見ることができます。 http://www.mlsite.net/blog/?p=1312
  • ズームする必要がある場合やインタラクションが不要な場合は、画像を撮影してズームすることができます。
関連する問題