tutorial the programming programación lenguaje language book apple ios swift

ios - the - ¿Cómo crear UILabel mediante programación utilizando Swift?



the swift programming language 4.2 pdf (7)

¿Cómo creo un UILabel programáticamente usando Swift en Xcode 6?

Comencé con una nueva "Aplicación de vista única" en Xcode 6 y seleccioné Swift para este proyecto. Tengo mis archivos AppDelegate.swift y ViewController.swift y no estoy seguro de qué hacer desde aquí.


Aquí está el código correcto para Swift 3, con comentarios con fines educativos:

override func viewDidLoad() { super.viewDidLoad() // CGRectMake has been deprecated - and should be let, not var let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) // you will probably want to set the font (remember to use Dynamic Type!) label.font = UIFont.preferredFont(forTextStyle: .footnote) // and set the text color too - remember good contrast label.textColor = .black // may not be necessary (e.g., if the width & height match the superview) // if you do need to center, CGPointMake has been deprecated, so use this label.center = CGPoint(x: 160, y: 284) // this changed in Swift 3 (much better, no?) label.textAlignment = .center label.text = "I am a test label" self.view.addSubview(label) }


En Swift 4.0

let lbl = UILabel(frame: CGRect(x: 10, y: 50, width: 230, height: 21)) lbl.textAlignment = .center //For center alignment lbl.text = "This is my label fdsjhfg sjdg dfgdfgdfjgdjfhg jdfjgdfgdf end..." lbl.textColor = .white lbl.backgroundColor = .lightGray lbl.font = UIFont.systemFont(ofSize: 17) lbl.numberOfLines = 0 lbl.lineBreakMode = .byWordWrapping lbl.sizeToFit() yourView.addSubview(lbl)


Otro código swift3

let myLabel = UILabel() myLabel.frame = CGRect(x: 0, y: 0, width: 100, height: 100) myLabel.center = CGPoint(x: 0, y: 0) myLabel.textAlignment = .center myLabel.text = "myLabel!!!!!" self.view.addSubview(myLabel)


Puede crear etiquetas usando el código a continuación.

var yourLabel: UILabel = UILabel() yourLabel.frame = CGRectMake(50, 150, 200, 21) yourLabel.backgroundColor = UIColor.orangeColor() yourLabel.textColor = UIColor.blackColor() yourLabel.textAlignment = NSTextAlignment.Center yourLabel.text = "test label" self.view.addSubview(yourLabel)


Solo para agregar a las ya excelentes respuestas, es posible que desee agregar varias etiquetas en su proyecto, por lo que hacer todo esto (tamaño de configuración, estilo, etc.) será un problema. Para resolver esto, puede crear una clase UILabel separada.

import UIKit class MyLabel: UILabel { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) initializeLabel() } override init(frame: CGRect) { super.init(frame: frame) initializeLabel() } func initializeLabel() { self.textAlignment = .left self.font = UIFont(name: "Halvetica", size: 17) self.textColor = UIColor.white } }

Para usarlo, haz lo siguiente

import UIKit class ViewController: UIViewController { var myLabel: MyLabel() override func viewDidLoad() { super.viewDidLoad() myLabel = MyLabel(frame: CGRect(x: self.view.frame.size.width / 2, y: self.view.frame.size.height / 2, width: 100, height: 20)) self.view.addSubView(myLabel) } }


Una alternativa usando un cierre para separar el código en algo un poco más ordenado utilizando Swift 4:

class theViewController: UIViewController { /** Create the UILabel */ var theLabel: UILabel = { let label = UILabel() label.lineBreakMode = .byWordWrapping label.textColor = UIColor.white label.textAlignment = .left label.numberOfLines = 3 label.font = UIFont(name: "Helvetica-Bold", size: 22) return label }() override func viewDidLoad() { /** Add theLabel to the ViewControllers view */ view.addSubview(theLabel) } override func viewDidLayoutSubviews() { /* Set the frame when the layout is changed */ theLabel.frame = CGRect(x: 0, y: 0, width: view.frame.width - 30, height: 24) } }

Como nota, los atributos de theLabel aún se pueden cambiar cada vez que se usan funciones en el VC. Solo está configurando varios valores predeterminados dentro del cierre y minimizando el desorden en funciones como viewDidLoad()


override func viewDidLoad() { super.viewDidLoad() var label = UILabel(frame: CGRectMake(0, 0, 200, 21)) label.center = CGPointMake(160, 284) label.textAlignment = NSTextAlignment.Center label.text = "I''am a test label" self.view.addSubview(label) }

Actualización de Swift 3.0:

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) label.center = CGPoint(x: 160, y: 285) label.textAlignment = .center label.text = "I''am a test label" self.view.addSubview(label)