如何将UILabel添加到scrollview以显示标签中的所有文本

时间:2018-01-31 23:35:49

标签: swift xcode

我试图以编程方式将2个UILabel添加到scrollview。 UILabel中的文本是动态的,我不知道文本将是什么,因为它是从数据库加载的。因此,我不知道我应该设置我的UILabel的大小。我使用滚动视图显示每个标签内的所有文本。

我该怎么做呢?目前,我使用以下代码;

let textArray = [job.title, job.description]
    for stage in 0...1{
        let label = UILabel()
        label.font = UIFont(name: "CenturyGothic", size: 20)
        label.textColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        label.textAlignment = .center
        label.lineBreakMode = .byWordWrapping
        label.numberOfLines = 0
        label.text = textArray[stage]
        scrollView.addSubview(label)
    }

标题和说明是动态的,并从数据库中提取。但是,这不会显示任何文本,更不用说我的滚动视图了。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您是否考虑使用UITextView

如果您想使用UILabels,我建议您在UIStackView内放置UIScrollView垂直UILabels以放入CallNextHookEx

将滚动视图设置为superview,将stackview设置为scrollview,将top,bottom,trailing和leading锚点设置为零。还将superview的宽度约束设置为stackview。垂直堆栈将根据其内容自动计算其高度,但宽度需要从外部设置。滚动视图的内容高度超过其高度时,滚动视图将变为可滚动。

另外,不要忘记将标签的行数设置为零,以允许它们显示无穷无尽的行数。

您可以通过编程方式设置所有这些内容,或者设置除故事板中标签之外的所有内容,这样可以更快地减少ViewController中样板代码的数量。

答案 1 :(得分:0)

您还必须设置标签的框架。

    let label = UILabel(frame: CGRect(x: self.view.frame.size.width/2 - 75, y: self.view.frame.size.height-100, width: 150, height: 35))
    label.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    label.textColor = UIColor.white
    label.textAlignment = .center;
    lLabel.font = UIFont(name: "Montserrat-Light", size: 12.0)
    label.text = message
    label.alpha = 1.0
    self.scrollView.addSubview(label)