7
votes

iOS - UditableViewCell Texte d'alignement

J'ai ajouté une vue de table et a glissé une cellule de vue de la table dans celle-ci. Dans le panneau Utilitaires, j'ai changé le style pour sous-titre. J'ai également essayé de le modifier en code: xxx

L'alignement central ne fonctionne pas!

J'ai essayé d'ajouter un objet d'étiquette à la cellule pour avoir un solution de contournement. Mais je ne sais pas comment y accéder. Même si je l'ai assigné un point de vente, cela ne fonctionnerait pas: xxx

Que dois-je faire? Toute suggestion sur la façon dont je fais fonctionne la voie habituelle, sans ajouter une étiquette à la cellule ou quelque chose comme ça?


1 commentaires

Juste un FYI, utilisez NstextSextalmentCenter. UitextalIgnmentCenter est obsolète.


6 Réponses :


19
votes

pour le utableviewcellstylesubtitle code> L'alignement de texte ne peut pas être modifié Vous devrez mettre une étiquette et ajouter votre alignement, Pour ce faire, vous pouvez utiliser ce code

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UILabel *myLabel;
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

        myLabel = [[UILabel alloc] initWithFrame:Your_Frame];
        //Add a tag to it in order to find it later
        myLabel.tag = 111;
        //Align it
        myLabel.textAlignment= UITextAlignmentCenter;

        [cell.contentView addSubview:myLabel];
    }

    myLabel = (UILabel*)[cell.contentView viewWithTag:111];
    //Add text to it
    myLabel.text = [myArray objectAtIndex:indexPath.row];

    return cell;
}


2 commentaires

Merci, belle petite référence.


Veuillez noter que uitéxtalignment est obsolète depuis iOS6. Utilisez NSTextalignment à la place.



0
votes

Je pense que la raison est que: la largeur de la TextLabel dépend de la longueur du texte, si le texte est trop long pour afficher tout dans une ligne de signal et que vous avez déjà défini le mode de pause de ligne et définir le nombre de lignes sur 0 , vous constaterez que l'alignement du texte sera fonctionnel. XXX

}


0 commentaires

2
votes

Le problème avec le style de sous-titres est qu'il fait un [Self.TextLabel Sizetofit] lorsqu'il s'installe. Lorsque vous centrez dans un conteneur qui est la taille parfaite du contenu, rien ne change.

Essayez ceci. Dans une sous-classe d'UitailViewCell, définissez votre textalignement et utilisez-le comme votre code ParetouTouSubviews: P>

- (void)layoutSubviews
{
    [super layoutSubviews];

    {
        CGRect frame = self.textLabel.frame;
        frame.size.width = CGRectGetWidth(self.frame);
        frame.origin.x = 0.0;
        self.textLabel.frame = frame;
    }

    {
        CGRect frame = self.detailTextLabel.frame;
        frame.size.width = CGRectGetWidth(self.frame);
        frame.origin.x = 0.0;
        self.detailTextLabel.frame = frame;
    }
}


0 commentaires

0
votes

Je pense que le réglage du cadre fonctionnera. J'avais le style d'UitailViewcellstylevalue2, mais si j'ai un peu de texte long dans TextLabel, il devient tronqué à la queue et à la textilité ne fonctionne pas ici, alors pensé d'augmenter la largeur de texte de la largeur. xxx


0 commentaires

0
votes

Il est impossible de changer de cadre pour textlabel et détaillantTextLabel dans uitatifviewcell DROITE EN CELLFORDOORTINDEXPATH: méthode.

Si vous ne voulez pas sous-classer votre cellule, vous pouvez implémenter un petit piratage en utilisant xxx

avec un délai de zéro pour changer la géométrie juste après < EM> par défaut layoutsUbViews : xxx

Voir les détails sur ici


0 commentaires

0
votes

hi Veuillez ajouter ce qui suit au lieu de votre code,

cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.detailTextLabel.textAlignment = NSTextAlignmentCenter;


0 commentaires