在iPad mini iOS 8上运行iPhone应用程序会导致UIActivityViewController中的图标大小错误

在iPad mini iOS 8上运行iPhone应用程序会导致UIActivityViewController中的图标大小错误,ios,iphone,ios8,uiactivityviewcontroller,ipad-mini,Ios,Iphone,Ios8,Uiactivityviewcontroller,Ipad Mini,我有一个iPhone应用程序(不支持通用)在iPad mini iOS 8上运行。但我发现UIActivityViewController中的图标大小不正确。如何解决这个问题 只需初始化默认UIActivityViewController,即可重现此问题 UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"hello"] applicationActivities:

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

只需初始化默认UIActivityViewController,即可重现此问题

UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"hello"] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
错误行为如下所示:

您可能使用的图像尺寸太大,无法适应此区域,请尝试使用具有
1x
2x
的多尺寸图像,这可以解决您的问题,例如,将同一图像转换为两种尺寸的徽标,30x30和60x60,并将其命名为

30x30图标显示为->sampleLogo.png

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

Images.xcsets
中以相同的名称(而不是两个不同的图像)导入这些文件,然后尝试使用此文件

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

你可能使用的图像尺寸太大,不适合这个区域,试着使用多尺寸图像和
1x
,和
2x
这可以解决您的问题,例如,将相同的图像转换为两种尺寸的徽标,30x30和60x60,并将它们命名为

30x30图标显示为->sampleLogo.png

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

Images.xcsets
中以相同的名称(而不是两个不同的图像)导入这些文件,然后尝试使用此文件

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

你可能使用的图像尺寸太大,不适合这个区域,试着使用多尺寸图像和
1x
,和
2x
这可以解决您的问题,例如,将相同的图像转换为两种尺寸的徽标,30x30和60x60,并将它们命名为

30x30图标显示为->sampleLogo.png

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

Images.xcsets
中以相同的名称(而不是两个不同的图像)导入这些文件,然后尝试使用此文件

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

你可能使用的图像尺寸太大,不适合这个区域,试着使用多尺寸图像和
1x
,和
2x
这可以解决您的问题,例如,将相同的图像转换为两种尺寸的徽标,30x30和60x60,并将它们命名为

30x30图标显示为->sampleLogo.png

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

Images.xcsets
中以相同的名称(而不是两个不同的图像)导入这些文件,然后尝试使用此文件

编辑: 30x30和60x60只是给您一个想法,而且如果您的应用程序与iPhone 6 Plus兼容,那么您可能还需要使用一个在给定示例中为90x90的
3x
图像。这里有三件事需要注意:

  • 图像背景
  • 图像不透明
  • 图像大小

  • iOS 7
  • 图像背景
  • 图像背景应该是透明的

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

  • 图像大小
  • 由于如果图像太小/太大,系统将无法缩放图像,因此必须提供适当大小的图像。我发现图像大小
    120px 120px
    非常合适

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


    iOS 8
  • 图像背景
  • 图像背景应为白色
    以匹配系统ui动作图标,但也可以使用任意颜色

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

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


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

    对于iOS 7您应该使用120px 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

    这里有三件事需要注意:

  • 图像背景
  • 图像不透明
  • 图像大小

  • iOS 7
  • 图像背景
  • 图像背景应该是透明的

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

  • 图像大小
  • 由于如果图像太小/太大,系统将无法缩放图像,因此必须提供适当大小的图像。我发现图像大小
    120px 120px
    非常合适

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


    iOS 8
  • 图像背景
  • 图像背景应为白色