ios - 在 Swift4 中创建一个函数以编程方式从字符串数组创建 UILabel
问题描述
我能够以编程方式创建一个UILabel
,但是当我创建一个函数时,我必须将它放入viewDidLoad()
方法中吗?我需要通过 using 将标签附加到视图,self.view.addSubview(label)
但它会引发错误,然后当它在viewDidLoad()
.
每当我尝试在viewDidLoad
方法之外创建函数时,它都会声明“使用未解析的标识符自身”。有没有办法解决?
此外,当我将函数放入viewDidLoad
一切正常时,标签已创建,但它们是在彼此之上创建的。如果可能的话,我希望标签彼此相邻吗?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func createALabel(inputtedString: String) -> Void {
let string = inputtedString
let test = string.components(separatedBy: " ")
for element in test {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 60, height: 35))
label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
label.textColor = UIColor.blue
label.text = element
label.layer.borderColor = UIColor.blue.cgColor
label.layer.borderWidth = 3.0
self.view.addSubview(label)
}
}
}
解决方案
您必须添加一个整数变量来设置 x 位置。在这里,我根据设置 x 位置设置了 xPos 变量
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func createALabel(inputtedString: String) -> Void {
let string = inputtedString
let test = string.components(separatedBy: " ")
let xPos = 0
for element in test {
let label = UILabel(frame: CGRect(x: xPos, y: 0, width: 60, height: 35))
// label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
xPos = xPos + 60 + 10 // Update xPos width 60 & 10 is gap between two label
label.textColor = UIColor.blue
label.text = element
label.layer.borderColor = UIColor.blue.cgColor
label.layer.borderWidth = 3.0
self.view.addSubview(label)
}
}
}
推荐阅读
- sql - SQL 镜像视图到表
- python - Python Django /w Microsoft Graphs - 我不断收到值错误“auth_code_flow 中缺少状态”
- python - 如何使用 Python 处理带中断的双数组?
- flutter - 如何在 Flutter 中为我的标准开关添加渐变?
- amazon-web-services - 如何使 apigateway 转发根路径到集成的 http 端点?
- asp.net-mvc - IIS 与 IIS Express 会话处理和多用户
- mysql - 分隔符问题
- list - 根据另一个列表从列表中删除和添加 Ints
- java - 哪种方法更适合使用 Docker 和 Jenkins 构建 Java 代码?
- python - 如何使用保存的模型来恢复谷歌 colab 中的训练?