Почему PNG отображает, иногда становятся расплывчатыми в зависимости от его положения в представлении

Я заметил, что при размещении изображений PNG в представление с помощью IB и/или анимируя те изображения к различным позициям вокруг представления, изображение может иногда получать небольшую размытость.

В большинстве случаев я могу исправить размытость путем добавления.5 из пикселя к позиции изображений.

[lbLiteButton.layer setPosition:CGPointMake(140.5,159.5)];

Иногда я должен скорректировать обоих X и Y как вышеупомянутый. Иногда я только должен скорректировать x или y.

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

Проблема с решением "на.5 пикселей" состоит в том, что его различные для каждого PNG отображают в зависимости от размера, таким образом, Вы не можете снова использовать пользовательскую анимацию, потому что необходимо настроить его для каждого различного изображения.

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

Спасибо!

7
задан Matthias Bauch 9 March 2015 в 22:03
поделиться

3 ответа

Положение Свойство слоя зрения основано на его AnchonPoint . По умолчанию то есть (0,5, 0,5), что означает, что точка анкеровки слоя находится в его центре. Если ваш View (и его уровень) - это нечетное количество пикселей ширину или высокое, настроить интегральное значение для позиции, приведет к неотъемлемую начало представления, что приводит к размножению.

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

Есть шанс, что это может быть также связано с смещением руководства. Чтобы диагностировать это, вы можете использовать основной анимационный прибор в инструментах и ​​выбрать опцию Misligngeed изображений. Он должен окрашивать любые виды или слои, которые не являются пиксельными в вашем приложении.

14
ответ дан 6 December 2019 в 11:49
поделиться

У меня был похожий опыт с размытым текстом на этикетке, и это было вызвано супер-просмотром моих этикеток с субпиксельным смещением. Так что, даже если расположение внутри этого вида было интегральным, при настройке в соответствии с родительскими координатами он имел смещение в полпикселя или около того, что вызывало размытие.

Если вы получаете это только иногда, то это может быть не так. Ваш суперпросмотр движется или расположен странно? Я бы сказал, что лучше всего выяснить точные обстоятельства, при которых это происходит.

2
ответ дан 6 December 2019 в 11:49
поделиться

IB имеет ошибку, где иногда (не часто) просто движущиеся элементы вокруг окажутся их нечеткими - вы видите его чаще всего с UILabels и UiimageViews (хотя это, вероятно, просто то, что наиболее очевидно). Я уверен, что это связано с точками, упомянутыми выше, но исправление часто указывает координаты местоположения (x, y) для элемента до 0,0, а затем вернуться к исходным значениям. Это обычно решает проблему (опять же, это в IB).

1
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: