2010-01-12 5 views
0

я наткнулся на странный сценарий в моем коде другой день:UIImageView и UIImage одинакового размера

У меня есть UIImageView, который загружает изображение с setImage :. UIImageView предварительно инициализируется фреймом, имеющим точный размер изображения (41 * 41 px). Я также установил режим содержимого в UIViewContentModeCenter, который должен гарантировать, что мое изображение никогда не масштабируется.

Теперь, когда я смотрю на изображение, я вижу, что изображение немного обрезано по горизонтали, и оно кажется немного размытым (это контрольный знак, что в фоновом режиме происходит какое-то перемасштабирование). Если вместо этого я инициализирую изображение с 1 дополнительным пикселем в ширину, все работает отлично (однако мое изображение теперь на один пиксель шире моего изображения).

Также, если я инициализирую свой UIImageView с помощью initWithImage: это тоже работает отлично. Я проверил рамку этого представления после инициализации, и нашел, что он имеет тот же размер: 41 * 41.

Итак, у меня есть несколько обходных путей для этой проблемы, но я пытаюсь понять, что здесь происходит. Единственное объяснение, я могу думать о том, являются:

  1. Существует ошибка в рамках
  2. Визуализация изображений не работает для изображения определенного размера. Я знаю, что для примеров текстуры всегда имеют силу 2, хотя я сомневаюсь, что это имеет большое значение для UIImageView.

Для записи, которую я собираю для ОС 3.0, проблема возникает как на симуляторе, так и на устройстве.

ответ

4

Является ли UIImageView внутри любых других видов? Одна вещь, которую я имел раньше, - это размытые элементы управления, вызванные дробными смещениями пикселей. т. е. если вы вычисляете кадр с использованием деления и заканчиваетесь не целочисленным значением поплавка, тогда UIKit может добавить некоторое странное размытие при определенных смещениях и размерах.

Таким образом, изображение может иметь целочисленный размер, но абсолютный кадр при принятии родителя (ов) не может быть.

+0

И правильно, что вы: Я позиционировал изображение в некоторых координатах с плавающей точкой. Я закруглял их, и теперь все работает нормально. –

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