Я потратил 5 часов на отладку этой прошлой ночью, отключение сжатия PNG в xcode ничего не сделало для меня.
Для всех, кто встречает вертикальные, зеленые, столбцы / линии / артефакты с stretchableImageWithLeftCapWidth (в UIImage API) - этот пост для вас.
У меня есть 21x30 для пользовательского фона кнопки, который я хочу расширить, но получил те же зеленые полосы, что и у OP. Я нашел PNG, созданный с помощью Photoshop, и он работал нормально - мои сделаны с помощью Gimp.
В любом случае, удаление ВСЕХ кусков из файлов (кроме трех основных) не имеет значения. Также не было отключено сжатие PNG.
Что сработало для меня, так это:
- Добавьте ОДНУ пустую строку над моим изображением (теперь это 21x31).
- Установить topCapHeight: 0 при создании масштабированного изображения.
- Когда я использую свое масштабированное изображение, я рисую в CGContext, который позже используется для создания UIImage. Я использую это, чтобы нарисовать:
[изображение drawInRect: CGRectMake (0, -2, ширина, 32)];
Это устраняет проблему (для меня).
Я предполагаю, что ошибка / проблема связана с , а не масштабированием по вертикали при рисовании, поэтому я заставляю масштабировать первую линию исходного изображения (на две линии), которые рисуются вне моей композиции. 1021 *
Надеюсь, это поможет кому-то сэкономить 5 часов.
/ Krisb