Что такое "несогласованное изображение" в терминах Core Animation в iPhone OS?
Инструменты говорят, что есть "несогласованные изображения", которые анимируются основной анимацией. Что это значит?
ОБНОВЛЕНИЕ: Я видел это в Instru.app > Core Animation.
Ответы
Ответ 1
Мне бы хотелось получить больше информации о том, где вы это видите, но мое подозрение заключается в том, что оно ссылается на изображение, не выровненное по пикселям. Кварц позволяет рисовать по дробным пикселям (напомним, что CGPoint принимает CGFloats, а не NSIntegers), но он более дорогой и имеет тенденцию создавать немного размытости. Вы не можете нарисовать дробный пиксель, поэтому Quartz должен делать сглаживание, чтобы вытащить его. Это требует времени и, конечно же, повредило бы производительность Core Animation.
Кварц не будет предупреждать вас о том, что вы рисуете дробные пиксели, и это особенно неприятно для текста. Так что вам нужно подумать о том, что вы делаете программный макет.
Ответ 2
Несогласованные представления заставляют рендеринг сглаживаться перед тем, как они нарисованы.
В этом контексте "несогласованный" означает, что запрошенная отображаемая точка не отображается непосредственно на пиксель экрана (например, она может быть между двумя пикселями), и поэтому должна быть нарисована на два соседних пикселя и сглажена до дают иллюзию, что она была нарисована "между ними".
Это почти всегда происходит, когда кадр представления вычисляется (а не указывается в Interface Builder), потому что координата CGRect X, координата Y, ширина и высота являются CGFloats и поэтому позволяют дробные значения.
Например, поле 100.8px на 50.1px с центром в (200.5, 35.5) является допустимым фреймом, и ОС будет пытаться сделать его лучшим, с чем он может справиться. Дополнительные затраты на интерполяцию и сглаживание, требуемые только для одного пикселя, достаточно, чтобы серьезно повредить производительность на устаревшем оборудовании.