在不先显示 UIView 的情况下将 UIView 转换为 UIImage?
Posted
技术标签:
【中文标题】在不先显示 UIView 的情况下将 UIView 转换为 UIImage?【英文标题】:Convert UIView to UIImage without first displaying the UIView? 【发布时间】:2014-12-09 16:47:44 【问题描述】:我正在寻找一种在我的应用程序的每个 UITabBarItem 中呈现两行文本的方法,每一行的大小和颜色都不同。出于这个原因,我正在寻找一种方法来制作简单的自定义 TabBarItems,其文本可以在应用程序中动态更新。例如,一个按钮可以告诉用户“菜单”的顶部和下方告诉用户她当天还剩下多少“投票”(这个数字会在会话期间根据用户的操作而改变)。
我认为一个明显的方法是使用 UIView 制作 UITabBarItem 自定义图像。我希望这可能是一种简单且低开销的方法,可以将自定义标签栏按钮包含在动态文本内容中。但是我一直无法找到将未呈现的 UIView 转换为 UIImage 的方法。我该怎么做?
有很多关于将已经呈现的 UIViews 转换为下面列出的图像的帖子,但是我找不到任何关于在不呈现视图的情况下转换视图的帖子:
link link link link link link如果这根本不可能,我也将感谢任何关于轻松(编码和计算)生成具有动态生成文本的自定义按钮的建议。感谢您的任何建议!
【问题讨论】:
【参考方案1】:您可以避免使用 UIView 并像这样绘制 UIImage 。
如果您需要更多花式文字,请尝试NSAttributedString
。
UIGraphicsBeginImageContext(CGRect(0,0,200,200);
[[UIColor redColor] setFill];
UIFont *font = [UIFont systemFontOfSize:18.0];
NSString * text = @"A text";
[text drawAtPoint:CGPointMake(0, 0) withFont: font];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
核心图形在此仪表中非常灵活,因此您可以使用相同的方式 UIImage
以及将 UIImage 绘制到上下文中的方法
或CoreText
框架并绘制更复杂的东西。
【讨论】:
以上是关于在不先显示 UIView 的情况下将 UIView 转换为 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?
在不破坏约束的情况下将 UIView 的子视图移植到 UIScrollView?
如何在不先加载到 RAM 的情况下将文件加载到 blob 中?
是否可以在不先列出列表的情况下将 Series 附加到 DataFrame 行?