UIImageView и UIImage одинакового размера - PullRequest
0 голосов
/ 12 января 2010

На днях я столкнулся со странным сценарием в моем коде:

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

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

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

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

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

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

1 Ответ

4 голосов
/ 12 января 2010

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

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

...