2015-09-13 13 views
25

私は現在、3D Touchを使用しているiOS 9アプリケーションのホーム画面クイックアクションを実装しています。私は定義されたUIApplicationShortcutIconType列挙から既存のシステムアイコンを使用していくつかのアクションを持っています。iOS 9アプリケーションで静的なUIApplicationShortcutItemのカスタムアイコンを指定するにはどうすればよいですか?

アン例:

<dict> 
    <key>UIApplicationShortcutItemIconType</key> 
    <string>UIApplicationShortcutIconTypeSearch</string> 
    <key>UIApplicationShortcutItemTitle</key> 
    <string>Search for Parking</string> 
    <key>UIApplicationShortcutItemType</key> 
    <string>SEARCH</string> 
</dict> 

はしかし、のいずれかのアクションのために私は、カスタムアイコンを使用します。 UIApplicationShortcutItemIconType文字列をイメージアセットの名前に置き換えようとしましたが、動作しません。

UIApplicationShortcutIcon.iconWithTemplateImageName()を使用して動的アクションを行うのは簡単ですが、このアクションは静的である必要があります。

答えて

33

UIApplicationShortcutItemIconTypeキーを使用する代わりに、UIApplicationShortcutItemIconFileキーで置き換えてから、イメージファイルまたはImageAssetの名前を指定します。このよう

:彼らがいたとして、キーの

<dict> 
    <key>UIApplicationShortcutItemIconFile</key> 
    <string>MyCustomImageName</string> 
</dict> 

残りは滞在することができます。

+0

Iの避難所これを動作させることができました。作業イメージの例がありますか?イメージは特定のサイズである必要がありますか?どのファイル名「」を使用していますか? – pkamb

+5

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeysから。html "アイコンは、これらのテンプレートファイルに示されているように、iOSヒューマンインターフェイスのガイドラインに記載されているように、正方形、単色、35x35ポイントである必要があります。 –

+2

70x70も同様に機能し、Retinaディスプレイでよりよく見えることに注意してください。 –

19

UIApplicationShortcutItemIconFileをキーとして使用し、画像ファイルの名前(ファイル拡張子の有無にかかわらず)を文字列として使用します。例:「lightning.png」あなたはInfo.plistファイルに以下を追加しますという名前の画像を使用して...

<key>UIApplicationShortcutItems</key> 
<array> 
    <dict> 
     <key>UIApplicationShortcutItemIconFile</key> 
     <string>lightning</string> 
     <key>UIApplicationShortcutItemTitle</key> 
     <string>Search for Parking</string> 
     <key>UIApplicationShortcutItemType</key> 
     <string>SEARCH</string> 
    </dict> 
</array> 

画像は、プロジェクトツリー内またはAssets.xcassetsのいずれかで保存することができます。 Assets.xcassetsにイメージを保存する場合は、ファイル名とは異なる名前を付けたイメージセット名を使用します。

画像ファイルはPNG(透明にしたい場合)、正方形、単色、35×35ピクセルである必要があります。マルチカラー画像は基本的に黒のオーバーレイを取得します。

ここでは上記の基準を満たしているテスト画像です:

lightning.png with transparent background 35x35px

だけで、「lightning.png」としてこの画像を保存し、プロジェクトツリーにドラッグして、あなたの情報に上記のコードを使用します。 plistファイル。ソースコードとしてのInfo.plistを編集慣れていない方のため

は、ここにあなたがプロパティリストでネイティブにそれを行う場合はどのように見えるべきか以上です:

Info.plist

コードにこれらのショートカットを添付するためには、 AppDelegate.swiftで行います。次の行を追加します。

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { 

    if shortcutItem.type == "SEARCH" { 
     print("Shortcut item tapped: SEARCH") 
     // go to SEARCH view controller 
    } 

} 

それはUIApplicationShortcutItemTypeための規則はすべて大文字(例えば「SEARCH」)ではないことは注目に値しますが、むしろ前の修正として、あなたのバンドル識別子を使用して:

com.myapps.shortcut-demo.search 
+0

実際、正しいサイズは '@ 3x'では' 104×104'、 '@ 2x'では' 70 x 70'です。 –

+1

正しいサイズは '35pt' =' 105 x 105 @ 3x'と '70 x 70 @ 2x'です –