[Obj-C] NSString stringWithFormat retire les espaces à  la fin du texte

Hello tout le monde,


 


J'ai un petit problème actuellement avec un texte qui se trouve dans un label.


 


Voila mon code



NSString* myText = @Salut;
rowLabel.textAlignment = NSTextAlignmentRight;
rowLabel.text = [NSString stringWithFormat:@%@ ", myText];

Le problème que j'ai est qu'il m'enlève les 2 espaces après le texte, alors que justement j'aimerais les garder.


 


J'ai essayé différentes choses :


- Aggrandir la taille du label (mais forcément vu qu'il est aligné à  droite ça change rien)


- Mettre %20 dans mon texte


- Utiliser la méthode "stringByPaddingToLength:withString:startingAtIndex:"


 


Mais rien n'y fait à  chaque fois mon espace n'est pas gardé.


 


Avez-vous une solution svp ?


 


Merci d'avance.


Réponses

  • CéroceCéroce Membre, Modérateur
    ça doit fonctionner avec des espaces insécables (alt-espace), mais la bonne méthode semble plutôt de placer correctement le label. Utilise l'auto-layout pour ajouter la marge.
  • Ben77650Ben77650 Membre
    novembre 2016 modifié #3

    Hello Céroce


     


    Déjà  merci pour ta réponse.


     


    L'espace insécable ne change rien au problème (et s'affiche comme un espace normal quand je fait alt-espace).


     


    Quant au fait d'utiliser auto layout, c'est pas possible, le projet existe depuis avant auto layout donc ne l'embarque pas, et la livraison est censé être vendredi soir, donc pas le temps de tout réadapter pour gérer l'autolayout


     


    Edit 16h32: Même l'ajout de "\u00A0" (espace insécable) ne marche pas...


  • Tu ne peux pas changer sa frame ? Sinon, tu peux peut-être lui mettre un UIEdgeInsets ? Ou un peu plus lourd, passer par NSAttributedString, lui coller un NSParagraphStyle dans lequel tu as modifié le tailIndent?


  • Je peut changer sa frame, mais comme le texte est toujours aligné à  droite bah ça changera pas le souci ;)


     


    Je me renseigne sur UIEdgeInsets et NSAttributedString


  • LarmeLarme Membre
    novembre 2016 modifié #6


    Je peut changer sa frame, mais comme le texte est toujours aligné à  droite bah ça changera pas le souci ;)




    Ce que tu veux faire (symbolisation des espaces avec *) : 



    _________________________
    | ___________________ |
    | |      mon_texte**| |
    | | |

    Si tu changes sa frame en



    _______________________
    |                     |
    |   ___________  |
    |   |mon_texte|  |
    |    | |

    En quoi cela ne fonctionnerait pas ?

    Le background du label n'a pas la même couleur que celui de sa superview?

     


  • Bah parce que la dans ton exemple le texte est centré, alors que dans mon cas si je fait un label de 5000 de largeur bah j'aurais mon texte à  droite et 4980 pixels de blanc a gauche


     


    Que je fasse ça


    | |      mon_texte**| |


     


    ou ça


    |   |               mon_texte||


     


    Mon texte est toujours aligné à  droite et sans aucune marge à  droite, et il est justement la le souci ;)




  • Ou un peu plus lourd, passer par NSAttributedString, lui coller un NSParagraphStyle dans lequel tu as modifié le tailIndent?




     


    Merci ça règle mon souci :D

Connectez-vous ou Inscrivez-vous pour répondre.