如何在自定义uiView swift中以编程方式创建UIlabel

时间:2015-11-16 11:30:07

标签: swift uiview uilabel

如何在自定义UIView中创建5个自定义uilabel。哪个将一个接一个地对齐。我试图在自定义UILabel中创建UIView。但它不会进入自定义UIView

//使用循环

进行更新
import UIKit

class ViewController: UIViewController {

@IBOutlet weak var mainView: UIView!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    var getMainViewX = mainView.frame.origin.x
    let getMainViewY = mainView.frame.origin.y

    for var i = 0; i < 5; i++
    {

        let label = UILabel(frame: CGRectMake(getMainViewX, getMainViewY, 200, 21))
        //label.center = CGPointMake(160, 284)
        label.textAlignment = NSTextAlignment.Center
        label.text = "I'am a test label"
        self.mainView.addSubview(label)
        getMainViewX+=20
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

the light gray box in the middle is the uiview

2 个答案:

答案 0 :(得分:1)

如果你正在使用iOS 9,那么最近添加的Stack View就是为了这个目的而创建的。

  1. mainView使用UIStackView而不是默认视图
  2. 您可以在Interface Builder
  3. 中设置堆栈视图的对齐属性
  4. 在循环中创建标签,然后使用堆栈视图的addArrangedSubview方法将它们添加到堆栈视图中。
  5. 堆栈视图将为您处理它的子视图的对齐,间距和布局。

答案 1 :(得分:1)

“对齐”并不清楚你的意思。 假设你想要一个堆叠在另一个之下,我已经对你的代码进行了微小的调整。

class ViewController: UIViewController {

@IBOutlet weak var mainView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let getMainViewX = mainView.frame.origin.x
    //let getMainViewY = mainView.frame.origin.y

    for var i = 0; i < 5; i++
    {
        //let label = UILabel(frame: CGRectMake(getMainViewX, getMainViewY, 200, 21))
        let label = UILabel(frame: CGRectMake(getMainViewX, CGFloat(i) * 21, 200, 21))
        //label.center = CGPointMake(160, 284)
        label.textAlignment = NSTextAlignment.Center
        label.text = "I'am a test label"
        self.mainView.addSubview(label)
        //getMainViewX+=20
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

here