如何使用Swift以编程方式创建UILabel?

Akh*_*tar 109 ios swift

如何UILabel在Xcode 6中使用Swift以编程方式创建?

我已经开始在Xcode 6中使用新的"单视图应用程序",并为此项目选择了Swift.我有我的文件AppDelegate.swift,ViewController.swift我不知道该怎么做.

iSu*_*esh 236

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'm a test label"
  self.view.addSubview(label)
}  
Run Code Online (Sandbox Code Playgroud)

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'm a test label"
self.view.addSubview(label)
Run Code Online (Sandbox Code Playgroud)

  • 您不应该对标签框架进行硬编码 - 当文本更改或文本本地化并更改字符数时会发生什么? (4认同)
  • 你不需要隐式地将它声明为UILabel,它是从UILabel()推断出来的 (2认同)
  • @rommex为此,请调用** label.sizeToFit()**。 (2认同)

Gen*_*rco 25

以下是Swift 3的正确代码,其中包含用于教学目的的注释:

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)
}
Run Code Online (Sandbox Code Playgroud)


Cyr*_*cia 11

只是为了添加已经很好的答案,你可能想在你的项目中添加多个标签,这样做所有这些(设置大小,样式等)将是一件痛苦的事.要解决此问题,您可以创建单独的UILabel类.

  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

    }

}
Run Code Online (Sandbox Code Playgroud)

要使用它,请执行以下操作

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


}
Run Code Online (Sandbox Code Playgroud)


iOS*_*iOS 9

Swift 4.X和Xcode 10

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//If required
lbl.font = UIFont.systemFont(ofSize: 17)

//To display multiple lines in label
lbl.numberOfLines = 0 //If you want to display only 2 lines replace 0(Zero) with 2.
lbl.lineBreakMode = .byWordWrapping //Word Wrap
// OR
lbl.lineBreakMode = .byCharWrapping //Charactor Wrap

lbl.sizeToFit()//If required
yourView.addSubview(lbl)
Run Code Online (Sandbox Code Playgroud)


小智 8

UILabelviewDidLoad类外创建视图,然后将该视图添加到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
}()
Run Code Online (Sandbox Code Playgroud)

然后添加viewviewDidLoad()

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
}
Run Code Online (Sandbox Code Playgroud)


Tus*_*rde 7

您可以使用以下代码创建标签.

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)
Run Code Online (Sandbox Code Playgroud)


Ryo*_*awa 6

另一个代码 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)
Run Code Online (Sandbox Code Playgroud)


B K*_* K. 6

在 swift 4 中创建标签

 let label = UILabel(frame: CGRect(x: self.view.frame.origin.x, y: self.view.frame.origin.y, width: self.view.frame.size.width, height: 50))
    label.textAlignment = .center
    label.text = "Hello this my label"

    //To set the color
    label.backgroundColor = UIColor.white
    label.textColor = UIColor.black

    //To set the font Dynamic
    label.font = UIFont(name: "Helvetica-Regular", size: 20.0)

    //To set the system font
    label.font = UIFont.systemFont(ofSize: 20.0)

    //To display multiple lines
    label.numberOfLines = 0
    label.lineBreakMode = .byWordWrapping //Wrap the word of label
    label.lineBreakMode = .byCharWrapping //Wrap the charactor of label

    label.sizeToFit()
    self.view.addSubview(label)
Run Code Online (Sandbox Code Playgroud)


Arc*_*oog 5

使用闭包将代码分离成使用 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,theLabel无论何时使用 VC 中的函数,仍然可以更改for 的属性。您只是在闭包内设置各种默认值,并最大限度地减少功能中的混乱,例如viewDidLoad()