调整UILabel的高度以适应文本
我有UILabel在我的单元格子类,这是假设拥有一个标题。 标题的大小可以是不同的长度,因此我需要调整UILabel以适应文本,并防止文本不长,我也需要能够设置maxHeight。 宽度应该是一样的。 我怎样才能在swift中创build这样的代码在tableViewCell子类?
到目前为止,我在awakeFromNib中有这个
theTitleLabel?.font = UIFont(name: "HelveticaNeue", size: 13) theTitleLabel?.textColor = UIColor(rgba: "#4F4E4F") theTitleLabel?.numberOfLines = 0 theTitleLabel?.lineBreakMode = NSLineBreakMode.ByTruncatingTail
最简单的方法是使用自动布局约束。 你使用的是awakeFromNib
,所以我假设你在Interface Builder(xib或storyboard文件)中有这个单元。
如果你可以避免,不要在你的代码中设置你的视图。 在界面生成器中做起来要容易得多。
-
find你的标签,并在Interface Builder中设置它的属性(字体,颜色,换行符等)。
-
添加宽度约束(或左右边距的约束,取决于你想要的)。
-
添加高度约束,将其关系从
= (equals)
更改为< (less than)
。
你完成了,不需要代码。
CGSize maximumLabelSize = CGSizeMake(MAX_WIDTH, MAX_HEIGHT); CGSize expectedSize = [lbl sizeThatFits:maximumLabelSize]; CGSize s = CGSizeMake(STATIC_WIDTH, expectedSize.height); yourLabel.frame = CGRectMake(yourLabel.frame.origin.x, nameLbl.frame.origin.y, s.width, s.height);
Swift 2版本,来自Zigglzworth的回答:
let maximumLabelSize = CGSizeMake(maxWidth, maxHeight); let expectedSize = theLabel.sizeThatFits(maximumLabelSize) theLabel.frame = CGRectMake(theLabel.frame.origin.x, theLabel.frame.origin.y, expectedSize.width, expectedSize.height)
let lblMassage = UILable() lblMassage.text ="Resizing the height of UILabel to fit text.................." lblMassage.numberOfLines = 0 lblMassage.lineBreakMode = NSLineBreakMode.byTruncatingTail lblMassage.preferredMaxLayoutWidth = 190 lblMassage.sizeToFit()
- 如何调用popup当我点击在iOS单元格目标c
- 使用CALayer将对angular横幅/徽章添加到UITableViewCell的angular落
- swift ios 8在tableview中更改section的字体标题
- 如何合并两个UIImage?
- uitableview headerViewForSection:总是返回nil
- 在Xcode 6 beta 4(iOS 8)中,为什么Core Data不会像在iOS 7中声明的那样将UIImage字段保留到后端,当我声明它是Transformable时?
- NSTimer,NSTask,NSThread和NSRunloop之间的基本区别是什么?
- iOS为所有viewcontroller self.view设置背景颜色
- Firebase:提供的存储桶与Swift中当前实例的存储存储桶不匹配