Alternatywne ikony aplikacji na platformie Xamarin.iOS
W tym artykule opisano używanie alternatywnych ikon aplikacji na platformie Xamarin.iOS.
Firma Apple dodała kilka ulepszeń systemu iOS 10.3, które umożliwiają aplikacji zarządzanie jej ikoną:
ApplicationIconBadgeNumber
— Pobiera lub ustawia znaczek ikony aplikacji na platformie Springboard.SupportsAlternateIcons
— Jeślitrue
aplikacja ma alternatywny zestaw ikon.AlternateIconName
— Zwraca nazwę aktualnie wybranej ikony alternatywnej lubnull
jeśli używasz ikony podstawowej.SetAlternameIconName
— Użyj tej metody, aby przełączyć ikonę aplikacji na daną ikonę alternatywną.
Dodawanie alternatywnych ikon do projektu Xamarin.iOS
Aby umożliwić aplikacji przełączenie się na alternatywną ikonę, kolekcja obrazów ikon musi zostać uwzględniona w projekcie aplikacji platformy Xamarin.iOS. Tych obrazów nie można dodać do projektu przy użyciu typowej Assets.xcassets
metody. Należy je dodać bezpośrednio do folderu Resources .
Należy wykonać następujące czynności:
Wybierz wymagane obrazy ikon w folderze, zaznacz wszystkie i przeciągnij je do folderu Resources w Eksplorator rozwiązań:
Po wyświetleniu monitu wybierz pozycję Kopiuj, użyj tej samej akcji dla wszystkich wybranych plików i kliknij przycisk OK :
Folder Resources powinien wyglądać podobnie do następującego po zakończeniu:
Modyfikowanie pliku Info.plist
Po dodaniu wymaganych obrazów do folderu Resources klucz CFBundleAlternateIcons należy dodać do pliku Info.plist projektu. Ten klucz zdefiniuje nazwę nowej ikony i obrazy, które go tworzą.
Należy wykonać następujące czynności:
- W Eksplorator rozwiązań kliknij dwukrotnie plik Info.plist, aby otworzyć go do edycji.
- Przejdź do widoku Źródła .
- Dodaj klucz Ikony pakietu i pozostaw wartość Typ ustawioną na Słownik.
CFBundleAlternateIcons
Dodaj klucz i ustaw typ na Słownik.AppIcon2
Dodaj klucz i ustaw typ na Słownik. Będzie to nazwa nowego zestawu ikon alternatywnej aplikacji.CFBundleIconFiles
Dodawanie klucza i ustawianie typu na tablicę- Dodaj nowy ciąg do
CFBundleIconFiles
tablicy dla każdego pliku ikon z pominięciem rozszerzenia i@2x
sufiksów ,@3x
itp. (na przykład100_icon
). Powtórz ten krok dla każdego pliku tworzącego zestaw ikon alternatywnych. UIPrerenderedIcon
Dodaj klucz do słownikaAppIcon2
, ustaw wartość Typ na wartość logiczną, a wartość na Nie.- Zapisz zmiany w pliku.
Wynikowy plik Info.plist powinien wyglądać następująco po zakończeniu:
Lub w następujący sposób, jeśli został otwarty w edytorze tekstów:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>AppIcon2</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>100_icon</string>
<string>114_icon</string>
<string>120_icon</string>
<string>144_icon</string>
<string>152_icon</string>
<string>167_icon</string>
<string>180_icon</string>
<string>29_icon</string>
<string>40_icon</string>
<string>50_icon</string>
<string>512_icon</string>
<string>57_icon</string>
<string>58_icon</string>
<string>72_icon</string>
<string>76_icon</string>
<string>80_icon</string>
<string>87_icon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
Zarządzanie ikoną aplikacji
Po poprawnym skonfigurowaniu obrazów ikon w projekcie Xamarin.iOS i pliku Info.plist deweloper może użyć jednej z wielu nowych funkcji dodanych do systemu iOS 10.3, aby kontrolować ikonę aplikacji.
Właściwość SupportsAlternateIcons
UIApplication
klasy umożliwia deweloperowi sprawdzenie, czy aplikacja obsługuje ikony alternatywne. Na przykład:
// Can the app select a different icon?
PrimaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
AlternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
Właściwość ApplicationIconBadgeNumber
UIApplication
klasy umożliwia deweloperowi pobranie lub ustawienie bieżącego numeru znaczka ikony aplikacji na platformie Springboard. Wartością domyślną jest zero (0). Na przykład:
// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;
Właściwość AlternateIconName
UIApplication
klasy umożliwia deweloperowi uzyskanie nazwy aktualnie wybranej alternatywnej ikony aplikacji lub zwraca null
ją, jeśli aplikacja używa ikony podstawowej. Na przykład:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
}
Właściwość SetAlternameIconName
UIApplication
klasy umożliwia deweloperowi zmianę ikony aplikacji. Przekaż nazwę ikony, aby wybrać lub null
wrócić do ikony podstawowej. Na przykład:
partial void UsePrimaryIcon (Foundation.NSObject sender)
{
UIApplication.SharedApplication.SetAlternateIconName (null, (err) => {
Console.WriteLine ("Set Primary Icon: {0}", err);
});
}
partial void UseAlternateIcon (Foundation.NSObject sender)
{
UIApplication.SharedApplication.SetAlternateIconName ("AppIcon2", (err) => {
Console.WriteLine ("Set Alternate Icon: {0}", err);
});
}
Po uruchomieniu aplikacji i wybraniu przez użytkownika alternatywnej ikony zostanie wyświetlony alert podobny do następującego:
Jeśli użytkownik przełączy się z powrotem do ikony podstawowej, zostanie wyświetlony alert podobny do następującego:
Podsumowanie
W tym artykule opisano dodawanie alternatywnych ikon aplikacji do projektu platformy Xamarin.iOS i używanie ich wewnątrz aplikacji.