puedo - Alineación de etiquetas en iOS 6-UITextAlignment obsoleta
no puedo actualizar mi iphone 6 (10)
El cambio de la propiedad labelAlignment
probablemente esté relacionado con la introducción de NSAttributedStrings por parte de Apple en la mayoría de los controles iOS, y por lo tanto la necesidad de cambiar las propiedades UIText ... a las propiedades NSText ...
Entonces, si te has actualizado a iOS6, estás en el trébol; simplemente cambie de UITextAlignmentCenter
a NSTextAlignmentCenter
y disfrute de las nuevas cadenas de fantasía.
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 varias 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 ; recibes advertencias, pero todo funciona bien. Pero cuando el compilador ve una constante que desconoce, se vuelve roja y se detiene en seco. No hay forma de escabullirlo NSTextAlignmentCenter
. (Bueno, podría haber una forma de personalizar el comportamiento del compilador aquí, pero parece desaconsejable).
La solución alternativa es agregar algunas definiciones de preprocesador condicional. Si coloca algo como esto en el archivo h de su clase (o quizás en un archivo de constantes importadas, que debe incluir #import <UIKit/UIKit.h>
para conocer 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 UIText / NSText aparezcan para múltiples controles, este enfoque es bastante útil.
(Advertencia: al ser un miembro de los amantes de la tierra firme antes mencionados, he probado esto con una versión anterior, pero todavía no con iOS6).
Parece que UITextAlignmentCenter
está en desuso en iOS 6.
Todavía lo uso y funciona bien, pero da una advertencia.
¿Cómo puedo arreglar esto?
label.textAlignment = UITextAlignmentCenter;
Gracias.
En iOS6 puedes usar
label.textAlignment = NSTextAlignmentCenter;
Espero que esto ayude.
No tienes que hacer ninguna de estas cosas. Xcode 4.5 compilará NSTextAlignmentCenter
, etc. bien en iOS 5.
Swift 3:
label.textAlignment = NSTextAlignment.center
Tuve un problema similar y utilicé lo siguiente: detailsLabel.textAlignment = NSTextAlignmentCenter;
en iOS 6 o superior
usa este valor:
self.lbl_age.textAlignment=NSTextAlignmentCenter;
NSTextAlignmentCenter
se puede usar en lugar de UITextAlignmentCenter
y a continuación se incluye una lista de otros reemplazos:
#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];
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;