2012-02-18 20 views
10

Recientemente actualicé a Xcode 4.3 y deshabilitó la propiedad autoscrink de mi UILabels. Volví a comprobar las casillas en IB y reconstruí el proyecto, pero todavía está cortando el texto. ¿Alguna sugerencia? ¿Es esto un error conocido? ¿Hay alguna manera de arreglar esto programáticamente?¿Cómo hacer que la propiedad Autoresize funcione en Xcode 4.3?

+0

¿Ha intentado establecer el '' autoresizingMask' de UILabel' programáticamente? – yuji

+0

¿Quiere decir autoshrink? – sch

+0

autoresizingMask no funcionó. –

Respuesta

19

Estoy viendo lo mismo. Puede solucionarlo mediante programación (lo hago en viewDidLoad):

myLabel.adjustsFontSizeToFitWidth = YES; 
+0

¡¡¡Eso funcionó !! Aunque utilicé '[myLabel setAdjustsFontSizeToFitWidth: YES];' porque creo que Apple quiere que "establezcamos" propiedades como esas. –

+0

Tuve el mismo problema y archivé un radar antes (http://openradar.appspot.com/10984259). Este problema parece haberse solucionado en XCode 4.3.1. –

+1

Esto no funciona para mí en absoluto ... –

0

¡Tengo exactamente el problema opuesto! Actualicé a Xcode 4.3, y ahora reduce automáticamente el texto en las celdas de mi tabla cuando quiero que las trunquen con las elipses. Revisé el guión gráfico y modifiqué todas las opciones que podrían tener que ver con eso, pero se niega a hacer lo que quiero. Muy frustrante.

Editado ...

Trate de re-crear lo que Xcode me estaba haciendo ya que es lo contrario de lo que le está pasando. Resalte el prototipo de celda que tiene para su tabla vista en el guión gráfico y haga clic en las palabras "Título" y "Subtítulo". Puede encontrar la propiedad AutoShrinking dentro del inspector de atributos, y supongo que puede solucionar su problema desactivando esta casilla y reconstruyendo su aplicación. Muy extraño cómo la actualización de Xcode podría causar esto. También causó que mi aplicación se comportara de forma un tanto extraña (es decir, que se bloqueara de forma inesperada mientras se ejecutaba en el simulador), pero unas pocas versiones limpias y reconstructivas resolvieron esto. Espero que puedas arreglar esto, ¡ya que sé que fue tan frustrante para mí!

+0

Ooops, creo que resolví mi problema. De hecho, tuve que activar Autoshrinking en Xcode y establecer el tamaño mínimo para mi tamaño de texto. Eso es malditamente tonto. – Dave

+0

Uf, el bugginess que es Xcode 4.3 no se resuelve por mí. Cada vez que lo construyo, anula la selección de la función de autoevaluación y, si la codifico, la ignora ... ¡aunque me alegro de que esté funcionando! –

+0

viendo lo mismo. Autorshrink está activado sin importar lo que haga ... – midas06

0

Me hizo lo mismo. Todos los autocontraíbles están apagados. Volver a poner un tamaño de fuente y activar el encogimiento automático no funcionaba.

Tuve que arreglarlo programáticamente como sugirió JLundell.

3

Tuve el mismo problema. Aquí está la solución, lo agregué a un método de utilidad, ya que tengo más de 100 xibs en mi proyecto, y muchos de ellos necesitan reparación. Funciona genial.

Añadir esto a Utility.m:

// UIView+viewRecursion.h 
@interface UIView (viewRecursion) 
- (NSMutableArray*) allSubViews; 
@end 
// UIView+viewRecursion.m 
@implementation UIView (viewRecursion) 
- (NSMutableArray*)allSubViews 
{ 
    NSMutableArray *arr=[[NSMutableArray alloc] init]; 
    [arr addObject:self]; 
    for (UIView *subview in self.subviews) 
    { 
     [arr addObjectsFromArray:(NSArray*)[subview allSubViews]]; 
    } 
    return arr; 
} 
@end 

Y esto:

+(void)fixLabels:(UIView *)theView{ 

    for(UIView *v in [theView allSubViews]) 
    { 
     if([v isKindOfClass:[UILabel class]]) 
     { 
      if(!((UILabel*)v).adjustsFontSizeToFitWidth){ 
       ((UILabel*)v).adjustsFontSizeToFitWidth=YES; 
       // NSLog(@"fixed %@", theView); 
      } 
     } 
    } 
} 

y luego llamar fixLabels de viewDidLoad para cualquier vista que tiene UILabels que no se están reduciendo automático:

[Utility fixLabels:self.view]; 
0

Xcode 4.3 no respeta las configuraciones de Interface Builder para la propiedad adjustSizeToFitWidth.

Puede solucionarlo estableciendo el valor de la propiedad mediante programación como lo sugirió JLundell.

myLabel.adjustsFontSizeToFitWidth = YES; 

Se ha fijado en 4.3.1

Cuestiones relacionadas