Sembra UITextAlignmentCenterdeprecato in iOS 6.
Lo uso ancora e funziona bene, ma dà un avvertimento.
Come posso risolvere questo problema?
label.textAlignment = UITextAlignmentCenter;
Grazie.
Sembra UITextAlignmentCenterdeprecato 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 labelAlignmentmodifica 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 UITextAlignmentCentera NSTextAlignmentCentere 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.)
NSTextAlignmentCenterpuò essere utilizzato al posto di UITextAlignmentCentere 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.