11

我创建了一个自定义 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
4

4 回答 4

33

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

- (UIImage *)_activityImage {}

你失去了圆形的灰色边界框

于 2014-03-26T18:56:34.503 回答
7

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

+ (UIActivityCategory)activityCategory {
    return UIActivityCategoryShare;
}
于 2015-05-25T06:04:06.347 回答
3

不幸的是,这就是它应该工作的方式。苹果文档状态:

图像的 alpha 通道用作掩码以生成呈现给用户的最终图像。图像本身中的任何颜色数据都会被忽略...

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

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

于 2014-01-02T22:36:58.913 回答
0

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

在您的 UIActivity 子类中:

class GroupMessageActivity: UIActivity
{
    ...

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

    ...
}

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

于 2017-01-14T04:56:05.357 回答