[self.Review sizeToFit];

尺寸调整前的结果:

NSStringFromCGRect(self.Review.frame): {{90, 20}, {198, 63}}

尺寸匹配后的结果:

NSStringFromCGRect(self.Review.frame): {{90, 20}, {181, 45}}

我希望宽度保持不变.我只想改变高度.汽车面罩是

(lldb) po self.Review
(UILabel *) $1 = 0x08bb0fe0 <UILabel: 0x8bb0fe0; frame = (90 20; 181 45); text = 'I'm at Mal Taman Anggrek ...'; clipsToBounds = YES; opaque = NO; autoresize = LM+RM+H; userInteractionEnabled = NO; layer = <CALayer: 0x8bb68b0>>

我知道有一种方法可以做到这一点:

答案要么奇怪(我们需要重新提供字体信息).或者不清楚.

你还需要定义一个最大宽度,并告诉你的程序

我将使用使用sizeWithFont的奇怪解决方案.这很奇怪,因为UILabel已经知道标签中的字体.

实际上sizeToFit的表现如何?它是如何决定我们需要更瘦还是更高?

推荐答案

就是这样做的.因为标签已经包含字体信息,所以在这个方法调用中包含字体信息是微不足道的.

CGSize size = [label.text sizeWithFont:label.font
                     constrainedToSize:CGSizeMake(maxWidth, MAXFLOAT)
                         lineBreakMode:UILineBreakModeWordWrap]; 
CGRect labelFrame = label.frame;
labelFrame.size.height = size.height;
label.frame = labelFrame;

Swift版本使用更为最新的boundingRectWithSize:

let maxHeight = CGFloat.infinity
let rect = label.attributedText?.boundingRectWithSize(CGSizeMake(maxWidth, maxHeight), 
       options: .UsesLineFragmentOrigin, context: nil)
var frame = label.frame
frame.size.height = rect.size.height
label.frame = frame

Objective-c相关问答推荐

单例实例与类方法

我应该为 memcpy 和 realloc 包含什么标题?

Objective-C - 将浮点数转换为字符串的其他方法

ios 使用 AVFramework 捕获图像

为什么在目标 c 的静态上下文中允许 self

在 iOS 中实现闪屏

检测 NSString 的语言

如何使用 NSString drawInRect 使文本居中?

Objective C const NSString * vs NSString * const

Objective-C 中是否有一些文字字典或数组语法?

StoryBoard 助理编辑器停止显示相关文件

如何在Objective C(NSRegularExpression)中编写正则表达式?

如何将@selector 作为参数传递?

如何在 Objective-C 中创建一个空白的透明 png?

iOS 上 64 位的 BOOL

如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

UITableViewCell 右侧有图像?

何时在 iPhone 上使用 UIView 与 UIViewController?

如何从 UIColor 对象中获取红绿蓝 (RGB) 和 alpha?

Objective-c - CABasicAnimation 在动画后应用更改?