Parece que UITextAlignmentCenter
foi descontinuado no iOS 6.
Ainda o uso e funciona bem, mas dá um aviso.
Como posso consertar isso?
label.textAlignment = UITextAlignmentCenter;
Obrigado.
Parece que UITextAlignmentCenter
foi descontinuado no iOS 6.
Ainda o uso e funciona bem, mas dá um aviso.
Como posso consertar isso?
label.textAlignment = UITextAlignmentCenter;
Obrigado.
Respostas:
No iOS6 você pode usar
label.textAlignment = NSTextAlignmentCenter;
Espero que isto ajude.
A labelAlignment
alteração de propriedade provavelmente está relacionada à introdução de NSAttributedStrings da Apple em mais controles do iOS e, portanto, é necessário alterar as propriedades UIText… para NSText….
Então, se você atualizou para o iOS6, está no trevo; basta mudar a partir UITextAlignmentCenter
de NSTextAlignmentCenter
e desfrutar das extravagantes novas cordas.
Mas se você estiver trabalhando com um projeto complexo e preferir que a Terra não se mova tanto sob seus pés, convém ficar com uma versão mais antiga por um tempo e adaptar seu código para várias versões, algo como isto:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
A abordagem acima funciona para novos métodos ; você recebe avisos, mas tudo corre bem. Mas quando o compilador vê uma constante que não conhece, fica vermelho e para em suas trilhas. Não há como passar despercebido NSTextAlignmentCenter
. (Bem, pode haver uma maneira de personalizar o comportamento do compilador aqui, mas parece desaconselhável.)
A solução alternativa é adicionar algumas definições condicionais do pré-processador. Se você colocar algo parecido com isso no arquivo h da sua classe (ou talvez em um arquivo constante importado - que deve ser incluído #import <UIKit/UIKit.h>
para que você possa conhecer as 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
…você consegue fazer isso:
label.textAlignment = kLabelAlignmentCenter;
E isto:
label.lineBreakMode = kLabelTruncationMiddle;
Etc.
Como é provável que essas alterações no UIText / NSText estejam surgindo para vários controles, essa abordagem é bastante útil.
(Advertência: como membro dos amantes da terra firme acima mencionados, testei isso com uma versão antiga, mas ainda não com o iOS6.)
NSTextAlignmentCenter
pode ser usado no lugar de UITextAlignmentCenter
e uma lista de outras substituições está abaixo:
#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];
Você não precisa fazer nada disso. O Xcode 4.5 compilará o NSTextAlignmentCenter
, etc. excelente no 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;
Eu tive um problema semelhante e usei o seguinte: detailsLabel.textAlignment = NSTextAlignmentCenter;
no iOS 6 ou superior
use este valor:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.