Swift UILabel de altura adaptable (cuando la altura y el ancho de UILabel se adaptan dinámicamente a la cantidad de palabras en el texto, las partes superior e inferior de UILabel se dejarán en blanco y no se podrán completar)

Cuando se utiliza UILabel en un proyecto, generalmente es necesario implementar una adaptación de altura. El método consiste en calcular primero el número de fuentes de texto y luego calcular la altura requerida:

Métodos como se muestra a continuación:

let label = UILabel()
label.backgroundColor = UIColor.gray
label.text = "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"
        
label.font = UIFont.systemFont(ofSize: 15)
label.textColor = UIColor.red
label.textAlignment = .left
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
let boundingRect = label.text!.boundingRect(with: CGSize(width: 200, height: 0), options: .usesLineFragmentOrigin, attributes:[NSAttributedString.Key.font:UIFont.systemFont(ofSize: 14)], context: nil)
label.frame = CGRect(x: 10, y: 200, width: self.view.frame.width - 20, height: boundingRect.height)
self.view.addSubview(label)

El efecto es el siguiente:

Nos encontraremos con que quedan huecos en la parte superior e inferior de la etiqueta que no podemos rellenar. Esto hará que el diseño de la interfaz de usuario se estropee si necesitamos agregar la interfaz de usuario debajo y encima de nuestra etiqueta.

Entonces la solución es muy simple, solo necesitas cambiar el método de cálculo del número de palabras de texto y establecer la altura en CGFloat (MAXFLOAT) , el método es el siguiente:

let label = UILabel()
label.backgroundColor = UIColor.gray
label.text = "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"
        
label.font = UIFont.systemFont(ofSize: 15)
label.textColor = UIColor.red
label.textAlignment = .left
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
let size = label.sizeThatFits(CGSize(width: self.view.frame.width, height: CGFloat(MAXFLOAT)))
label.frame = CGRect(x: 10, y: 200, width: self.view.frame.width - 20, height: size.height)
self.view.addSubview(label)

El resultado es el siguiente:

Supongo que te gusta

Origin blog.csdn.net/qq_37269542/article/details/89467969
Recomendado
Clasificación