动态创建的 swift 3/xcode 标签中的行距

Posted

技术标签:

【中文标题】动态创建的 swift 3/xcode 标签中的行距【英文标题】:line spacing in dynamically created swift 3/xcode labels 【发布时间】:2017-08-03 19:14:38 【问题描述】:

我遇到了一个问题,我从 api 获取技能列表,我希望它们在两个不同的部分(左列和右列)中将一个技能堆叠在另一个之上。它运作良好,但如果技能比标签的宽度长,它会下降到与其余标签具有相同间距的新行。 Adobe Creative Suite 技能看起来像 Adob​​e Creative 和 Suite 一样。我希望 Suite 位于 Adob​​e Creative 之下,但更接近,因此您可以说这是一项技能。

我的代码在这里:

        lblLeft.text = ""
        lblRight.text = ""

        if let expertiseCount = helper.expertise 
            for i in 0..<expertiseCount.count 
                if i % 2 == 0 
                    let paragraphStyle = NSMutableParagraphStyle()
                    paragraphStyle.lineSpacing = 10
                    let attrString = NSMutableAttributedString(string: lblLeft.text! + "\(expertiseCount[i].name ?? "")\n")
                    attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range: NSMakeRange(0, attrString.length))
                    lblLeft.attributedText = attrString

                 else 
                    let paragraphStyle = NSMutableParagraphStyle()
                    paragraphStyle.lineSpacing = 10
                    let attrString = NSMutableAttributedString(string: lblRight.text! + "\(expertiseCount[i].name ?? "")\n")
                    attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range: NSMakeRange(0, attrString.length))
                    lblRight.attributedText = attrString
                
            
        

我已经尝试过行间距,它只是改变了所有行之间的大小,所以 Adob​​e Creative 和 Suite 之间的空间也会发生这种变化。

【问题讨论】:

【参考方案1】:

试试:

lblLeft.numberOfLines = 0
lblLeft.lineBreakMode = .byWordWrapping

lblLeft.sizeToFit()

通过将行数设置为零并打开自动换行,标签将增长到所需的行数。 sizeToFit() 应该正确调整大小。

【讨论】:

以上是关于动态创建的 swift 3/xcode 标签中的行距的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中向 UILabel 动态添加行

使用 Swift 3 Xcode 8 居中对齐多个标签

swift 3 Xcode 8 中的 NSManagedObject 和 CoreData

使用核心数据swift ios获取实体的所有属性到tableview中的行中的标签

使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签

ios Swift tableView 以编程方式用于标签和图像的动态单元格约束