亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將UILabel高度調整為文本

將UILabel高度調整為文本

慕斯王 2019-11-11 13:06:25
我有一些標簽要根據文本調整高度,這是我現在為此編寫的代碼func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max))    label.numberOfLines = 0    label.lineBreakMode = NSLineBreakMode.ByWordWrapping    label.font = font    label.text = text    label.sizeToFit()    return label.frame.height}編輯:問題不在這段代碼中,所以我的解決方法是問題本身。它可能對其他人仍然有用!
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我剛把它放在操場上,對我有用。


為Swift 4.0更新


import UIKit


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

    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.greatestFiniteMagnitude))

    label.numberOfLines = 0

    label.lineBreakMode = NSLineBreakMode.byWordWrapping

    label.font = font

    label.text = text


    label.sizeToFit()

    return label.frame.height

}


let font = UIFont(name: "Helvetica", size: 20.0)


var height = heightForView("This is just a load of text", font: font, width: 100.0)

斯威夫特3:


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

    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))

    label.numberOfLines = 0

    label.lineBreakMode = NSLineBreakMode.byWordWrapping

    label.font = font

    label.text = text

    label.sizeToFit()


    return label.frame.height

}

http://img1.sycdn.imooc.com//5dc8ec670001c35f09160319.jpg

查看完整回答
反對 回復 2019-11-11
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

如果使用的是AutoLayout,則UILabel只能通過config UI 調整高度。


對于iOS8或更高版本


為您設置約束條件領先/追蹤 UILabel

并將行UILabel從1 更改為0

http://img1.sycdn.imooc.com//5dc8ec750001525702050021.jpg

對于iOS7


首先,您需要添加包含高度UILabel

然后,將關系從修改Equal為Greater than or Equal

http://img1.sycdn.imooc.com//5dc8ec7c0001961502550198.jpg

最后,將行UILabel從1 更改為0

http://img1.sycdn.imooc.com//5dc8ec840001525702050021.jpg

您UILabel將根據文本自動增加高度



查看完整回答
反對 回復 2019-11-11
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

我有很強的工作解決方案。


在layoutSubviews中:


    _title.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 0)

    _title.sizeToFit()

    _title.frame.size = _title.bounds.size

在文本設置器中:


    _title.text = newValue

    setNeedsLayout()

UPD。 當然可以使用以下UILabel設置:


    _title.lineBreakMode = .ByWordWrapping

    _title.numberOfLines = 0


查看完整回答
反對 回復 2019-11-11
  • 3 回答
  • 0 關注
  • 585 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號