【问题标题】:Convert UIView to UIImage without first displaying the UIView?在不先显示 UIView 的情况下将 UIView 转换为 UIImage?
【发布时间】:2014-12-09 16:47:44
【问题描述】:

我正在寻找一种在我的应用程序的每个 UITabBarItem 中呈现两行文本的方法,每一行的大小和颜色都不同。出于这个原因,我正在寻找一种方法来制作简单的自定义 TabBarItems,其文本可以在应用程序中动态更新。例如,一个按钮可以告诉用户“菜单”的顶部和下方告诉用户她当天还剩下多少“投票”(这个数字会在会话期间根据用户的操作而改变)。

我认为一个明显的方法是使用 UIView 制作 UITabBarItem 自定义图像。我希望这可能是一种简单且低开销的方法,可以将自定义标签栏按钮包含在动态文本内容中。但是我一直无法找到将未呈现的 UIView 转换为 UIImage 的方法。我该怎么做?

有很多关于将已经呈现的 UIViews 转换为下面列出的图像的帖子,但是我找不到任何关于在不呈现视图的情况下转换视图的帖子:

如果这根本不可能,我也将感谢任何关于轻松(编码和计算)生成具有动态生成文本的自定义按钮的建议。感谢您的任何建议!

【问题讨论】:

    标签: ios objective-c uiview uiimage uitabbaritem


    【解决方案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 框架并绘制更复杂的东西。

    【讨论】:

      猜你喜欢
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2011-07-25
      • 2012-12-25
      • 2015-06-11
      • 1970-01-01
      • 2011-05-19
      相关资源
      最近更新 更多