Arrays 通过循环从数据库中添加UILabel文本-Swift 3
我正在通过Arrays 通过循环从数据库中添加UILabel文本-Swift 3,arrays,swift,database,uilabel,character,Arrays,Swift,Database,Uilabel,Character,我正在通过为循环创建UILabel,我想在UILabel数据库中添加文本,数据库中的文本a字符串,但我正在将字符串转换为数组字符,例如,我有4个标签和4个字符(a、B、C、D),我想将每个字符添加到一个标签中,如何才能做到这一点??? 我想这样创作: 这是我的代码: func createTarget(id: Int) { listdata = dbHelpr.getDatabase(rowId: id) var targetHeigt = CGFloat() let
为循环创建UILabel
,我想在UILabel
数据库中添加文本,数据库中的文本a字符串
,但我正在将字符串
转换为数组字符
,例如,我有4个标签和4个字符(a、B、C、D),我想将每个字符添加到一个标签中,如何才能做到这一点???
我想这样创作:
这是我的代码:
func createTarget(id: Int) {
listdata = dbHelpr.getDatabase(rowId: id)
var targetHeigt = CGFloat()
let viewWidth = self.view.frame.size.width
if viewWidth == 320 {
targetHeigt = 2.5
} else {
targetHeigt = 5
}
for data in listdata { // listdata is (Database) has a variable (ans)
let yAxis : CGFloat = (self.view.frame.height) * 60%
let i = data.ans.length
// char count
let width: Int = Int(view.frame.size.width) - 40
// frame width
var targetWidth: Int = (width - (i - 1) * 5) / i
if targetWidth > 50 {
targetWidth = 50
}
let totalWidth: Int = (targetWidth * i) + ((i - 1) * 5)
for x in 0..<i {
let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
targetLabel.backgroundColor = .white
targetLabel.layer.masksToBounds = true
targetLabel.layer.cornerRadius = 5
targetLabel.textAlignment = .center
targetLabel.textColor = .black
for tar in data.ans.characters {
targetLabel.text = String(tar)
}
self.view.addSubview(targetLabel)
}
}
}
这是我上面代码的结果:
我的输出:
D C B A
D C B A
D C B A
D C B A
创建与第一张图片完全相同的字符标签的最佳解决方案是什么?您已经为每个字符创建了一个标签,因此无需再次循环
试试这个:
for (x, tar) in data.ans.characters.reversed().enumerated() {
let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
targetLabel.backgroundColor = .white
targetLabel.layer.masksToBounds = true
targetLabel.layer.cornerRadius = 5
targetLabel.textAlignment = .center
targetLabel.textColor = .black
targetLabel.text = String(tar)
self.view.addSubview(targetLabel)
}
您的4个标签是否已经创建(可能在故事板中)。您有@IBOutlets吗?请插入打印语句来编辑您的第一个代码块,以涵盖所有内容。然后向我们展示结果。每个块都是独立的UILabel吗?不,我以编程方式创建了我的标签@vacawama创建标签后,你对它做了什么?它工作了,但我的角色让我从左到右(a B C D)我想从右到左这样(D C B a)我怎么能做到呢?对于数据中的(x,tar)。ans.characters.reversed().enumerated(){
for (x, tar) in data.ans.characters.reversed().enumerated() {
let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
targetLabel.backgroundColor = .white
targetLabel.layer.masksToBounds = true
targetLabel.layer.cornerRadius = 5
targetLabel.textAlignment = .center
targetLabel.textColor = .black
targetLabel.text = String(tar)
self.view.addSubview(targetLabel)
}