我在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
答案 0 :(得分:3)
这里有 3件事:
图像背景应该是透明的。
图标的“可见部分”应该是非透明的,也就是不透明的。请注意,任何颜色信息都不会被保留:
因为如果太小/太大,系统不会缩放图像,您必须提供适当大小的图像。我发现图片大小120px x 120px
非常合身。
注意:此尺寸也会考虑图标填充。
图片背景应为白色以匹配系统UIAction
图标,但您也可以使用任意颜色。
与iOS 7相同,图标的“可见”部分应该是非透明的,也称为不透明,但在iOS 8中颜色信息将被保留。
我使用的是尺寸为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
答案 1 :(得分:0)
您可能使用的图片尺寸太大而无法放入此区域,请尝试使用1x
和2x
的多尺寸图片,这可以解决您的问题,例如转换相同的图片标识,30x30和60x60分为2种尺寸,并将其命名为
30x30图标为 - > sampleLogo.png
60x60图标为 - > sampleLogo@2x.png
使用相同的名称(不是两个不同的图像)在Images.xcassets
中导入这些内容,然后尝试使用它。
编辑:
30x30和60x60只是为了给你一个想法,如果你的应用程序与iPhone 6 Plus
兼容,那么你可能还需要使用给定示例中的3x
图像为90x90
答案 2 :(得分:0)
这些图片需要有透明背景,我推荐这些尺码: // iPadShare @ 2x应为126像素,iPadShare应为53像素,iPhoneShare @ 2x应为100像素,iPhoneShare应为50像素。我发现这些尺寸适用于我正在制作的东西。
希望这会有所帮助:)