CATextLayer如何自动换行并适应大小?

8
如果我设置textLayer.wrapped = YES,那么如何调整textLayer以包含换行文本?也就是说,我如何得到textLayer的新高度?
基本上,我想要类似于-[UILabel sizeToFit]的东西。

我也在想这个问题。 - Nils
1个回答

2

首先需要做的是获取文本的大小。

幸运的是,NSString UIKit Additions Reference提供了一个方法来实现这一目标:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode

这将给你一个CGSize,然后你可以使用它来设置你的UILabel或其他UIView子类的框架。

所以,假设textLayer是一个UILabel,而不是一个CALayer,你最终会得到像这样的东西:

UIFont *myFont = [UIFont boldSystemFontOfSize:12.0f];
CGSize myFontSize = [myString sizeWithFont:myFont];
myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, myFontSize.width, myFontSize.height)];
myLabel.text = newTitle;
myLabel.font = myFont;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接