Swift:添加标签并将其放在另一个标签下面

时间:2015-08-11 11:34:35

标签: swift label scrollview

我想以编程方式使用来自数据库的文本创建标签。

因此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是完美的。

3 个答案:

答案 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. 

}