Iphone 带有自定义UIActivity的UIActivityViewController将彩色图像显示为灰色

Iphone 带有自定义UIActivity的UIActivityViewController将彩色图像显示为灰色,iphone,image,ios7,uiactivityviewcontroller,uiactivity,Iphone,Image,Ios7,Uiactivityviewcontroller,Uiactivity,我创建了一个自定义UIActivity以显示在共享工作表中。我创建了一个全彩色的60x60图标(png文件),但当它显示时,它只显示灰色的轮廓。我看不出我写错了什么。我希望有人能看到我错过了什么。任何帮助都将不胜感激。这是我的密码 @implementation MyActivity #pragma mark - Overrides - (NSString *)activityType { return @"MyType"; } - (NSString *)activityTitle

我创建了一个自定义UIActivity以显示在共享工作表中。我创建了一个全彩色的60x60图标(png文件),但当它显示时,它只显示灰色的轮廓。我看不出我写错了什么。我希望有人能看到我错过了什么。任何帮助都将不胜感激。这是我的密码

@implementation MyActivity

#pragma mark - Overrides
- (NSString *)activityType {
    return @"MyType";
}

- (NSString *)activityTitle {
    return @"ShareMe";
}

- (UIImage *)activityImage {
    return [UIImage imageNamed:@"MyIcon_60x60.png"];
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
    return YES;
}

- (void)prepareWithActivityItems:(NSArray *)activityItems {
    // Do Something
}

+ (UIActivityCategory)activityCategory {
    return UIActivityCategoryShare;
}

@end

不幸的是,这是它应该工作的方式。委员会:

图像的alpha通道用作生成最终图像的遮罩 显示给用户的图像。图像中的任何颜色数据 它本身被忽略了

如果要使用全彩图像,必须复制
UIActivityViewController
的行为,并添加对彩色图像的支持


我建议您查看它,因为它支持全彩图标。

尝试在子类UIActivity类的方法中添加一个下划线

- (UIImage *)_activityImage {}

虽然我不确定这是否是一个bug或功能,但在iOS 8中,如果activityCategory是UIActivityCategoryShare,它会显示一个漂亮的圆形颜色图标。它在iOS 7中显示一个灰色框。 _activityImage对我来说是一个私有API

+ (UIActivityCategory)activityCategory {
    return UIActivityCategoryShare;
}

在iOS 10中,将UIActivity子类的
activityCategory
class属性设置为.share。这将导致活动图标以彩色显示在UIActivityViewController的顶行中

在UIActivity子类中:

class GroupMessageActivity: UIActivity
{
    ...

    override open class var activityCategory: UIActivityCategory
    {
        get
        {
            return UIActivityCategory.share;
        }
    }

    ...
}

默认值或
UIActivityCategory.action
使用alpha通道在底部的“action”行中生成灰度图像。

谢谢您提供的信息,我通读了该段落,但该句子没有注册。颜色太难看了。除非我花大量时间重新发明轮子,否则我将无法显示像YouTube的红色图标那样的彩色图标。你找到解决方案了吗?我也面临同样的问题?任何帮助都将不胜感激。下面的答案是我唯一找到的。是的,这完全有效-你是否尝试过通过苹果的批准流程?这是一个私有API,但也许你可以偷偷地通过它…嗨,真的非常感谢你它对我来说工作很好,但我不知道它是如何工作的,只是更改下划线()@BrandonA重写UIActivity的activityImage方法来显示图像。根据apple Action图像,如果其颜色为灰色,则应为灰度图像。以下是更详细的解决方案。关于activityCategory:这是正确的解决方案,\ U activityImage可能会导致苹果的拒绝?