【问题标题】:How to programmatically create UIlabel inside a custom uiView swift如何在自定义 uiView swift 中以编程方式创建 UIlabel
【发布时间】:2015-11-16 11:30:07
【问题描述】:

如何在自定义 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.
}


}

【问题讨论】:

  • 运行一个循环 5 做同样的事情。将你的 getMainViewY 增加 um 让每个循环计数器增加 20。
  • 如何让 uilabel 在自定义 uiview 中对齐
  • 分享您如何将自定义视图添加到 Viewcontroller 视图的代码。

标签: swift uiview uilabel


【解决方案1】:

如果您使用的是 iOS 9,则最近添加的 Stack View 正是为此目的而创建的。

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

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

【讨论】:

    【解决方案2】:

    不清楚您所说的“对齐”是什么意思。 假设您希望它们一个一个地堆叠在一起,我对您的代码进行了细微的调整。

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

    }

    Hopefully this is how you are looking to align the labels

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      相关资源
      最近更新 更多