0

我有一个在 iPad mini iOS 8 上运行的 iPhone 应用程序(不支持通用)。但我发现 UIActivityViewController 中的图标大小不正确。如何解决这个问题?

只需初始化默认 UIActivityViewController 即可重现该问题。

UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"hello"] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];

不正确的行为如下: https://drive.google.com/file/d/0B2C5utygT1vHSnlGUzRVdU5YSTA/view?usp=sharing

4

3 回答 3

3

这里有3点需要注意:

  1. 图像背景,
  2. 图像不透明,
  3. 图片尺寸。

IOS 7

  1. 图片背景

图片背景应该是透明的。

  1. 图像不透明度

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

  1. 图片尺寸

因为如果图像太小/太大,系统不会缩放图像,因此您必须提供适当大小的图像。我发现图像大小120px x 120px非常适合。

注意:此大小还考虑了图标填充。


iOS 8

  1. 图片背景

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

  1. 图像不透明度

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

  1. 图片尺寸

我正在使用 size 的图像240px x 240px,但您可以应用自定义大小的图像,因为如果太小/太大,系统会自动缩放以填充图像


包起来

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

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

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

代码示例

#define isAtLeastiOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)


- (UIImage *)activityImage
{
    if (isAtLeastiOS8)
    {
        return [UIImage imageNamed:@"activity_icon_ios8"];
    }
    else
    {
        return [UIImage imageNamed:@"activity_icon"];
    }
}

希望有帮助!

归功于@damirstuhec

于 2015-04-08T07:56:48.717 回答
0

您可能使用的图像尺寸太大而无法放入该区域,请尝试使用多个尺寸的图像1x2x这样可以解决您的问题,例如将相同的图像转换为 2 种尺寸的徽标,30x30 和 60x60 并将它们命名为

30x30 图标为 -> sampleLogo.png

60x60 图标为 -> sampleLogo@2x.png

以相同的名称(不是两个不同的图像)导入这些,Images.xcassets然后尝试使用它。

编辑:30x30 和 60x60 只是为了给你一个想法,如果你的应用程序兼容iPhone 6 Plus,那么你可能还需要使用3x在给定示例中为 90x90 的图像

于 2015-04-08T07:44:17.577 回答
0

这些图片需要有透明背景,我推荐这些尺寸://iPadShare@2x 应该是 126 像素,iPadShare 应该是 53 像素,iPhoneShare@2x 应该是 100 像素,iPhoneShare 应该是 50 像素。我发现这些尺寸适合我正在制作的东西。

希望这会有所帮助:)

于 2015-04-27T10:52:54.473 回答