gpt4 book ai didi

ios - 为什么 Swift 自定义 UIActivity 图标图像不显示,而 Objective-C 正确显示?

转载 作者:行者123 更新时间:2023-11-28 12:15:45 27 4
gpt4 key购买 nike

这个问题与an existing one有关,但我不明白执行的区别。

我的项目开发环境是XCode 8.3,Swift 3和Bridging Objc,iOS 9.0上层。

我想在第二行显示事件图像。

当 UIActivity 的类别是 Swift 中的 Action 时,事件图标是问题。

案例 1。 Swift CustomActivity,类别类型为action。

这不是显示图像。

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 自定义事件

在Objc中,覆盖实例变量是正确执行的。

+ (UIActivityCategory) activityCategory
{
return UIActivityCategoryAction;
}

- (UIImage *) _activityImage
{
return [UIImage imageNamed:@"ic_facebook"];
}

Simulator Images by case

我不明白,为什么Objective-C的实例参数是正确执行的?

在 Swift 中,这是不可用的实现吗?

有什么区别??

最佳答案

来自 UIActivity activityImage 的文档:

The alpha channel of the image is used as a mask to generate the final image that is presented to the user. Any color data in the image itself is ignored. Opaque pixels have a gradient applied to them and this gradient is then laid on top of a standard background. Thus, a completely opaque image would yield a gradient filled rectangle.

此文档中缺少的是,这仅在 activityCategory 设置为 UIActivityCategoryAction (.action) 时适用。它过去也适用于 UIActivityCategoryShared (.shared),直到它在早期版本的 iOS 中发生了变化(我认为它在 iOS 8 中发生了变化)。

这就是为什么您的第一组 Swift 代码似乎不起作用的原因。您得到灰色矩形是因为您需要类型 .action 的图像掩码。

您的 Objective-C 代码很奇怪。为什么要实现 - (UIImage *) _activityImage 而不是 - (UIImage *)activityImage ?为什么是下划线?

关于ios - 为什么 Swift 自定义 UIActivity 图标图像不显示,而 Objective-C 正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46690280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com