Sembra UITextAlignmentCenter
deprecato in iOS 6.
Lo uso ancora e funziona bene, ma dà un avvertimento.
Come posso risolvere questo problema?
label.textAlignment = UITextAlignmentCenter;
Grazie.
Sembra UITextAlignmentCenter
deprecato in iOS 6.
Lo uso ancora e funziona bene, ma dà un avvertimento.
Come posso risolvere questo problema?
label.textAlignment = UITextAlignmentCenter;
Grazie.
Risposte:
In iOS6 puoi usare
label.textAlignment = NSTextAlignmentCenter;
Spero che questo ti aiuti.
La labelAlignment
modifica della proprietà è probabilmente correlata all'introduzione di NSAttributedStrings da parte di Apple in più controlli iOS e, pertanto, è necessario modificare le proprietà UIText ... in NSText ...
Quindi, se hai eseguito l'aggiornamento a iOS6, sei in trifoglio; basta passare da UITextAlignmentCenter
a NSTextAlignmentCenter
e godere delle nuove stringhe di fantasia.
Ma se stai lavorando con un progetto complesso e preferisci che la terra non si muova così tanto sotto i tuoi piedi, potresti voler rimanere con una versione precedente per un po 'e adattare il tuo codice per più versioni, qualcosa del genere:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
L'approccio sopra funziona per nuovi metodi ; ricevi avvisi ma tutto funziona bene. Ma quando il compilatore vede una costante di cui non è a conoscenza, diventa rosso e si ferma nelle sue tracce. Non c'è modo di passarci di soppiatto NSTextAlignmentCenter
. (Beh, potrebbe esserci un modo per personalizzare il comportamento del compilatore qui, ma sembra sconsigliabile.)
La soluzione alternativa consiste nell'aggiungere alcuni definitivi preprocessori condizionali. Se metti qualcosa del genere nel file h della tua classe (o forse in un file di costanti importato - che deve essere incluso #import <UIKit/UIKit.h>
per poter conoscere il NSText ... costanti) ...
#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
…Puoi farlo:
label.textAlignment = kLabelAlignmentCenter;
E questo:
label.lineBreakMode = kLabelTruncationMiddle;
Eccetera.
Poiché è probabile che queste modifiche a UIText / NSText vengano visualizzate per più controlli, questo approccio è abbastanza utile.
(Avvertenza: essendo un membro dei suddetti amanti della terra ferma, l'ho testato con una vecchia versione, ma non ancora con iOS6.)
NSTextAlignmentCenter
può essere utilizzato al posto di UITextAlignmentCenter
e un elenco di altri sostituti è di seguito:
#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];
Non devi fare nessuno di questi. Xcode 4.5 compilerà NSTextAlignmentCenter
, ecc. Bene in 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;
Ho avuto un problema simile e ho usato quanto segue: detailsLabel.textAlignment = NSTextAlignmentCenter;
in iOS 6 o versioni successive
usa questo valore:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.