Cómo cambiar la fuente de UIButton con Swift

207

Estoy tratando de cambiar la fuente de un UIButton usando Swift ...

myButton.font = UIFont(name: "...", 10)

Sin embargo, .fontestá en desuso y no estoy seguro de cómo cambiar la fuente de lo contrario.

¿Alguna sugerencia?

Stephen Fox
fuente

Respuestas:

421

Usar en su titleLabellugar. La fontpropiedad está en desuso en iOS 3.0. Tampoco funciona en Objective-C. titleLabeles la etiqueta utilizada para mostrar el título en UIButton.

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

Sin embargo, al configurar el texto del título solo debe usarlo setTitle:forControlState:. No lo use titleLabelpara configurar ningún texto para el título directamente.

codificador
fuente
1
¿Saben por qué tengo que 'desenvolver'? mi etiqueta ?? así ... myButton.titleLabel! .font = ...
DanMoore
porque titleLabeles una propiedad opcional. Gracias anteriormente en beta no lo era.
codificador
44
Este método me permitió cambiar mi nombre / estilo de fuente, pero cambiar la propiedad de tamaño no hizo ninguna diferencia.
Dave G
77
No necesita forzar el desenvolvimiento de la etiqueta. myButton.titleLabel?.font = ...funcionará ya que si titleLabel es nulo, será un no-op
teradyl
1
¿Por qué este método no funciona para la subclase UIbutton personalizada?
Munib
69

Para Swift 3.0 :

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

donde "boldSystemFont" y "16" se pueden reemplazar con su fuente y tamaño personalizados.

despiadado_g
fuente
44

La notación de puntos es increíble (rápido 4.2) 👌

btn.titleLabel?.font = .systemFont(ofSize: 12)
eonista
fuente
@mahasam UIFont se infiere, esta respuesta es la misma que las otras pero solo sin UIFont (pero porque es inferido por el compilador, pero es lo mismo) PD: Siempre trato de escribir de esta manera, pero solo para permitirle sé que es lo mismo
Pablo Sánchez Gómez
1
@mahasam: "Notación de puntos" es lo mismo que inferido. Y sí, es un buen hábito adoptar. Y no son las mismas respuestas que otras, ya que es más sucinto que otras respuestas. OMI
eonista
9

No es necesario forzar el desenvolvimiento de titleLabel para configurarlo.

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

Como no estás usando el título de etiqueta aquí, puedes usarlo opcionalmente y si es nulo, será un no-op.

También agregaré, como dicen otras personas, la propiedad de fuente está en desuso, y asegúrese de usarla setTitle:forControlState:al configurar el texto del título.

teradilo
fuente
7

De la documentación :

La fuente utilizada para mostrar texto en el botón. ( Desaprobado en iOS 3.0 . Utilice la fontpropiedad del en su titleLabellugar).

zneak
fuente
5

Si tiene problemas de tamaño de fuente (su fuente no responde a los cambios de tamaño) ...

@codester tiene el código correcto:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

Sin embargo, mi tamaño de fuente no estaba cambiando. Resulta que pedí una fuente que no existía ("HelveticaNeue-Regular"). No estaba causando un bloqueo, pero parecía estar ignorando esa declaración de fuente debido a eso. Una vez que cambié la fuente a algo que existe, los cambios a "size: x" se renderizaron.

Dave G
fuente
5

podemos usar diferentes tipos de fuentes del sistema como a continuación

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

y tu fuente personalizada como abajo

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)
Sultan Ali
fuente
4

Deberías pasar por la titleLabelpropiedad.

button.titleLabel.font

La fontpropiedad ha quedado en desuso desde iOS 3.0.

Chris Wagner
fuente
4

Echa un vistazo aquí .

En su lugar, debe configurar la fuente del título titleLabel del botón.

myButton.titleLabel!.font = UIFont(name: "...", 10)
Connor
fuente
4

Esto funciona en Swift 3.0:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 
RAM
fuente
4

Si está configurando AttributedString en el UIButton, puede hacer lo siguiente.

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)
Anirudha Mahale
fuente
4

Si necesita cambiar solo el tamaño ( Swift 4.0 ):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)
Karbaman
fuente
2

Ejemplo: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • Si desea utilizar la fuente predeterminada de su propia familia, utilice, por ejemplo: "HelveticaNeue"
  • Si desea especificar la fuente familiar, use por ejemplo: "HelveticaNeue-Bold"
janaz
fuente
1

Esta forma no funciona ahora:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

Esto funciona:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)
RealNmae
fuente
0

Este trabajo para mí, gracias. Quiero cambiar el tamaño del texto solo, no cambiar el nombre de la fuente.

var fontSizeButtonBig:Int = 30

btnMenu9.titleLabel? .font = .systemFont (ofSize: CGFloat (fontSizeButtonBig))

mahasam
fuente