On dirait que UITextAlignmentCenter
est obsolète dans iOS 6.
Je l'utilise toujours et fonctionne bien, mais cela donne un avertissement.
Comment puis-je réparer cela?
label.textAlignment = UITextAlignmentCenter;
Merci.
Dans iOS6, vous pouvez utiliser
label.textAlignment = NSTextAlignmentCenter;
J'espère que cela t'aides.
La modification de propriété labelAlignment
est probablement liée à l’introduction par NSA de NSAttributedStrings à un plus grand nombre de contrôles iOS et à la nécessité de modifier les propriétés UIText… en propriétés NSText….
Donc, si vous êtes passé à iOS6, vous êtes dans le trèfle; passez simplement de UITextAlignmentCenter
à NSTextAlignmentCenter
et profitez de nouvelles chaînes fantaisistes.
Mais si vous travaillez avec un projet complexe et préférez que la Terre ne bouge pas trop, vous voudrez peut-être rester avec une version plus ancienne pendant un moment et adapter votre code à plusieurs versions, comme ceci:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
L'approche ci-dessus fonctionne pour new method; vous recevez des avertissements mais tout se passe bien. Mais lorsque le compilateur voit une constante qu’il ne connaît pas, il devient rouge et s’arrête sur ses traces. Il n’ya aucun moyen de passer furtivement NSTextAlignmentCenter
. (Eh bien, il pourrait y avoir un moyen de personnaliser le comportement du compilateur ici, mais cela semble déconseillé.)
La solution consiste à ajouter des définitions de préprocesseur conditionnel. Si vous mettez quelque chose comme ceci dans le fichier h de votre classe (ou peut-être dans un fichier de constantes importé - qui doit lui-même inclure #import <UIKit/UIKit.h>
pour pouvoir connaître les constantes NSText ...)……
#ifdef NSTextAlignmentCenter // iOS6 and later
# define kLabelAlignmentCenter NSTextAlignmentCenter
# define kLabelAlignmentLeft NSTextAlignmentLeft
# define kLabelAlignmentRight NSTextAlignmentRight
# define kLabelTruncationTail NSLineBreakByTruncatingTail
# define kLabelTruncationMiddle NSLineBreakByTruncatingMiddle
#else // older versions
# define kLabelAlignmentCenter UITextAlignmentCenter
# define kLabelAlignmentLeft UITextAlignmentLeft
# define kLabelAlignmentRight UITextAlignmentRight
# define kLabelTruncationTail UILineBreakModeTailTruncation
# define kLabelTruncationMiddle UILineBreakModeMiddleTruncation
#endif
…tu peux le faire:
label.textAlignment = kLabelAlignmentCenter;
Et ça:
label.lineBreakMode = kLabelTruncationMiddle;
Etc.
Etant donné que ces modifications UIText/NSText sont susceptibles d’apparaître pour plusieurs contrôles, cette approche est très pratique.
(Mise en garde: étant un membre des amoureux de la terre ferme susmentionnés, j'ai testé cela avec une ancienne version, mais pas encore avec iOS6.)
NSTextAlignmentCenter
peut être utilisé à la place de UITextAlignmentCenter
et une liste d'autres remplacements est présentée ci-dessous:
#ifdef __IPHONE_6_0 // iOS6 and later
# define UITextAlignmentCenter NSTextAlignmentCenter
# define UITextAlignmentLeft NSTextAlignmentLeft
# define UITextAlignmentRight NSTextAlignmentRight
# define UILineBreakModeTailTruncation NSLineBreakByTruncatingTail
# define UILineBreakModeMiddleTruncation NSLineBreakByTruncatingMiddle
#endif
#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0)
# define ALIGN_CENTER NSTextAlignmentCenter
#else
# define ALIGN_CENTER UITextAlignmentCenter
#endif
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
label.text = @"There is no spoon";
label.textAlignment = ALIGN_CENTER;
[self addSubview:label];
Vous n'avez pas à faire l'un ou l'autre. Xcode 4.5 compilera la NSTextAlignmentCenter
, etc. dans iOS 5.
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 150, 40)];
[label1 setText:@"Your String"];
[label1 setBackgroundColor:[UIColor clearColor]];
[label1 setNumberOfLines:0];
[label1 sizeToFit];
//For Center Alignment
[label1 setTextAlignment:NSTextAlignmentCenter];
//For Right Alignment
[label1 setTextAlignment:NSTextAlignmentRight];
//For Left Alignment
[label1 setTextAlignment:NSTextAlignmentLeft];
// Add the label into the view
[self.view addSubview:label1];
labelName.textAlignment=NSTextAlignmentLeft;
sous iOS 6 ou supérieur
utiliser cette valeur:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
J'ai eu un problème similaire et utilisé les éléments suivants: detailsLabel.textAlignment = NSTextAlignmentCenter;