在我的问题“How do I get -[NSString sizeWithFont:forWidth:lineBreakMode:]
to work?”中,我了解到 -[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
实际上是我需要的。
-[NSString sizeWithFont:forWidth:lineBreakMode:]
的文档说明它实际上并没有将文本换行到其他行。那么我将如何使用它呢? (示例会有所帮助。)
最佳答案
它也适用于多行字符串。
基本上,它是一个函数,可让您查看使用字体和换行模式呈现时字符串的大小。
当我想在某个区域显示可变长度的文本时,我会在应用程序的几个地方使用它。
默认情况下,UILabel 会将文本垂直居中。要使文本顶部对齐,您需要将标签的大小调整为仅包含其中的字符串所需的高度。
我用这个方法来做这个。
我将如何使用它的示例如下:
//Calculate the expected size based on the font and linebreak mode of your label
CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
您指定要放置文本的区域有多大,然后此方法会告诉您它将占用多少空间(根据需要换行)。此外,如果字符串会溢出您提供的 rect 的边界,您可以判断然后决定如何显示文本。
对它的引用实际上并没有包裹文本,因为这个方法实际上并没有对文本做任何事情。它只是虚拟地布置它并返回真正布置它需要多大的区域。
它负责执行包装/其他需要完成的操作。
希望对您有所帮助。
克里斯。
关于iphone - 什么是-[NSString sizeWithFont :forWidth:lineBreakMode:] good for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/455553/
相关文章:
iphone - 在 Objective-C 中随机化 NSArray 的规范方法
iphone - 从 float 或 double 实例化 NSDecimalNumber 的正确方
ios - 计算两个 CLLocationCoordinate2D 之间的方位
iphone - animateWithDuration :animations: block ma
iphone - 如何以编程方式区分 iphone 4 和 iphone 4S?
objective-c - Objective C 中的多个委托(delegate)