9
votes

UialertController polices personnalisée ne fonctionne pas chez iOS

UIALERTCONTROLLER Personnalisé Personnalisage ne fonctionne pas.

Le code suivant est une fonction showactionsheetasync code>, afficher actionchette code>. À ce stade, je veux modifier la police de la fiche action code>. J'ai essayé plusieurs manières, mais cela n'a pas bien fonctionné. Y a-t-il une bonne solution? p> xxx pré>

première tentative forte> Le code suivant ne fonctionne pas correctement. P>

  • Lorsque je mettais le code sur [bloc 1] code> ou [bloc 2] p> p> p> p> P>

    • Cela ne fonctionne pas du tout li> ul> li>
    • Lorsque je mettez le code sur [bloc 3] code> p>

      • ne s'applique que lorsque le premier spectacle ActionSheet Code>. À partir de la seconde fois, cela ne fonctionne pas li> ul> li> ul>

        Uilabel.appreucaranceHhencontainé (typeof (Uiacersheet)). Police = Uifont.fromname (styleesources.mediumfontname, 20); code> p>

        la deuxième tentative forte> Le code suivant ne fonctionne pas non plus correctement. P>

        • Lorsque je mets le code sur [bloc 2] code> p>

          • Après avoir montré la police par défaut pendant une courte période, affichez la police personnalisée li> ul> li>
          • Lorsque je mettez le code sur [bloc 3] code> p>

            • Il fonctionne uniquement sur Annuler CODE> BOUTON LI> ul> li> ul>

              FindDescendantviews () code> est une méthode d'extension pour uiview code> et renvoie toute la vue enfant du type approprié. P>

              var labels = alert.View.FindDescendantViews<UILabel>();
              foreach (var label in labels)
              {
                  label.Font = UIFont.FromName(StyleResources.MediumFontName, 20);
              }
              


4 commentaires

Avez-vous fatigué avec label.font = uifont (Nom: Styleresources.MediumFontName, Taille: 20) ?


Quelle est la différence avec ma deuxième tentative et votre code? @Jigartarsariya


Avez-vous regardé dans le Protocole UIAPPearance ?


Vous signifie ma première tentative? (Uilabel.apprenceHhencontainé) @Brett Donald


3 Réponses :


1
votes

uialertController uilabels police et couleur peut être défini via kVC à l'aide de la touche attributettitle . Utilisez ceci dans [bloc 3] xxx


2 commentaires

Ce n'est pas une solution sur ma question. Je veux changer de style de bouton (polices) et non un titre et des styles de message


Jetez un oeil à ce Stackoverflow.com/Questtions/26460706/ ... BTW KVC est codage de la valeur clé développeur.apple.com/library/ios/documentation/cocoa/conceptu al / ...



1
votes

J'ai la solution ici. J'ai créé un alertthemeconfigurateur personnalisé qui exécute récursivement toutes les sous-étapes à la recherche d'Uilabels, puis définit le thème attribuétext sur eux pour le titre, le message et différents types d'actions. N'hésitez pas à styler les cordes attribuées de manière appropriée.

 let alert = CustomAlertController(title: "Title", message:"Message" , preferredStyle: UIAlertControllerStyle.ActionSheet)
 alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Default, handler: nil))
 presentViewController(alert, animated: true, completion: nil)
 AlertThemeConfigurator.configureAlertViewController(alert)


4 commentaires

Je pense que cela n'est pas autorisé à sous-classer une uialertController selon les directives d'Apple.


Je viens de mettre à jour la solution pour ne pas hériter de l'uialertviewController :) J'espère que cela aide


@Bhavukjain Je viens de mettre à jour une fois de plus et j'ai créé une classe privée pour effectuer le thème de l'étiquette, de sorte que les méthodes ne soient pas exposées.


@Bhavukjain vient de réaliser que j'avais un type dedans, n'appelions pas AlertLabels à AlertLabelconfigurator. Corrigé



1
votes

Il n'est pas autorisé à sous-classer ou à modifier les choses par défaut d'un uialertController. Vous devez faire une vue personnalisée pour cela.


0 commentaires