如何以编程方式在自定义 uiView 中创建 UIlabel swift
How to programmatically create UIlabel inside a custom uiView swift
如何在自定义 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.
}
}
如果您使用的是 iOS 9,则最近添加的 Stack View 正是为此目的而创建的。
- 为您的
mainView
使用 UIStackView 而不是默认视图
- 您可以在 Interface Builder 中设置堆栈视图的对齐属性
- 在循环中创建标签,然后使用堆栈视图的
addArrangedSubview
方法将它们添加到堆栈视图。
堆栈视图将为您处理其子视图的对齐、间距和布局。
不清楚你所说的 "align" 是什么意思。
假设您希望它们一层层堆叠,我已对您的代码进行了细微调整。
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.
}
}
如何在自定义 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.
}
}
如果您使用的是 iOS 9,则最近添加的 Stack View 正是为此目的而创建的。
- 为您的
mainView
使用 UIStackView 而不是默认视图 - 您可以在 Interface Builder 中设置堆栈视图的对齐属性
- 在循环中创建标签,然后使用堆栈视图的
addArrangedSubview
方法将它们添加到堆栈视图。
堆栈视图将为您处理其子视图的对齐、间距和布局。
不清楚你所说的 "align" 是什么意思。 假设您希望它们一层层堆叠,我已对您的代码进行了细微调整。
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.
}
}