I am trying to add a custom UIActivity
of type UIActivityCategoryAction
to UIActivityController
. But in iOS 8, all of them are appearing with a black background.
Is there a way to change this?
There are 3 things to note here:
- image background,
- image opaqueness,
- image size.
iOS 7
- Image background:
Image background should be transparent.
- image opaqueness
The "visible part" of the icon should be non transparent aka opaque. Note that any color information won't be preserved:
- image size
Because the image won't be scaled by the system if too small/big, you have to provide appropriately sized image. I found image size 120px x 120px
to fit perfectly.
Note: this size also takes icon padding into account.
iOS 8+
- Image background:
Image background should be white to match the system UIAction
icons but you can also use an arbitrary color.
- image opaqueness
Same as in iOS 7, "visible" part of the icon should be non transparent aka opaque, however in iOS 8+ color information will be preserved.
- image size
I am using image with size 240px x 240px
, but you can apply custom sized image because system will automatically scalle-to-fill image if too small/big.
Wrap up
That said, if you want to support both iOS 7 and iOS 8+, you have to have 2 versions of custom UIActivity
icon image.
For iOS 7 you should use 120px x 120px sized image with transparent background. Note: find the size that best suits your needs.
For iOS 8+ you should use custom sized square image with white background and "visible" part of an arbitrary colour.
Code example
- (UIImage *)activityImage
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
return [UIImage imageNamed:@"activity_icon_ios8"];
}
else {
return [UIImage imageNamed:@"activity_icon"];
}
}
Hope that helps!
来源:https://stackoverflow.com/questions/25817265/ios-8-custom-uiactivity-image-black-background-color