我想以编程方式使用来自数据库的文本创建标签。
因此for循环正在使用此函数创建标签:
func fillScrollViewWithLabels() {
for message in messages {
let label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.text = message.message
self.chatScrollView.addSubview(label)
}
}
但是这个功能将标签放在另一个上面。
它应该看起来像一个信使 - 标签是文本消息,我认为scrollView是完美的。
答案 0 :(得分:0)
我没有完全理解你的问题,但你可以自由地使用Scrolview的子类textview来存储文本,而不是在每条消息中添加不同的文本。
我建议您查看此github repo以熟悉聊天应用的概念。
修改强>
还发现这个notification chat github repo更轻量级的样本需要检查。
答案 1 :(得分:0)
像这样更新您的代码
var yPos:CGFloat = 0.0
let label = UILabel(frame: CGRectMake(0, yPos, 200, 21))
for message in messages {
let label = UILabel(frame: CGRectMake(0, yPos, 200, 21))
label.text = message.message
self.chatScrollView.addSubview(label)
yPos = yPos+21;// you can also add spacing if you want
}
答案 2 :(得分:0)
您需要为标签的Y位置设置一个变量
var currentLabelYPosition : CGFloat = 0 // set to first y position
然后,当您遍历数组并创建标签时,您需要根据最后的标签Y位置获取它的Y位置,如下所示:
for message in messages {
let label = UILabel(frame: CGRectMake(0, currentLabelYPosition, 200,21))
label.text = message.message
self.chatScrollView.addSubview(label)
currentLabelYPosition + label.frame.size.height // Update this accordingly with any type of padding, offset, etc.
}