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のいずれかを返すようにするにはどうすればよいですか?