Je veux que mon texte soit aligner à droite.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"lisn"]; cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"lisn"] autorelease]; CGSize textSize = { 210.0, 10000.0 }; CGSize size = [[gMessageArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap]; UILabel *lisnerMessage=[[[UILabel alloc] init] autorelease]; lisnerMessage.backgroundColor = [UIColor clearColor]; [lisnerMessage setFrame:CGRectMake(75 ,20,size.width + 5,size.height+2)]; lisnerMessage.numberOfLines=0; lisnerMessage.textAlignment=UITextAlignmentRight; lisnerMessage.text=[gMessageArray objectAtIndex:indexPath.row]; [cell.contentView addSubview:lisnerMessage]; return cell }
4 Réponses :
Parce que vous utilisez Taillewithfont, puis définissez votre cadre à cette taille, votre texte est aligné à droite. Essayez d'ajouter une couleur de fond de gris clair à votre étiquette pour voir de quoi je parle. Votre étiquette doit être réglée sur la même taille que votre cellule de table et permettre au texte de couler à l'intérieur. Ensuite, il va aligner sur la droite.
Mise à jour avec échantillon forte> p>
: Pouvez-vous s'il vous plaît élaborer ou mettre du code concernant votre réponse? Ce sera très utile pour moi
Oui, le truc avec la couleur de fond différente est une bonne. Cela aidera Alok Compréhension de ce qui se passe. L'utilisation de Taillewithfont est d'accord en principe, mais je n'utiliserais pas la taille. Avec le cadre du cadre. Utiliser [LisnerMessage SetFrame: CGRRCTMAKE (75, 20, Textsize.Width + 5, taille.Height + 2)]; au lieu.
J'ai édité votre code avec un exemple brut des changements nécessaires. Je ne l'ai pas testé en xcode mais c'est l'idée. Il suffit de reconstruire votre logique en conséquence.
@Ryanpoolos: Vous avez raison, le texte est aligné dans la cellule, mais je souhaite en fait que mon texte s'aligne dans ce cadre ce que j'ai utilisé.
Il sera aligné sur tout le cadre de votre étiquette.
@Ryanpoolos: En fait, lorsque j'utilise [LisnerMessage Setframe: CGrectMake (75, 20, taille.Width + 5, taille.Height + 2)]; Ensuite, le texte n'est pas aligné à droite. Mais quand j'utilise [LisnerMessage SetFrame: CGRRCTMAKE (75, 20.200.100)]; Ensuite, le texte est aligné à droite. Il y a donc un problème avec la taille.Width & Taille.Height ...
est taille.Width + 5 = 200 code>? et
taille.Height + 2 = 100 code>?
Uitéxtalignmentdright est obsolète. UTILISATION: NSTEXTÉLIGNEMENTRIGHT
Pourquoi ne faites-vous pas simplement l'étiquette dans l'interface Builder / Storyboard et sélectionnez l'option "Aligner droit"? Puis connectez-le comme une propriété nommée lisnermessage et
lisnermessage.text = [GMESSAGEARRARAY ObjectAindex: indéniché.row]; code>
Cela réduirait considérablement sur la quantité de code que vous écrivez et travaille définitivement. P>
Finalement j'ai réparer mon problème. Je faisais petite erreur je viens de supprimer taille.Width code> et donne ma coordonnée spécifique 200 après que le texte soit aligné à droite. P>
[lisnerMessage setFrame:CGRectMake(75 ,20,200,size.height+2)];
Alignement droit pour l'étiquette
yourLabel.textAlignment = NSTextAlignmentRight;
Ce n'est pas une réponse à votre question mais un commentaire sur la logique. Êtes-vous sûr de vouloir ajouter une étiquette supplémentaire à votre cellule chaque fois que la table est actualisée?
@PLIlipMills: Pour chaque cellule, j'ai un texte différent, pas de texte supplémentaire dans cette cellule
Sauf si il y a du code quelque part qui élimine les anciennes étiquettes de vos cellules, ce que vous avez posté, ajoutez toujours une étiquette de plus chaque fois qu'elle est appelée à un chemin d'index spécifique.
@PLIlipMills: Oui, qu'est-ce que j'essaie?