Comment créer UILabel par programme en utilisant Swift?

Comment créer un UILabel programmation en utilisant Swift dans Xcode 6?

J’ai commencé avec une nouvelle application “Single View” dans Xcode 6 et sélectionné Swift pour ce projet. J’ai mes fichiers AppDelegate.swift et ViewController.swift et je ne sais pas quoi faire d’ici.

 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) } 

Swift 3.0 Update:

 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) 

Voici le code correct pour Swift 3, avec des commentaires à des fins pédagogiques:

 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 (eg, 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) } 

Juste pour append aux réponses déjà excellentes, vous pourriez vouloir append plusieurs étiquettes dans votre projet afin de faire tout cela (la taille de réglage, le style etc.) sera une douleur. Pour résoudre ce problème, vous pouvez créer une classe UILabel distincte.

  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 } } 

Pour l’utiliser, procédez comme suit

 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) } } 

Vous pouvez créer une étiquette en utilisant le code ci-dessous.

 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) 

Une alternative utilisant une fermeture pour séparer le code en quelque chose d’un peu plus net en utilisant 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) } } 

En tant que note, les atsortingbuts pour le theLabel peuvent toujours être modifiés chaque fois que vous utilisez des fonctions dans le VC. Vous définissez simplement différentes valeurs par défaut dans la fermeture et vous viewDidLoad() encombrement dans des fonctions telles que viewDidLoad()

Dans Swift 4.1 et Xcode 9.4.1

 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) 

Un autre code 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) 

Créez UILabel vue UILabel dehors de la classe viewDidLoad , puis ajoutez cette vue à votre vue principale dans la méthode viewDidLoad .

 lazy var myLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoConstraints = false label.text = "This is label view." label.font = UIFont.systemFont(ofSize: 12) return label }() 

Et puis ajoutez cette view dans viewDidLoad()

 override func viewDidLoad() { super.viewDidLoad() view.addSubview(myLabel) // Set its constraint to display it on screen myLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true myLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true myLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true }