如果我设置textLayer.wrapped = YES
,如何调整textLayer
的大小以包含已包装的文字?即,如何获得textLayer
的新高度?
基本上,我想要像-[UILabel sizeToFit]
这样的东西。
答案 0 :(得分: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;
- 你最终会得到这样的结果:
{{1}}