2013-10-06 3 views
1

Я использую TilingView из примера Apple PhotoScroller для разбивки некоторых изображений. Это отлично работает для большинства моих изображений, но у меня есть некоторые странные значения масштаба. Я установил уровень детализации до 4. Мои изображения масштабируются с разными значениями, 100,50,25,12,5 шкалы, а затем выгравированы 256x256 на этих уровнях.iOS CATiledLayer и TilingView проблемы с масштабированием?

В методе TilingView drawRect масштаб, который я получаю здесь, должен быть одним из 4 значений и обычно равен 1,0,0.50,0.25,0.125. Поскольку я сохраняю свои изображения на основе этих значений шкалы, когда я получаю странное значение шкалы, оно ломается и не может загружать изображения. Например, у меня есть изображение, которое в масштабе 0,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 для любого размера изображения указываю?

ответ

1

В коде образца есть несколько ошибок, один из которых предполагает правильное округление этих значений шкалы, что приводит к проблеме, которую вы видите. Но есть и другие тонкие проблемы. Пожалуйста, посмотрите на this question, где эти проблемы (и исправления) описаны более подробно.

Смежные вопросы