I've used the above cp
script which has essentially solved my problem.
More information which may help others:
You can't rely on XSAppIconAssets
and XSLaunchImageAssets
being checked AFTER you do a Pre-Build plist copy step. Xamarin Studio appears to use the values present in Info.plist
at the beginning of the build process.
Asset catalogs work the following way under the hood:
- In general, catalog images are copied into the
.app
in the formCatalognameModifiers.ext
(e.g.LaunchImages@2x.png
)- For Launch Images, the catalog name is assigned to the
UILaunchImages
key inInfo.plist
, and the OS handles the lookup of these transparently - For App Icons, the Icons are renamed to
CatalognameDimensions.ext
, including the57x57
(which previously were simplyIcon.png
/Icon@2x.png
), and these names are assigned to arrays under theCFBundleIcons
andCFBundleIcons~ipad
keys inInfo.plist
- For Launch Images, the catalog name is assigned to the
As a result of the above renaming, you need to specify the catalog name, not the 'asset name' as mentioned here. In my case, I was puzzled over launch images suddenly not appearing in the app (my app moves from a splash screen to a loading spinner over the splash image). The solution was changing the code to request UIImage.FromBundle("LaunchImages")
, rather than "Default"
. Note that for iPhone 5 you currently need to request "LaunchImages-568h"
to get the right image.