我需要创建一个包含一行文本的图像.但问题是,我首先需要创建上下文(CGBitmapContextCreate),要求图像的宽度和高度有可能在以后计算文本的边界(通过CTLineGet
ImageBounds).但我希望图像的大小=文本的边界:(我该怎么办?
实际上我用
CGBitmapContextCreate CTLineGetImageBounds CTLineDraw
也许可以在没有上下文的情况下调用CTLineGetImageBounds?
解决方法
您可以通过执行以下操作,根据要使用的字体计算NSString将占用的空间:
NSString *testString = @"A test string"; CGSize boundingSize = self.bounds.size; CGRect labelRect = [testString boundingRectWithSize:boundingSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName : [UIFont systemFontOfSize:14] } context:nil];
其中边界大小是您希望图像的最大大小.然后,您可以使用计算的大小来创建图像.