iphone - 什么是-[NSString sizeWithFont :forWidth:line

在我的问题“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/

相关文章:

objective-c - 适合 UILabel 中的文本

iphone - 在 Objective-C 中随机化 NSArray 的规范方法

iphone - 从 float 或 double 实例化 NSDecimalNumber 的正确方

ios - 计算两个 CLLocationCoordinate2D 之间的方位

iphone - animateWithDuration :animations: block ma

c - 在 Objective-C 类中混合 C 函数

iphone - 如何以编程方式区分 iphone 4 和 iphone 4S?

objective-c - Objective C 中的多个委托(delegate)

objective-c - 如何从 C 方法调用 Objective-C 方法?

objective-c - 如何在没有 Interface Builder 的情况下创建 Cocoa