我正在制作音乐播放器并为歌曲,专辑和艺术家设置标签。现在,仅仅为了UI,我希望歌曲标签总是使用3行的空格,即使文本是1行。我在属性检查器中将行数设置为3,但如果歌曲标题实际上很长,它只显示3行!
我对解决方法的第一个想法是将标签的高度锁定为文本大小的3倍(然后一些用于间距)。可能有更好的解决方案吗?或者我可以使用不同的对象?
答案 0 :(得分:1)
要强制UILabel占用音乐播放器中的三行,您只需要在\n
的适当位置添加换行符,并将标签的行设置为3.
添加换行符
var title = "Title"
var album = "Album"
var artist = "Artist"
label.text = "\(title)\n" +
"\(album)\n" +
"\(artist)\n"
将标签设置为3行:
label.numberOfLines = 3 // or set this to 4 or higher if the title of the song might exceed one line
答案 1 :(得分:0)
我需要完成类似的操作-无论文本如何,我都需要UILabel始终为两行。
经过一些实验,我发现仅在文本高出一行的情况下,天真地在文本末尾添加新行会产生所需的行为。如果由于内容而导致文本已经高出两行,则第二行末尾会出现省略号。
我使用了另一个问题的代码来确定我的文本实际呈现的行数,如果少于期望的行数,我会在字符串的末尾附加一个换行符\n
。
How to find actual number of lines of UILabel?
只需向您的UILabel末尾添加尽可能多的换行符,即可达到所需的行数。 (请注意,我在上述问题中使用的代码将返回比实际文本多1行的行,因此我的逻辑类似于if desiredLines >= myLabel.numberOfVisibleLines { /*Appened \n to string*/}
)
答案 2 :(得分:0)
您可以尝试这种方法:
获取一个UILabel并将其放入UIStackView中。
设置UILabel.amountOfLines = 3
在标签下方的UIStackView中添加另一个UIView。
配置自动布局,以使UILabel内部内容的优先级高于UIView。
将UIStackView的高度严格限制为3行高度。
结果应该是,无论文本有多少行,“堆栈”视图都将处于预期的高度。但是,内在本质将使文本推送标签,只要它具有填充其三行的文本即可。
相对于公认的答案,您无需关心文本是什么,因此这更有可能帮助需要此类内容的其他读者。