I’m working on something new, and as part of that app, I want to be able to save an image. There were a couple gotchas with that:
- At first, I wouldn’t get a preview of the image in the share sheet; the user would instead be presented with the app’s icon, which is not helpful.
- I also wouldn’t get the option to
Save Image, as in, save it to the user’s photo library.
For reference for others today, or me in the future, there are simple fixes to both of these problems.
Seeing a preview image
In order to see a thumbnail — and the file type and size as a subtitle
— you cannot pass a
UIImage as an
activityItem to your
UIActivityViewController. Instead, save the file to the local
filesystem, and then pass the file URL as your
That results in something that looks like this:
Note the app name and thumbnail have been obscured deliberately after the screenshot was taken.
Saving to the Photo Library
By default, the ShareSheet does not show the option of saving an image to the user’s photo library. Once you think about it a little bit, it makes sense why, but for the life of me I couldn’t figure out what I needed to do differently.
As it turns out, to enable it, this was a no-code change. I simply needed to add
NSPhotoLibraryAddUsageDescription item in my
Info.plist, which is
Privacy - Photo Library Additions Usage Description in the Xcode UI.
Once that was added, iOS automatically detects it, and I suddenly had a new entry in my ShareSheet:
Both of these were simple fixes, but it took me forever to determine what they were.