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.

El archivo xib personalizado de Swift no está centrado correctamente.

Estoy teniendo problemas con mi UIView Xib. Creé una vista Xib, la agregué a una clase UIView y luego llamé a esta clase en el controlador de vista principal. En mi vista Xib creé una etiqueta que está centrada directamente en el centro. Pero cuando inicio mi proyecto la vista ya no se muestra en el centro: Mirar

Pero así es como se ve mi vista en el archivo Xib: Mirar

¿Podría ser debido al controlador de navegación? Aunque no creo, porque también agregué el controlador de navegación a mi archivo Xib. Por cierto, mi vista personalizada se agrega a un ScrollView en mi controlador de vista principal.

Esta es mi clase de vista personalizada:

import UIKit

class TimerView: UIView {

    @IBOutlet var contentView: UIView!

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    private func commonInit() {
        Bundle.main.loadNibNamed("TimerView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = bounds
        contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    }
}

Y aquí lo agregué al ScrollView:

func setUpScrollView() {
    sequenzeScrollView.contentSize = CGSize(width: view.frame.size.width * 3, height: 0)
    sequenzeScrollView.isPagingEnabled = true
    sequenzeScrollView.showsVerticalScrollIndicator = false
    sequenzeScrollView.showsHorizontalScrollIndicator = false
    sequenzeScrollView.delegate = self

    for i in 0..<3 {
        let timerView = TimerView(frame: CGRect(x: view.frame.size.width * CGFloat(i), y: 0, width: view.frame.size.width, height: view.frame.size.height))

        sequenzeScrollView.addSubview(timerView)
    }
}

¿Alguien puede ayudarme con esto? ¡Estaría muy agradecido! Saludos cariñosos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con las restricciones de diseño automático. Cuando crees tu etiqueta en el archivo Xib, asegúrate de agregar restricciones apropiadas para centrarla dentro de la vista.

    Además, es posible que el scrollview y su contenido no estén siendo restringidos y posicionados correctamente. Asegúrate de que el scrollview tenga restricciones adecuadas a la vista principal y que cada TimerView esté correctamente configurado dentro del scrollview.

    También puedes intentar actualizar tu función commonInit() para incluir la configuración de cualquier restricción necesaria para el contentView:

    private func commonInit() {
        Bundle.main.loadNibNamed("TimerView", owner: self, options: nil)
        addSubview(contentView)
        contentView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            contentView.leadingAnchor.constraint(equalTo: leadingAnchor),
            contentView.trailingAnchor.constraint(equalTo: trailingAnchor),
            contentView.topAnchor.constraint(equalTo: topAnchor),
            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)
        ])
    }
    

    Esto establece que el contentView tenga restricciones a la izquierda, derecha, arriba y abajo del TimerView.

    Esperamos que estas sugerencias ayuden a resolver los problemas de visualización de tu vista Xib.

Comments are closed.