es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer que un título grande en el controlador de navegación sea la mitad claro, la mitad negrita?

Quiero hacer que mi titulo se vea así (primera imagen) (el día y el mes están en negrita (por defecto), el año tiene un peso de fuente ligero)
muestra del diseñador

¿Cómo hago diferentes estilos de peso de fuente en el titulo en UIKit sin usar Storyboard?
¿O tal vez es imposible?

Estaba pensando en crear dos UILabel con diferentes estilos, pero ¿cómo los coloco en el titulo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr diferentes estilos de peso de fuente en el title de un controlador de navegación UIKit sin usar Storyboard, puedes crear una instancia personalizada de UIView y establecerla como propiedad titleView del controlador de navegación. Dentro de esta instancia personalizada de UIView, puedes agregar dos elementos UILabel con diferentes pesos y estilos de fuente, y luego organizarlos según desees utilizando restricciones de diseño o marcos.

    Aquí tienes un ejemplo de implementación en Swift:

    // Crea la vista de título personalizada
    let titleView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 44))
    
    // Crea el primer label para "Day" y "Month"
    let dayMonthLabel = UILabel()
    dayMonthLabel.attributedText = NSAttributedString(string: "26 SEPTEMBER", attributes: [
        .font: UIFont.boldSystemFont(ofSize: 18),
        .foregroundColor: UIColor.black
    ])
    titleView.addSubview(dayMonthLabel)
    
    // Crea el segundo label para "Year"
    let yearLabel = UILabel()
    yearLabel.attributedText = NSAttributedString(string: "2022", attributes: [
        .font: UIFont.systemFont(ofSize: 18, weight: .light),
        .foregroundColor: UIColor.black
    ])
    titleView.addSubview(yearLabel)
    
    // Establece las restricciones de diseño para los labels
    dayMonthLabel.leadingAnchor.constraint(equalTo: titleView.leadingAnchor).isActive = true
    dayMonthLabel.topAnchor.constraint(equalTo: titleView.topAnchor).isActive = true
    yearLabel.leadingAnchor.constraint(equalTo: dayMonthLabel.trailingAnchor, constant: 4).isActive = true
    yearLabel.bottomAnchor.constraint(equalTo: dayMonthLabel.bottomAnchor).isActive = true
    
    // Establece la vista de título personalizada como propiedad titleView del controlador de navegación
    navigationItem.titleView = titleView
    

    Este código crea una UIView personalizada con un ancho y alto fijos (en este caso, 200×44 puntos). Luego crea dos elementos UILabel con diferentes estilos y pesos de fuente, y los agrega como subvistas a la vista personalizada. Finalmente, configura las restricciones de diseño para los labels y establece la vista personalizada como titleView del controlador de navegación.

    Ten en cuenta que este enfoque requiere un diseño manual utilizando restricciones o marcos, lo cual puede llevar tiempo y puede que no sea muy flexible. Considera utilizar una biblioteca externa o Storyboard si necesitas opciones más avanzadas de estilo de título.

Comments are closed.