10
votes

Objectif c - indentation du texte

Cette question concerne la mise en œuvre d'une indentation du texte ("Le placement du texte plus éloigné du droit de le séparer du texte environnant") dans iOS.

Prenons par exemple le texte suivant: p>

  1. C'est la première section. li>
  2. c'est le second,
    avec deux lignes. li>
  3. C'est le troisième. Li> OL>

    Notez que la deuxième ligne de la section 2 commence plus loin à droite et juste en dessous de la ligne ci-dessus. P>

    Mon code contient un tableau de Nstring code>, chacun doit être affiché sous forme de section avec une balle numérique comme ci-dessus. Par exemple: p> xxx pré>

    i utilise uilable code> pour afficher le texte à l'écran.
    Pour définir le texte de la matrice sur l'étiquette et séparer chaque chaîne dans une nouvelle ligne, j'utilise P>

    myLabel.text = [array componentsJoinedByString:@"\n"];
    


3 commentaires

Vous devez remplacer le drawrect (pour le contrôle) et avoir besoin d'écrire votre propre code d'indentation pour résoudre ce problème.


Essayez-vous de le faire dans une liste à bulleted comme indiqué? Comment renduez-vous le bloc global? Pouvez-vous donner plus de contexte?


@Briannickel Oui J'ai besoin du style Bullet, j'ai ajouté des informations à ma question.


3 Réponses :


0
votes

Uilabel ne va pas le couper si vous avez des exigences spécifiques spécifiques. Pour cela, vous devrez creuser un texte de base. La bonne nouvelle est que le texte de base vous permettra de faire n'importe quel type de mise en page de texte que vous pouvez imaginer. La mauvaise nouvelle est que tout ce pouvoir apporte une certaine complexité, afin de l'utiliser, vous devrez investir un peu de temps à apprendre comment le cadre fonctionne.

Une alternative appropriée dans certaines situations consiste à utiliser une vue Web pour afficher votre texte. UiWebView vous permettra de faire quelle que soit la mise en page de texte que vous pouvez gérer à l'aide de HTML et de CSS.


1 commentaires

10x Pour votre réponse, j'ai imaginé que j'aurais besoin d'utiliser le cadre de texte de base. C'est une question très générique, je suppose que beaucoup de gens contrerent déjà ce problème et ont mis en œuvre une solution générique. Donc, je n'aime pas encore inventer la roue mais d'obtenir une certaine référence à un extrait de code ou du didacticiel.



26
votes

Ceci est possible dans une certaine mesure dans iOS6 avec - [Uilabel SeattributeTextText:] code>.

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.headIndent = 29;

myLabel.attributedText = [[NSAttributedString alloc] initWithString:
    @"1.\tShort line.\n2.\tLong line with content that triggers wrapping.\n3.\tShort line."
    attributes:@{NSParagraphStyleAttributeName: paragraphStyle}];


0 commentaires

2
votes

Eh bien, j'ai décidé de la mettre en œuvre moi sans utiliser de texte de base, je viens de créer une vue de vue qui rend tout le travail d'indentation seul, et vous permet de la personnaliser comme vous le souhaitez.

Pour vous intéresser à la mise en œuvre, vous pouvez voir le code source et un exemple de projet ici:
Projet ECLISTVIEW


0 commentaires