[英]Running iPhone app on iPad mini iOS 8 results in wrong icon size in UIActivityViewController
我在iPad mini iOS 8上運行了一個iPhone應用程序(不支持Universal)。但是我發現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
這里有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
您可能使用的圖像尺寸太大,無法適合該區域,請嘗試使用1x
和2x
多尺寸圖像,這樣可以解決您的問題,例如將同一圖像轉換為徽標,30x30和60x60和名稱的2種尺寸他們作為
30x30圖標變為-> sampleLogo.png
60x60圖標變為-> sampleLogo@2x.png
將這些文件以相同的名稱(不是兩個不同的圖像)導入到Images.xcassets
,然后嘗試使用它。
編輯:30x30和60x60只是為了給您一個想法,如果您的應用程序與iPhone 6 Plus
兼容,那么您可能還需要使用給定示例中的90x90的3x
圖像
這些圖像需要具有透明的背景,我建議使用以下尺寸:// iPadShare @ 2x應該為126像素,iPadShare應該為53像素,iPhoneShare @ 2x應該為100像素,iPhoneShare應該為50像素。 我發現這些尺寸可以滿足我的需求。
希望這會有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.