如何在自定义的UIview中以编程方式创建UILabel(Swift)

3
我该如何在自定义的UIView中创建5个自定义UILabel,这些标签将一个接一个地排列。我已经尝试在自定义UIView内创建UILabel,但它并没有出现在自定义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


运行一个循环,重复执行相同的操作5次。每次循环计数器递增20,将getMainViewY的值也相应地递增。 - NSNoob
我该如何让UILabel在自定义的UIView内对齐? - Mugunthan Balakrishnan
请分享您如何将自定义视图添加到视图控制器的视图中的代码。 - NSNoob
2个回答

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

}

希望这就是您想要对齐标签的方式


1
如果您正在使用iOS 9,则最近添加的Stack View就是为了这个目的而创建的。
  1. 使用UIStackView替换mainView中的默认视图
  2. 您可以在Interface Builder中设置堆栈视图的对齐属性
  3. 在循环中创建标签,然后使用堆栈视图的addArrangedSubview方法将它们添加到堆栈视图中。

堆栈视图会为您处理子视图的对齐、间距和布局。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接