2011-11-21 100 views
6

如果我设置textLayer.wrapped = YES,如何调整textLayer以包含包装文本?即,如何获得textLayer的新高度?CATextLayer包裹sizeToFit?

基本上,我想要类似-[UILabel sizeToFit]

+0

想知道关于太.. – Nils

回答

2

您需要做的第一件事就是获取文本的大小。

幸运的是,NSString UIKit Additions Reference提供了一个方法来做到这点:

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

这会给你一个CGSize,你就可以使用设置你的UILabel或任何子类的UIView那你的框架使用。

因此,假设textLayerUILabel - 而不是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; 
+1

的问题是对的CALayer。 –