Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Swift 3设置标签高度,以便在“阅读更多/更少”中自动调整?_Ios_Swift3_Uilabel_Nsattributedstring - Fatal编程技术网

Ios 如何使用Swift 3设置标签高度,以便在“阅读更多/更少”中自动调整?

Ios 如何使用Swift 3设置标签高度,以便在“阅读更多/更少”中自动调整?,ios,swift3,uilabel,nsattributedstring,Ios,Swift3,Uilabel,Nsattributedstring,我想创建一个段落,在结尾处多读/少读

我想创建一个段落,在结尾处多读/少读<这是我的代码

func getLabelHeight(text: String, width: CGFloat, font: UIFont) -> CGFloat {

    let lbl = UILabel(frame: .zero)
    lbl.frame.size.width = width
    lbl.font = font
    lbl.numberOfLines = 0
    lbl.text = text
    lbl.sizeToFit()
    lbl.adjustsFontSizeToFitWidth = true
    return lbl.frame.size.height

}


我还在属性检查器中设置标签“Word wrap”
问题是,当我在无读部分添加“NSLineBreakMode.byTruncatingHead”时,所有文本都完全显示出来。但是,文本中这些地方的一些单词消失了

因此,我删除该代码并运行该应用程序。在那个时候,文本并没有完全显示出来,只显示了一半。我一整天都在努力解决这个问题
我不想使用任何其他图书馆

有人能帮我吗?

要按字体和宽度计算文本高度,可以使用此扩展名

extension UIFont {
func sizeOfString (_ string: String, constrainedToWidth width: CGFloat) -> CGSize {
    return NSString(string: string).boundingRect(with: CGSize(width: width, height: CGFloat.greatestFiniteMagnitude),
                                                         options: NSStringDrawingOptions.usesLineFragmentOrigin,
                                                         attributes: [NSFontAttributeName: self],
                                                         context: nil).size
}
}
那就叫它

let width = 290.0
let textSize = UIFont.systemFont(ofSize: 15).sizeOfString("text", constrainedToWidth: width)

要按字体和宽度计算文本高度,可以使用此扩展名

extension UIFont {
func sizeOfString (_ string: String, constrainedToWidth width: CGFloat) -> CGSize {
    return NSString(string: string).boundingRect(with: CGSize(width: width, height: CGFloat.greatestFiniteMagnitude),
                                                         options: NSStringDrawingOptions.usesLineFragmentOrigin,
                                                         attributes: [NSFontAttributeName: self],
                                                         context: nil).size
}
}
那就叫它

let width = 290.0
let textSize = UIFont.systemFont(ofSize: 15).sizeOfString("text", constrainedToWidth: width)

删除约束
lblReviewHeight
,然后尝试使用
numberOfLines
控制文本布局,如果要显示所有描述集
numberOfLines=0
,否则将
numberOfLines
设置为所需的行。

删除约束
lblReviewHeight
,然后尝试使用
numberOfLines
控制文本布局,如果您想显示所有描述集
numberOfLines=0
,否则,将
numberOfLines
设置为所需的行。

bro我无法删除lblReviewHeight,因为当我单击“阅读更多/更少”按钮时,它控制标签的高度。@MayPhyu auto layout将自动为我们计算高度,如果您对该标签有正确的约束,这意味着如果您的标签具有正确的
宽度约束
前导
尾随或
右或提供
首选MaxLayoutWidth
则您将获得此标签的
最佳
大小。bro我无法删除LBLReview,因为它控制标签的高度当我点击“阅读更多/更少”按钮时。@MayPhyu auto layout将自动为我们计算高度,如果您对该标签有正确的约束,这意味着如果您的标签具有正确的
宽度约束
前导
尾随或
或给出
首选MaxLayoutWidth
,您将得到此标签的
最佳
大小。bro@VadimKozak,bro我应该删除或替换代码中的哪些代码bro?bro@VadimKozak,bro我应该删除或替换代码中的哪些代码bro?