我正在使用第三方库ExpandableLabel来实现,以了解更多功能。我正在寻找仅在标签中而不是按钮中包含文本的快速解决方案,因此这非常有效。在IB中添加库并更改标签类型之后,我只需要几行代码:
@IBOutlet weak var myLabel: ExpandableLabel!
myLabel = 3
myLabel = true
但是,我无法弄清楚在完全扩展后如何实现“少看”。我添加了委托方法:
ExpandableLabelDelegate
和功能:
// MARK:ExpandableLabel委托
func willExpandLabel(_ label: ExpandableLabel) {
}
func didExpandLabel(_ label: ExpandableLabel) {
}
func willCollapseLabel(_ label: ExpandableLabel) {
}
func didCollapseLabel(_ label: ExpandableLabel) {
}
func shouldCollapseLabel(_ label: ExpandableLabel) -> Bool {
return true
}
试图获得对该过程的控制权,但是仍然很挣扎。还有其他人设法做到这一点吗?如果是这样,请您在这里帮我...
最佳答案
根据我的个人经验,我注意到expandedAttributedLink
仅在您将其设置为实际标签文本之前有效。
infoLabel.setLessLinkWith(lessLink: "less", attributes: [NSFontAttributeName: boldItalicFont], position: nil)
infoLabel.text = viewModel.description
infoLabel.collapsedAttributedLink = NSAttributedString(string: "more", attributes: [NSFontAttributeName: boldItalicFont]);
infoLabel.ellipsis = NSAttributedString(string: "...")
infoLabel.collapsed = true
通过查看the source file内
text
属性的设置器,我能够识别出此行为。