На днях я столкнулся со странным сценарием в моем коде:
У меня есть UIImageView, который загружает изображение с помощью setImage :. UIImageView предварительно инициализируется с рамкой, имеющей точный размер изображения (41 * 41 пикселей). Я также установил режим содержимого на UIViewContentModeCenter, который должен гарантировать, что мое изображение никогда не масштабируется.
Теперь, когда я смотрю на изображение, я вижу, что изображение немного обрезано по горизонтали, и оно выглядит немного размытым (это явный признак того, что на заднем плане происходит некоторое изменение масштаба). Если вместо этого я инициализирую свой вид изображения с 1 дополнительным пикселем в ширину, все работает отлично (однако мой вид изображения теперь на один пиксель шире, чем мое изображение).
Также, если я инициализирую свой UIImageView с initWithImage: это, кажется, тоже работает хорошо. Я проверил кадр этого вида после инициализации и обнаружил, что он имеет тот же размер: 41 * 41.
Итак, суть в том, что у меня есть несколько способов обойти эту проблему, но я пытаюсь понять, что здесь происходит. Единственное объяснение, которое я могу придумать:
- В фреймворке есть ошибка
- Рендеринг изображений не работает хорошо для изображений определенного размера. Я знаю, что для примеров текстуры всегда имеют степень 2, хотя я сомневаюсь, что это имеет большое значение для UIImageView.
Для записи, которую я собираю для OS 3.0, проблема возникает как на симуляторе, так и на устройстве.