Die benutzerdefinierte Schriftart UIAlertController funktioniert nicht unter iOS

8

Benutzerdefinierte UIAlertController-Schriftart funktioniert nicht.

Der folgende Code ist eine Funktion ShowActionSheetAsync , show ActionSheet . An dieser Stelle möchte ich die Schriftart von ActionSheet ändern. Ich habe mehrere Möglichkeiten ausprobiert, aber es hat nicht gut funktioniert. Gibt es eine gute Lösung?

%Vor%

Erster Versuch Der folgende Code funktioniert nicht richtig.

  • Wenn ich den Code auf [Block 1] oder [Block 2]

    setze
    • Es funktioniert überhaupt nicht
  • Wenn ich den Code auf [Block 3]

    setze
    • Gilt nur für die erste show ActionSheet . Ab dem zweiten Mal funktioniert es nicht

UILabel.AppearanceWhenContainedIn(typeof(UIActionSheet)).Font = UIFont.FromName(StyleResources.MediumFontName, 20);

Der zweite Versuch Der folgende Code funktioniert auch nicht richtig.

  • Wenn ich den Code auf [Block 2]

    setze
    • Nachdem die Standardschrift für kurze Zeit angezeigt wurde, wird die benutzerdefinierte Schriftart
    • angezeigt
  • Wenn ich den Code auf [Block 3]

    setze
    • funktioniert nur auf der Schaltfläche cancel

FindDescendantViews<UILabel>() ist eine Erweiterungsmethode für UIView und gibt alle untergeordneten Ansichten des entsprechenden Typs zurück.

%Vor%     
wplong11 24.05.2016, 06:35
quelle

3 Antworten

1

UIAlertController UILabels Schriftart und Farbe können über KVC mit der Taste attributedTitle eingestellt werden. Benutze dies in [Block 3]

%Vor%     
Pau Senabre 30.05.2016 09:59
quelle
1

Es ist nicht erlaubt, Standard-Dinge eines UIAlertControllers entweder abzuleiten oder zu ändern. Sie müssen eine benutzerdefinierte Ansicht dafür erstellen.

    
Bhavuk Jain 03.06.2016 21:09
quelle
1

Ich habe hier die Lösung. Ich habe einen benutzerdefinierten AlertThemeConfigurator erstellt, der rekursiv alle Subviews durchsucht, die nach UILabels suchen, und setzt dann den themed attributedText für den Titel, die Nachricht und verschiedene Arten von Aktionen auf sie. Fühlen Sie sich frei, die attributierten Strings passend zu stylen.

%Vor%

Um es zu präsentieren, rufen Sie

%Vor%     
AntonTheDev 03.06.2016 19:29
quelle