这个问题与an existing one有关,但我不明白执行的差异。
Myproject开发环境是XCode 8.3,Swift 3和Bridging Objc,iOS 9.0 upper。
我想在第二行显示活动图像。
当UIActivity的类别是Swift中的操作时,活动图标就会出现问题。
案例1。 Swift CustomActivity,类别类型是动作。
这不是显示图像。
override class var activityCategory: UIActivityCategory {
return .action
}
override var activityImage: UIImage? {
return UIImage(named: "ic_facebook")
}
情况2。 Swift CustomActivity,类别类型是共享。
这是显示图像。
override class var activityCategory: UIActivityCategory {
return .share
}
override var activityImage: UIImage? {
return UIImage(named: "ic_facebook")
}
情形3。 Objective-C CustomActivity
在Objc中,覆盖实例变量是正确的执行。
+ (UIActivityCategory) activityCategory
{
return UIActivityCategoryAction;
}
- (UIImage *) _activityImage
{
return [UIImage imageNamed:@"ic_facebook"];
}
我不明白,为什么Objective-C实例参数执行正确?
在Swift中,这是不可靠的工具吗?
有什么区别?
答案 0 :(得分:1)
来自UIActivity activityImage
的文档:
图像的Alpha通道用作蒙版,以生成呈现给用户的最终图像。图像本身中的任何颜色数据都将被忽略。不透明像素具有应用于它们的渐变,然后将此渐变放置在标准背景之上。因此,完全不透明的图像会产生渐变填充矩形。
本文档中缺少的是,这仅适用于activityCategory
设置为UIActivityCategoryAction
(.action
)的情况。它曾经适用于UIActivityCategoryShared
(.shared
),直到它在早期版本的iOS中发生变化(我认为它在iOS 8中已更改)。
这就是为什么你的第一组Swift代码看起来不起作用的原因。你得到灰色矩形,因为你需要一个.action
类型的图像掩码。
您的Objective-C代码很奇怪。为什么要实施- (UIImage *) _activityImage
而不是- (UIImage *)activityImage
?为什么是下划线?