Tengo el siguiente código:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, 25, 25);
[[button layer] setCornerRadius:5.0f];
[[button layer] setMasksToBounds:YES];
[[button layer] setBackgroundColor:[[UIColor redColor] CGColor]];
[button.titleLabel setFrame:CGRectMake(0,0, 25, 25)];
[button setTitle:[NSString stringWithFormat:@"%@", [[topics objectAtIndex:indexPath.row] unread]] forState:UIControlStateNormal];
El problema es que cuando la cadena en el texto no es larga, se muestra bien (1-2 dígitos). Sin embargo, cuando es bastante largo (3 ++ dígitos), todo lo que puedo ver es un botón rojo, sin texto dentro. ¿Cómo ajusto esto?
No creo que
[button.titleLabel setAdjustsFontSizeToFitWidth:YES];
hace el trabajo, ¿verdad?
ios
objective-c
adit
fuente
fuente
titleButton.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
Respuestas:
Prueba esto:
No estoy seguro de por qué esto funciona, pero lo hace :)
fuente
numberOfLines
a 0debe hacer el trabajo por sí solo si está utilizando Auto-Layout y ha establecido una restricción en el ancho del botón.
Las otras opciones (factor de escala mínimo, número de líneas, etc.) aún se pueden utilizar para personalizar aún más según sus necesidades, pero no son necesarias.
fuente
La respuesta de EliBud no funciona en iOS 8. Encontré una solución que funciona en iOS 8. A continuación hay un código rápido:
Puedes jugar con label? .LineBreakMode ya que descubrí que los resultados varían para los diferentes modos de pausa.
fuente
en última hora esto parece funcionar para mí
fuente
Solución iOS 10.3 basada en las otras respuestas aquí:
Nadie mencionó
baselineAdjustment
todavía; Lo necesitaba porque la etiqueta del botón se desalinea verticalmente después de queadjustsFontSizeToFitWidth
surta efecto.baselineAdjustment
Documentación de Apple :FWIW, nunca pude alinear la etiqueta perfectamente.
fuente
adjustsFontSizeToFitWidth
no funcionaba para mí hasta que establecí una restricción de ancho en mi botón en Interface Builder.Establecer la restricción evitó que el botón creciera de tamaño y, por lo tanto, no darse cuenta de que tenía que reducir el texto.
fuente
Extensión Swift 4
fuente
Solución Xamarin.iOS
Terminé configurando el tamaño de fuente para asegurarme de que la fuente era "grande" antes de que el sistema ajustara el tamaño para que se ajustara.
fuente
basado en la respuesta de Nik Kov:
fuente
La siguiente solución funcionó para mí:
La documentación del desarrollador explica esta propiedad como:
fuente
En iOS 13.1 con Swift 5, tuve que proporcionar
contentEdgeInsets
también para ajustar los rellenos.fuente