Parece que UITextAlignmentCenter
está en desuso en iOS 6.
Todavía lo uso y funciona bien, pero me da una advertencia.
¿Cómo puedo arreglar esto?
label.textAlignment = UITextAlignmentCenter;
Gracias.
Parece que UITextAlignmentCenter
está en desuso en iOS 6.
Todavía lo uso y funciona bien, pero me da una advertencia.
¿Cómo puedo arreglar esto?
label.textAlignment = UITextAlignmentCenter;
Gracias.
Respuestas:
En iOS6 puedes usar
label.textAlignment = NSTextAlignmentCenter;
Espero que esto ayude.
los labelAlignment
cambio de propiedad probablemente esté relacionado con la introducción de NSAttributedStrings de Apple a más controles de iOS y, por lo tanto, la necesidad de cambiar las propiedades UIText ... a propiedades NSText ...
Entonces, si has actualizado a iOS6, estás en trébol; solo cambia de UITextAlignmentCenter
aNSTextAlignmentCenter
y disfrutar de las cadenas de lujo nuevos.
Pero si está trabajando con un proyecto complejo y prefiere que la tierra no se mueva tanto bajo sus pies, es posible que desee quedarse con una versión anterior por un tiempo y adaptar su código para múltiples versiones, algo como esto:
// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)])
label.textAlignment = UITextAlignmentCenter;
else
label.textAlignment = NSTextAlignmentCenter;
El enfoque anterior funciona para nuevos métodos ; obtienes advertencias pero todo funciona bien. Pero cuando el compilador ve una constante que no conoce, se vuelve roja y se detiene en seco. No hay forma de escabullirse NSTextAlignmentCenter
. (Bueno, puede haber una forma de personalizar el comportamiento del compilador aquí, pero parece desaconsejable).
La solución es agregar algunas definiciones de preprocesador condicional. Si coloca algo como esto en el archivo h de su clase (o tal vez en un archivo de constantes importado, que debe incluirse #import <UIKit/UIKit.h>
para saber sobre las 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
…Puedes hacerlo:
label.textAlignment = kLabelAlignmentCenter;
Y esto:
label.lineBreakMode = kLabelTruncationMiddle;
Etc.
Dado que es probable que estos cambios de UIText / NSText estén apareciendo para múltiples controles, este enfoque es bastante útil.
(Advertencia: al ser miembro de los amantes de la tierra estable antes mencionados, he probado esto con una versión antigua, pero aún no con iOS6).
NSTextAlignmentCenter
se puede usar en lugar de UITextAlignmentCenter
una lista de otros reemplazos a continuación:
#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];
No tienes que hacer ninguno de estos. Xcode 4.5 compilará el NSTextAlignmentCenter
, etc. bien en 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;
Tuve un problema similar y utilicé lo siguiente: detailsLabel.textAlignment = NSTextAlignmentCenter;
en iOS 6 o superior
usa este valor:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
Swift 3:
label.textAlignment = NSTextAlignment.center
NSTextAlignment
.