2015-09-13 8 views
25

Şu anda 3D Touch'ı kullanarak iOS 9 uygulamam için ana ekran Hızlı Eylem'i uyguluyorum. Tanımlı UIApplicationShortcutIconType enum'undan mevcut Sistem simgelerini kullanarak birkaç eylemim var.iOS 9 Uygulamamdaki statik UIApplicationShortcutItem için özel bir simge nasıl belirtebilirim?

Bir Örnek:

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

Ancak eylemlerden biri için ben özel bir simge kullanmak istiyorum. UIApplicationShortcutItemIconType dizesini görüntü varlığımın adıyla değiştirmeyi denedim, ancak bu çalışmaz.

UIApplicationShortcutIcon.iconWithTemplateImageName() işlevini kullanarak dinamik eylemler için yeterince kolay, ancak bu eylemin statik olması gerekiyor.

cevap

33

UIApplicationShortcutItemIconType anahtarını kullanmak yerine, UIApplicationShortcutItemIconFile anahtarıyla değiştirin ve ardından görüntü dosyanızın veya ImageAsset'in adını sağlayın. Bunun gibi

: oldukları gibi tuşların

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

dinlenme kalabilirler.

+0

Ben cenneti Bunu işe almak mümkün oldu. Çalışan bir resmin örneği var mı? Görüntünün belirli bir boyutta olması gerekiyor mu? Hangi dosya adı '' kullanıyorsunuz? – pkamb

+5

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys adresinden.html "Simgeler, bu şablon dosyalarında gösterildiği gibi ve iOS İnsan Arabirimi Yönergeleri'nde açıklandığı gibi kare, tek renk ve 35x35 nokta olmalıdır." –

+2

70x70'in de çalıştığını ve Retina ekranlarında çok daha iyi olduğunu unutmayın. –

19

UIApplicationShortcutItemIconFile öğesini bir anahtar olarak ve görüntü dosyanızın adı (dosya uzantı olsun veya olmasın) dizesi olarak kullanın. Örneğin: "lightning.png" adlı bir resim kullanarak

<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> 

görüntü

saklanan ya da proje ağacında veya Assets.xcassets içinde olabilir ... info.plist için aşağıdaki eklersiniz. Resmi Assets.xcassets'te saklarsanız, dosya adınızdan farklı bir şey adlandırırsanız, Görüntü Ayarı adını kullanın.

Görüntü dosyanızın PNG (saydamlık istiyorsanız), kare, tek renkli ve 35x35 piksel olması gerekir. Çok renkli görüntüler esasen siyah kaplamadır.

İşte yukarıdaki kriterleri karşılayan bir test görüntüsü var:

lightning.png with transparent background 35x35px

Sadece "lightning.png" olarak görüntüyü kaydetmek proje ağaca sürükleyin ve Bilgiler yukarıdaki kodu kullanın. plist dosyası.

Info.plist

koduna Bu kısayolları eklemek için teşekkür: kaynak kodu olarak Info.plist'ni düzenleme değil rahat olanlar için

, burada Mülkiyet Listesinde doğal yaparsak nasıl yukarıda görünmelidir var AppDelegate.swift içinde bunu yapın. Ekle aşağıdadır:

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

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

} 

O UIApplicationShortcutItemType için kongre tüm kapaklar olmadığını belirtmek gerekir (örneğin, "ARAMA"), daha ziyade bir ön tespit olarak paket tanımlayıcı kullanan:

com.myapps.shortcut-demo.search 
+0

Aslında 2x'lik görüntüler için doğru boyut '3x' için' 104 × 104' ve '70x70'' dir. –

+1

Doğru boyut '35pt' = 105 x 105 @ 3x' ve' 70 x 70 @ 2x' –