Icons, Asset Catalog and Info.plist confusion

前端 未结 3 961
误落风尘
误落风尘 2021-02-09 01:21

I have an app that started life for iOS 5 and has been updated ever since. For iOS 7 I have switched over to using an Asset Catalog for all the resources, which is nice and appe

相关标签:
3条回答
  • 2021-02-09 01:31

    Okay, so here is what I ended up doing. I'm not 100% sure it's correct but I thought that it was worth sharing.

    • I removed CFBundleIconFile, which I don't think is used in iOS 6 and above
    • I used the asset name rather than the icon filename in CFBundleIconFiles

    I'm not clear what the proper names are so, for the sake of clarity: by icon filename I mean the name visible in the Attribute Inspector of the Asset Catalog when the icon is selected; and by asset name I mean AppIcon, which refers to seven actual icons in my case.

    This both passes Apple's validation step and appears to look okay. I don't currently have an iOS 6 device but it displays correctly in the Simulator.

    0 讨论(0)
  • 2021-02-09 01:32

    When an asset catalog is compiled for iOS 6 and lower, the images are put in the root of the app bundle, as if you were just copying them the old way. When this happens, Apple names the images according to the asset name, rather than the filename, which means we can still use +[UIImage imageNamed:] to get the assets on iOS 6 and lower.

    This is true for the App Icon asset, when we have the following icons set in our asset catalog:

    enter image description here

    They become compiled like so:

    enter image description here

    As iOS 6 is still iOS 6, these files must be referenced in the Info.plist, otherwise the existing system wouldn't work. Looking in the compiled Info.plist for this test app, you see that Xcode has added CFBundleIconFiles for us and so we don't need to.

    enter image description here

    I have uploaded the test project I used to github.com/danielctull-tests/AssetTest.

    0 讨论(0)
  • 2021-02-09 01:35

    I had also a lot of Problems on this matter - I was constantly getting the error with the missing CFBundleIconName and that my Icons where not found. So here is my story, maybe it will be of help for somebody. By the way, I am using Visual Studio with Xamarin.

    1. Add an Asset Catalogue to your Project with AppIcons (the actual name of the asset is not important but just that it is for the application icons). Add all of the necessary icon sizes. For the 'App Store' icon I have added an icon without a @ in the name as someone in the forums suggested, but I am not sure, if it is 100% necessary. For generating the different icon sizes there are a lot of Websites and tools that can do that for you and you just need to provide the 1024x1024 one. They will generate the rest.

    2. In the Info.plist under 'Visual Assets' and then 'App Icons' set the source to the asset that you have just created.

    3. Now check your Info.plist. Do not open it with an external Editor, because all of your changes will be overwritten once you build your project. Do the following - right mouse click on the Info.plist in the Solution Explorer then select Open With -> Generic PList Editor.

    4. Check that you have the following entries:

      -Property = CFBundleIconName, Type = String. Value = Assets.xcassets/AppIcons.appiconset -Property = XSAppIconAssets, Type = String. Value = Assets.xcassets/AppIcons.appiconset

    5. Note that Visual Studio automatically adds, when it adds something altogether, 'Resources/Assets.xcassets/AppIcons.appiconset' as the Value. But in my case the Asset Catalog was created outside of the Resources folder and therefore, my icons where not found. So, check where your assets folder was created.

    6. CFBundleIconFiles was not needed, because Apple uses the Asset Catalog instead now.

    I hope that I was of some help :)

    0 讨论(0)
提交回复
热议问题