Soru İOS 9 Uygulamamdaki statik UIApplicationShortcutItem için özel bir simge nasıl belirtebilirim?


Şu anda 3D Touch'ı kullanarak iOS 9 uygulamam için ana ekran Hızlı İşlemler uyguluyor. Tanımlı UIApplicationShortcutIconType enum'undan mevcut Sistem simgelerini kullanarak birkaç eylemim var.

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 ö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 () kullanarak dinamik eylemler için yeterince kolay, ancak bu eylemin statik olması gerekiyor.


25
2017-09-13 20:51


Menşei




Cevaplar:


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

Bunun gibi:

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

Anahtarların geri kalanı oldukları gibi kalabilir.


34
2017-09-13 20:51



Bunu çalışmaya başlayamadım. Çalışan bir resmin örneği var mı? Görüntünün belirli bir boyutta olması gerekiyor mu? Hangi dosya adı <string> kullanıyor musun? - pkamb
itibaren developer.apple.com/library/ios/documentation/General/Reference/...  "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." - Chris Allwein
70x70'in de işe yaradığını ve Retina ekranlarında çok daha iyi olduğunu unutmayın. - Eddy Verbruggen
Eddy, dikkat et ve piksel değil dedim. Böylece bu 35px by 35px 1x görüntüye, retina için 70px 70px 2x görüntüye ve 6+ için 105 piksel x 105 piksel boyutuna karşılık gelir. - Chris Allwein
@ChrisAllwein Desenleri indirdim ve farklı boyutlarda var. İlk boyut 70px 70px ve ikinci boyut 104px by 104px. Bu 104 104 tarafından yanlış mı? - Alexander


UIApplicationShortcutItemIconFile öğesini bir anahtar olarak ve görüntü dosyanızın adı (dosya uzantısı olsun ya da olmasın) dizge olarak kullanın. Örneğin: "lightning.png" adlı bir görüntüyü kullanarak Info.plist'e aşağıdakileri eklersiniz ...

<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ü, proje ağacınızda veya Assets.xcassets dosyasında saklanabilir. 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 bir PNG (saydamlık istiyorsanız), kare, tek renk ve 35x35 piksel olması gerekir. Çok renkli görüntüler esasen siyah kaplamadır.

İşte yukarıdaki ölçütleri karşılayan bir test resmi:

lightning.png with transparent background 35x35px

Sadece bu resmi "lightning.png" olarak kaydedin, proje ağacınıza sürükleyin ve yukarıdaki kodu Info.plist dosyanızda kullanın.

Info.plist'i kaynak kodu olarak düzenlemenin rahat etmediği durumlar için, burada, Mülk Listesinde yerel olarak yapıp yapmadığınıza bakmanız gerekir:

Info.plist

Bu kısayolları kodlara eklemek için bunu AppDelegate.swift uygulamasında yapın. Aşağıdakileri ekleyin:

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 sözleşmesinin tüm kapaklar (ör. "SEARCH") değil, daha ziyade paket tanımlayıcınızı ön düzeltme olarak kullanması dikkat çekicidir:

com.myapps.shortcut-demo.search

19
2017-10-15 04:01



Aslında doğru boyut 104 × 104için @3x ve 70 x 70için @2x  Görüntüler . - Mc.Lover
Doğru boyut 35pt = 105 x 105 @3x ve 70 x 70 @2x - stevo.mit