Я заметил, что при размещении изображений PNG в представление с помощью IB и/или анимируя те изображения к различным позициям вокруг представления, изображение может иногда получать небольшую размытость.
В большинстве случаев я могу исправить размытость путем добавления.5 из пикселя к позиции изображений.
[lbLiteButton.layer setPosition:CGPointMake(140.5,159.5)];
Иногда я должен скорректировать обоих X и Y как вышеупомянутый. Иногда я только должен скорректировать x или y.
Я не забываю читать где-нибудь, что это имеет отношение к размеру изображения и как базовая анимация работает и что-то, чтобы сделать с половиной пикселей..., но я не могу найти статью нигде!?
Проблема с решением "на.5 пикселей" состоит в том, что его различные для каждого PNG отображают в зависимости от размера, таким образом, Вы не можете снова использовать пользовательскую анимацию, потому что необходимо настроить его для каждого различного изображения.
Спасибо!
Положение
Свойство слоя зрения основано на его AnchonPoint
. По умолчанию то есть (0,5, 0,5), что означает, что точка анкеровки слоя находится в его центре. Если ваш View (и его уровень) - это нечетное количество пикселей ширину или высокое, настроить интегральное значение для позиции, приведет к неотъемлемую начало представления, что приводит к размножению.
Работать вокруг этого, вы можете выяснить интегральную версию вашей позиции, взяв желаемое центральное положение представления, вычитая половину ширины вида, округление этого значения, затем добавляя половину ширины вида и повторяющуюся для высота. Вы также можете установить AnchorPoint
для слоя вашего представления до (0,0) и положить представление на основе его происхождения.
Есть шанс, что это может быть также связано с смещением руководства. Чтобы диагностировать это, вы можете использовать основной анимационный прибор в инструментах и выбрать опцию Misligngeed изображений. Он должен окрашивать любые виды или слои, которые не являются пиксельными в вашем приложении.
У меня был похожий опыт с размытым текстом на этикетке, и это было вызвано супер-просмотром моих этикеток с субпиксельным смещением. Так что, даже если расположение внутри этого вида было интегральным, при настройке в соответствии с родительскими координатами он имел смещение в полпикселя или около того, что вызывало размытие.
Если вы получаете это только иногда, то это может быть не так. Ваш суперпросмотр движется или расположен странно? Я бы сказал, что лучше всего выяснить точные обстоятельства, при которых это происходит.
IB имеет ошибку, где иногда (не часто) просто движущиеся элементы вокруг окажутся их нечеткими - вы видите его чаще всего с UILabels и UiimageViews (хотя это, вероятно, просто то, что наиболее очевидно). Я уверен, что это связано с точками, упомянутыми выше, но исправление часто указывает координаты местоположения (x, y) для элемента до 0,0, а затем вернуться к исходным значениям. Это обычно решает проблему (опять же, это в IB).