1

Apple PhotoScroller の例の TilingView を使用して、いくつかの画像を並べて表示しています。これはほとんどの画像でうまく機能しますが、奇妙なスケール値を取得するものもいくつかあります。詳細レベルを 4 に設定します。私の画像はすべて異なる値でスケーリングされ、100、50、25、12.5 のスケールでスケーリングされ、それらのレベルで 256x256 にタイル化されます。

TilingView の drawRect メソッドでは、ここで取得するスケールは 4 つの値のいずれかである必要があり、通常は 1.0、0.50、0.25、0.125 です。奇妙なスケール値を取得すると、これらのスケール値に基づいて画像を保存するため、画像が壊れてロードできなくなります。たとえば、.50 スケールで取得した実際の値が 0.499798 である画像があります。

ここで何が起こっているのですか?CATiledLayer に 4 レベルの詳細を指定すると、どうすればこれらの奇妙な値になるのでしょうか?

CGFloat scale = CGContextGetCTM(context).a;
NSLog(@"scale = %f",scale);
CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
CGSize tileSize = tiledLayer.tileSize;

指定した画像サイズに対して、実際に渡す画像サイズが4つのスケール100、50、25、12、5のいずれかを返すようにするにはどうすればよいですか?

4

1 に答える 1