0

J'ai un UITableViewCell avec trois étiquettes:Harmoniser UILabel avec NSSuperscriptAttributeName et Autolayout

enter image description here

Le droit UILabel utilise sa propriété attributedString pour ajouter les indices et des exposants la formule chimique. J'utilise PureLayout pour mettre en place toutes les contraintes autolayout et a ajouté la même contrainte pour les deux premières étiquettes pour gérer la distance au sommet du Superview (contentView):

[label autoPinEdgeToSuperviewEdge: ALEdgeTop withInset: 8.0f]; 

J'utilise aussi une contrainte pour définir la distance entre le haut de l'étiquette du bas et le bas de l'étiquette de gauche. Cependant, comme vous pouvez le voir, ils n'ont pas la même distance vers le haut, et ils ne sont pas alignés horizontalement. Je suppose que c'est à cause des attributs super- et/ou en indice.

J'ai aussi essayé d'aligner leurs axes horizontaux:

[rightLabel autoAlignAxis: ALAxisHorizontal toSameAxisOfView: leftLabel]; 

Mais avec le même résultat.

Des suggestions comment je peux faire ce travail?

EDIT: Cela semble être lié à ce bogue: iOS 10.3: NSStrikethroughStyleAttributeName is not rendered if applied to a sub range of NSMutableAttributedString, et se produit uniquement dans iOS 10.3. Si j'ajoute la réponse acceptée à partir de cette question, l'alignement est comme prévu.

EDIT: Ce sont les attributs de l'étiquette droite:

CH{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc2515a10> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 17.00pt"; 
}3{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc27577e0> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 12.75pt"; 
    NSSuperScript = "-1"; 
}CH{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc2515a10> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 17.00pt"; 
}2{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc27577e0> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 12.75pt"; 
    NSSuperScript = "-1"; 
}OH{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc2515a10> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 17.00pt"; 
}+{ 
    NSBaselineOffset = 1; 
    NSFont = "<UICTFont: 0x7fcdc27577e0> font-family: \"Avenir-Medium\"; font-weight: normal; font-style: normal; font-size: 12.75pt"; 
    NSSuperScript = 1; 
} 

Répondre

0

Vous pouvez essayer d'utiliser UIStackview pour les grandes marques avec alignement = .center ou la broche juste étiquette droite avec encart correspondant. La typographie est hard.

+0

Je vais donner à essayer, merci de le signaler. – Koen