Swift: 添加一个标签并将其放在另一个标签下面
Swift: Add a label and place it underneath another label
我想使用来自数据库的文本以编程方式创建标签。
所以 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 是完美的。
我没有完全理解你的问题,但你可以随意使用 Scrolview 的子类 textview 来存储文本,而不是在每条消息中添加不同的文本。
我建议查看此 github repo 以熟悉聊天应用程序的概念。
编辑
还发现了这个 notification chat github repo 更轻量级的样本来检查。
像这样更新你的代码
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
}
您需要为标签的 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.
}
我想使用来自数据库的文本以编程方式创建标签。
所以 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 是完美的。
我没有完全理解你的问题,但你可以随意使用 Scrolview 的子类 textview 来存储文本,而不是在每条消息中添加不同的文本。
我建议查看此 github repo 以熟悉聊天应用程序的概念。
编辑
还发现了这个 notification chat github repo 更轻量级的样本来检查。
像这样更新你的代码
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
}
您需要为标签的 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.
}