2015-01-24 2 views
1

Я отрываю свои волосы, пытаясь настроить пользовательский значок для моего приложения OS X. Я создал все графические файлы, необходимые:Почему Xcode игнорирует мои .xcassets большие размеры для моего значка приложения в проекте приложения OS X?

mondrian_128x128.png 
[email protected] 
mondrian_16x16.png 
[email protected] 
mondrian_256x256.png 
[email protected] 
mondrian_32x32.png 
[email protected] 
mondrian_512x512.png 
[email protected] 

Я потащил каждое изображение в соответствующую лунку в моем районе AppIcon xcassets, и все десять изображений теперь появляются там. (Больше, чем 32x32 @ 2x, все отображаются в том же размере, что и 32x32 @ 2x в Xcode, но, возможно, так и должно быть, я предполагаю, что Xcode делает это для сохранения экранной недвижимости, поскольку отображает изображение 1024x1024 будет занимать все окно.)

Когда я проверяю эти изображения в Xcode, нажимая на каждую лунку, он показывает информацию в области инспектора, которая кажется хорошей - правильное имя, размер, масштаб и т. д. Аналогично файл .json внутри .xcassets выглядит хорошо:

{ 
    "images" : [ 
    { 
     "size" : "16x16", 
     "idiom" : "mac", 
     "filename" : "mondrian_16x16.png", 
     "scale" : "1x" 
    }, 
    { 
     "size" : "16x16", 
     "idiom" : "mac", 
     "filename" : "[email protected]", 
     "scale" : "2x" 
    }, 
    { 
     "size" : "32x32", 
     "idiom" : "mac", 
     "filename" : "mondrian_32x32.png", 
     "scale" : "1x" 
    }, 
    { 
     "size" : "32x32", 
     "idiom" : "mac", 
     "filename" : "[email protected]", 
     "scale" : "2x" 
    }, 
    { 
     "size" : "128x128", 
     "idiom" : "mac", 
     "filename" : "mondrian_128x128.png", 
     "scale" : "1x" 
    }, 
    { 
     "size" : "128x128", 
     "idiom" : "mac", 
     "filename" : "[email protected]", 
     "scale" : "2x" 
    }, 
    { 
     "size" : "256x256", 
     "idiom" : "mac", 
     "filename" : "mondrian_256x256.png", 
     "scale" : "1x" 
    }, 
    { 
     "size" : "256x256", 
     "idiom" : "mac", 
     "filename" : "[email protected]", 
     "scale" : "2x" 
    }, 
    { 
     "size" : "512x512", 
     "idiom" : "mac", 
     "filename" : "mondrian_512x512.png", 
     "scale" : "1x" 
    }, 
    { 
     "size" : "512x512", 
     "idiom" : "mac", 
     "filename" : "[email protected]", 
     "scale" : "2x" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

Когда я строю мое приложение, однако, все, кажется, перепутались. Не появляются предупреждения о сбое или ошибки сборки, но встроенный продукт не имеет ни малейших размеров. В частности: AppIcon.icns, который генерируется Xcode, похоже, имеет только изображения 16x16 и 16x16 @ 2x. Я могу это увидеть, выполнив QuickView в Finder (как рекомендует Apple) или открыв его в Preview. Кроме того, само приложение, когда я выбираю его в Finder, показывает размытый значок, который явно расширяется от маленькой иконки. И когда я использую NSApplicationIcon в NSImageView на панели, отображаемый значок крошечный. Большие размеры явно не были скопированы.

Я все утро читал о .xcassets в сети, просматривая видео на YouTube о том, как их собрать, и (конечно), глядя на довольно бесполезную документацию Apple. Я не могу за всю жизнь понять, что я делаю неправильно. Есть идеи?

UPDATE:

Я сейчас экспериментирует с попытками получить iconutil сделать ICNS, в надежде понять, почему Xcode не может сделать это правильно. Я скопировал свой AppIcon.appiconset на свой рабочий стол и попробовал «iconutil -c icns AppIcon.appiconset». Он сказал: «AppIcon.appiconset: error: Invalid Iconset.». Я изменил имя на «AppIcon.iconset» в случае, если это была проблема, и он изменил свою ошибку на «AppIcon.iconset: ошибка: не удалось создать ICNS». Мне пришло в голову, что, возможно, изображения должны иметь то же имя, что и имя .iconset, поэтому я изменил их все, начиная с «mondrian», начиная с «AppIcon». Все еще получается «AppIcon.iconset: ошибка: не удалось создать ICNS». Конечно, было бы неплохо, если iconutil распечатал более полезные сообщения об ошибках.

Я также только что открыл все файлы изображений в GraphicConverter, добавил альфа-канал и сохранил их обратно, полагая, что, возможно, необходим альфа-канал (хотя я не упоминал об этом нигде, но большинство приложений есть альфа в их значке, так что ...). Опять же, никаких изменений: «AppIcon.iconset: ошибка: не удалось создать ICNS». Aargh.

ОБНОВЛЕНИЕ 2: Теперь он работает. Я не знаю, почему. Я добавил измененные изображения (добавленный альфа-канал, сохраненный в GraphicConverter вместо Photoshop Elements), которые были в моем экспериментальном .iconset на моем рабочем столе обратно в AppIcon в .xcassets моего проекта Xcode, очищены и построены, и теперь все хорошо. iconutil все еще отказывается компилировать его в ICNS, но теперь Xcode может это сделать. Понятия не имею почему. Может быть, что-то о состоянии моего проекта было повреждено, или, может быть, было необходимо альфа, или, может быть, GraphicConverter сохраняет PNG-файлы таким образом, что Xcode нравится лучше, чем формат Photoshop Elements. Тайн изобилует. Во всяком случае, возможно, эта запись будет полезна кому-то еще в подобной ситуации.

+0

У меня были аналогичные проблемы с xib-файлами раньше. Вы пробовали Product-> Clean and Product-> Clean Build Folder. Во-первых, когда я вижу что-то не так с активами/xibs или выглядит странно, я бы очистил папку проекта и сборки, а если это все еще не так, я бы поискал ошибки в другом месте. –

+0

Я пробовал делать «Чистый», и это не помогло. Я даже оставил Xcode и перезапустил его, и это не помогло. Я не делал Clean Build Folder, возможно, мне следовало это пробовать. Во всяком случае, проблема теперь исправлена, по причинам, которые я действительно не понимаю; см. мое обновление выше. Благодарю. Мальчик, ничего похожего на 15-минутную задачу, которая превращается в четырехчасовую задачу. Whee! – bhaller

ответ

1

У меня была та же проблема. «Clean Build», «Clean Build Folder» (⎇⇧⌘K), а другие предложения не улучшили ситуацию, но они указали мне в правильном направлении.

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

Прежде чем приступить к следующим шагам, которые, похоже, решили проблему, я смог просмотреть все правильные значки внутри моего пакета приложений. . Просмотр пакета> Содержание/Ресурсы/* ICNS

Чтобы сбросить все, что я сделал следующее:

Удалить все, значок, связанный с проектом:

  1. Используйте Project Navigator, чтобы удалить из в проекте находятся папки с атрибутами свойств и значков. Я считаю, что папка icns была создана с помощью утилиты иконок командной строки и не нужна.
  2. Вручную удалите связанные папки из папки проекта.
  3. Перезапустить Xcode для хорошей меры.

Добавить иконки снова:

Поскольку я до сих пор все правильные иконки в папке IconSet в файловой системе, я сделал следующее, чтобы добавить иконки к проекту:

  1. в Project Navigator щелкните правой кнопкой мыши папку проекта и выберите "New File ..."

  2. выберите OS X> Ресурс> Каталог активов для создания нового папку каталога каталога в папке проекта. Попытка указать это на существующую папку с иконками просто усложнила ситуацию.

  3. Нажмите на папку вновь созданных активов в Навигаторе проектов, а затем щелкните правой кнопкой мыши новый держатель значка в центре интерфейса Xcode. Выберите «Новая значка Mac OS» во всплывающем меню. Теперь вы должны увидеть все пустые колодцы для разных размеров значков.

  4. Щелкните правой кнопкой мыши и «Импорт ...» из существующей папки с иконками (этот шаг показал, что у меня было несколько дополнительных .pngs Xcode не знал, что делать). Перетащите из одного контейнера в другой, пока все не заполнится, а затем удалите пустой значок. Щелчок правой кнопкой мыши также показывает полезную ссылку «Получить каталог активов» в нижней части меню, которую нелегко найти с помощью обычной справки (она не находится в главном меню редактора в верхней части экрана).

  5. Очистить сборку, очистить папку и построить.

1

Я обнаружил, что если я повторно сохранены изображения с помощью Preview.app, обеспечивая правильный размер холста и ИЦП для каждого изображения, что я был в состоянии получить все 10 представлений, чтобы показать в результате ICNS файла ,

Мое предположение, что Photoshop или Photoshop-элементы вводят лишний мусор в файлы, которые не нравится iconutil/xcode. Фактически после сохранения каждый файл был существенно меньше (16x16 1x перешел от 374kb до 1kb).

0

В дополнение к решениям выше, сохранение изображений с использованием цветового профиля «sRgb» решило проблему для меня. это может быть сделано с помощью предварительного просмотра или фотошопа или другого предпочтительного редактора.

Смежные вопросы