如果内容不适合视图的第一行,则 UILabel 在第二行
UILabel on second line if the content doesn't fit in the view's first line
描述我的情况的最好方式是用图片。我所拥有的是一个包含多个 UILabel
和 UIImage
的视图。红框是一个UILabel
,如果内容太大应该到第二行。
从情节提要来看,当内容适合时,我有一个工作案例,但问题是当最后一个(红色框)应该转到第二行时,我不确定如何处理这个案例。我正在使用 autolayout
和 cartography
。
如果有人能指出正确的方向,我将不胜感激。
使用标签View可以解决这个问题。 TagListView 是一个外部库。
当你添加一个view作为taglistView的子类时,它的高度会自动增加。
将此添加到 pod 文件:pod 'TagListView'
func addTags() {
let str1 = "Hi"
tagListView.addTag(str1)
let str2 = "Helloo"
tagListView.addTag(str2)
let str3 = "How Are u ? "
tagListView.addTag(str2)
tagListView.isUserInteractionEnabled = false
}
你不能只用约束来做到这一点。要更改元素在屏幕上的整个位置,您需要以编程方式进行。
首先根据您当前标签的位置计算文本的宽度。
如果文本宽度大于当前标签的宽度,请看下面我的回答 link:
Auto Layout how to move the view2 from right to the bottom?
计算宽度:
func widthForView1(_ text:String, font:UIFont, height:CGFloat) -> CGFloat
{
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: your_label_width, height: your_lable_height))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.text = text
label.font = font
label.sizeToFit()
return label.frame.width
}
描述我的情况的最好方式是用图片。我所拥有的是一个包含多个 UILabel
和 UIImage
的视图。红框是一个UILabel
,如果内容太大应该到第二行。
从情节提要来看,当内容适合时,我有一个工作案例,但问题是当最后一个(红色框)应该转到第二行时,我不确定如何处理这个案例。我正在使用 autolayout
和 cartography
。
如果有人能指出正确的方向,我将不胜感激。
使用标签View可以解决这个问题。 TagListView 是一个外部库。 当你添加一个view作为taglistView的子类时,它的高度会自动增加。
将此添加到 pod 文件:pod 'TagListView'
func addTags() {
let str1 = "Hi"
tagListView.addTag(str1)
let str2 = "Helloo"
tagListView.addTag(str2)
let str3 = "How Are u ? "
tagListView.addTag(str2)
tagListView.isUserInteractionEnabled = false
}
你不能只用约束来做到这一点。要更改元素在屏幕上的整个位置,您需要以编程方式进行。
首先根据您当前标签的位置计算文本的宽度。
如果文本宽度大于当前标签的宽度,请看下面我的回答 link:
Auto Layout how to move the view2 from right to the bottom?
计算宽度:
func widthForView1(_ text:String, font:UIFont, height:CGFloat) -> CGFloat
{
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: your_label_width, height: your_lable_height))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.text = text
label.font = font
label.sizeToFit()
return label.frame.width
}