Я отрываю свои волосы, пытаясь настроить пользовательский значок для моего приложения 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. Тайн изобилует. Во всяком случае, возможно, эта запись будет полезна кому-то еще в подобной ситуации.
У меня были аналогичные проблемы с xib-файлами раньше. Вы пробовали Product-> Clean and Product-> Clean Build Folder. Во-первых, когда я вижу что-то не так с активами/xibs или выглядит странно, я бы очистил папку проекта и сборки, а если это все еще не так, я бы поискал ошибки в другом месте. –
Я пробовал делать «Чистый», и это не помогло. Я даже оставил Xcode и перезапустил его, и это не помогло. Я не делал Clean Build Folder, возможно, мне следовало это пробовать. Во всяком случае, проблема теперь исправлена, по причинам, которые я действительно не понимаю; см. мое обновление выше. Благодарю. Мальчик, ничего похожего на 15-минутную задачу, которая превращается в четырехчасовую задачу. Whee! – bhaller