iOS 5.1 с Xcode 4.3.1: [UIColor colorWithPatternImage:] странное поведение только на устройстве

Когда я компилирую свое приложение в Xcode 4.3.1 с iOS 5.1, я замечаю странное поведение с фоновыми текстурами только на реальном устройстве. Между плитками текстуры есть зазор в 1 пиксель, как показано на снимке экрана ниже.

Мои текстуры 150х150 и 300х300 в 2х.

До сих пор я тестировал ту же сборку на:

  • Симулятор iPhone/iPad 5.0/5.1: Без ошибок
  • iPhone/iPad с версией 5.0.1: ошибок нет
  • iPhone/iPad с версией 5.1: ошибка

Сравните скриншоты рядом


person Kent Nguyen    schedule 09.03.2012    source источник
comment
Линии появляются через каждые 150 пикселей? Вертикальные линии тоже есть?   -  person Mugunth    schedule 09.03.2012
comment
только горизонтальная линия, а не вертикальная, и да, она появляется каждые 300 пикселей на сетчатке   -  person Kent Nguyen    schedule 09.03.2012
comment
я могу подтвердить, что я тоже получаю эту ошибку, хотя я не уверен, что это из-за iOS 5.1   -  person chourobin    schedule 12.03.2012
comment
мой текущий обходной путь: я сделал изображение шаблона с коэффициентом 960 пикселей. Поэтому я просто замостил шаблон, чтобы он соответствовал 480x480. вроде пока нормально.   -  person chourobin    schedule 12.03.2012
comment
Вы дважды проверяли свои ресурсы, чтобы убедиться, что они не содержат случайных пикселей, или пытались разбить другой ресурс?   -  person JoePasq    schedule 12.03.2012


Ответы (3)


У меня такая же проблема с 5.1. Я решил это, сделав следующее с изображением в фотошопе. Вероятно, вы можете сделать то же самое в другом инструменте.

  1. Загрузите файл, выберите все и скопируйте в буфер обмена.

  2. Создайте в фотошопе новый файл того же размера, RGB и 8-битной глубины с разрешением 72 пикселя/дюйм с белым фоном.

  3. Вставьте изображение, которое вы скопировали на шаге 1, в это изображение.

  4. Сохраните файл и используйте этот.

После этого файл корректно отображался на устройстве, и мне не пришлось прибегать к созданию изображений размером с дисплей.

person BinaryGuy    schedule 14.03.2012
comment
Значит, после этого вы не оптимизируете PNG? Просто «сохранить» с помощью Photoshop создаст минимальный размер файла 49 КБ, а мне это не нужно. - person Kent Nguyen; 15.03.2012
comment
Это также сработало для меня: с помощью Pixelmator я экспортировал изображение в формате PNG, и все :) - person nacho4d; 15.03.2012
comment
Подтвердите исправление с помощью Pixelmator. Сохранение без какой-либо специальной опции подойдет. Оптимизация этого сохраненного изображения снова приведет к проблеме. - person Kent Nguyen; 16.03.2012
comment
Спасибо, это, конечно, ошибка, но, по крайней мере, я исправил ее сейчас! - person Chris; 18.03.2012
comment
Я сталкиваюсь с этим и в версии 5.1 и регистрирую rdar://11069678 . Похоже, это последняя строка пикселей в любом файле PNG8 или PNG в градациях серого (по сути, любом файле PNG, который не может быть предварительно умножен, оптимизирован с помощью инструмента Apple pngcrush) - person iccir; 19.03.2012
comment
Мое решение состояло в том, чтобы сохранить файлы PNG как PNG8s, добавить несколько дополнительных строк заполнения, а затем обрезать их в коде. - person iccir; 19.03.2012

Мой обходной путь: установите для параметра «Сжимать файлы PNG» значение «Нет» в настройках сборки. В моем случае размер пакета приложений был даже меньше, чем при включенном сжатии. Оптимизацию изображения я сделал сам.

person Fabian    schedule 19.03.2012

на всякий случай, если у кого-то еще возникла эта проблема и он использует pngoptimizer, попробуйте новый png без его оптимизации.

У меня была такая же проблема, и я потратил последние 4 часа, пытаясь ее решить. В конце концов я понял, что это был файл png из инструмента pngoptimizer, который каким-то образом всегда работал до iOS 5.1, но с обновлением тот же файл png создает эту тонкую линию внизу. странно то, что это происходит только на устройстве, а не в симуляторе, и это сильно вас обманывает, потому что вы думаете, что это не может быть графика. на самом деле это так.

person Etienne678    schedule 13.03.2012
comment
Я пытался сохранить PNG с оптимизацией и без нее из Photoshop, но оба варианта не работают. - person Kent Nguyen; 15.03.2012