cocoa-touch – iOS 8自定义UIActivity图像黑色背景色

我正在尝试向UIActivityController添加UIActivityCategoryAction类型的自定义UIActivity.但是在iOS 8中,所有这些都出现在黑色背景下.

有没有办法改变这个?

解决方法

这里有三件事需要注意:

>图像背景,
>图像不透明,
>图像大小.

IOS 7

>图片背景:

图像背景应该是透明的.

>图像不透明

图标的“可见部分”应该是非透明的,也就是不透明的.请注意,不会保留任何颜色信息:

>图像大小

因为如果太小/太大,图像将不会被系统缩放,您必须提供适当大小的图像.我发现图像尺寸为120px x 120px以完美贴合.

注意:此大小也会考虑图标填充.

iOS 8

>图片背景:

图像背景应为白色以匹配系统UIAction图标,但您也可以使用任意颜色.

>图像不透明

与iOS 7中的相同,图标的“可见”部分应该是非透明的,也就是不透明的,但是在iOS 8中将保留颜色信息.

>图像大小

我正在使用尺寸为240像素x 240像素的图像,但您可以应用自定义尺寸的图像,因为如果太小/太大,系统将自动加载图像.

包起来

也就是说,如果您想同时支持iOS 7和iOS 8,您必须拥有2个版本的自定义UIActivity图标图像.

对于iOS 7,您应该使用120px x 120px大小的图像和透明背景.注意:找到最适合您需求的尺寸.

对于iOS 8,您应该使用自定义大小的方形图像,白色背景和任意颜色的“可见”部分.

代码示例

- (UIImage *)activityImage
{
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
        return [UIImage imageNamed:@"activity_icon_ios8"];
    }
    else {
        return [UIImage imageNamed:@"activity_icon"];
    }
}

希望有所帮助!

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...