iOS:在 UIImage 上绘制 NSString 和边框

2024-01-26

我想在我已有的 UIImage 上绘制一个 NSString 和一个边框。我找到了一种将 NSString 绘制为 UIImage 的方法,但我需要它在我提供的图像上绘制。

-(UIImage *)imageFromText:(NSString *)text
{
    // set the font type and size
    UIFont *font = [UIFont systemFontOfSize:20.0];  
    CGSize size  = [text sizeWithFont:font];

    // check if UIGraphicsBeginImageContextWithOptions is available (iOS is 4.0+)
    if (UIGraphicsBeginImageContextWithOptions != NULL)
        UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
    else
        // iOS is < 4.0 
        UIGraphicsBeginImageContext(size);

    // optional: add a shadow, to avoid clipping the shadow you should make the context size bigger 
    //
    // CGContextRef ctx = UIGraphicsGetCurrentContext();
    // CGContextSetShadowWithColor(ctx, CGSizeMake(1.0, 1.0), 5.0, [[UIColor grayColor] CGColor]);

    // draw in context, you can use also drawInRect:withFont:
    [text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];

    // transfer image
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();    

    return image;
}

我如何修改此方法以提供我自己的背景图像并添加边框?


如果您在 UIImageView 中显示 UIImage,您可以设置UIImageView.layer.delegate并使用类似的东西:

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
  CGContextSetFillColorWithColor(ctx, [[UIColor darkTextColor] CGColor]);

  UIGraphicsPushContext(ctx);

  [word drawAtPoint:CGPointMake(30.0f, 30.0f) 
           forWidth:200.0f 
           withFont:[UIFont boldSystemFontOfSize:32] 
      lineBreakMode:UILineBreakModeClip];

  UIGraphicsPopContext();
}

代码来自添加文本到 CALayer https://stackoverflow.com/questions/2209734/add-text-to-calayer

边框很简单,只需使用 CALayer 属性即可:

imageview.layer.borderColor = [UIColor blackColor].CGColor;
imageview.sublayer.borderWidth = 2.0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS:在 UIImage 上绘制 NSString 和边框 的相关文章

随机推荐

  • 如何设置键盘快捷键以跳转到行首/行尾? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I can see that Ctrl left right jumps to the beginning end of line How
  • 在 Swift 中,如何交错 NSMutableParagraphStyle() 和 NSMutableAttributedString 来格式化要在 UITextView 中显示的字符串?

    回应我之前发布的一个例子 Andreas Oetjen 展示了一种巧妙的方法来显示分数和小数表textView使用属性字符串 https stackoverflow com a 42153358 2348597对齐数字 使小数点或正斜杠字符
  • Joshua Bloch 引入的 Builder 模式的一些修改

    我使用 Joshua Bloch 引入的 Java 构建器模式 有时 我发现与原始类型相比 使用默认值初始化某些字段的成本更高 因此 我的策略就是这样 我延迟了这些字段的默认值初始化操作 在构建过程中 如果调用者之前未设置它们 我只会将它们
  • 正则表达式精确匹配字符串?

    在这个问题的前言中 我要提到 虽然我远非正则表达式专家 但它们对我来说并不完全陌生 构建正则表达式来搜索特定字符串内的模式通常对我来说不是问题 但我有一个 也许 独特的情况 我有一组价值观 比如 028938DEF567987390987
  • 如何在 django 中进行内连接?

    我想在 Html 中显示出版物的城市 州和国家的名称 但它们位于不同的表中 这是我的模型 py class country models Model country name models CharField max length 200
  • 在 powershell 中使用参数创建快捷方式的引用路径

    我有以下调用 WSHShell 的 powershell 代码 它将在 Win7 8 的开始菜单中创建快捷方式 但无法弄清楚如何让 powershell 在目标行中的参数之前传递 UNC 路径所需的引号 我想要的是 UNCPATH1 Dir
  • 有人有 NLTK 的分类 XML 语料库阅读器吗?

    有人为 NLTK 编写过分类 XML 语料库阅读器吗 我正在使用带注释的纽约时报语料库 它是一个 XML 语料库 我可以用以下命令读取文件XML语料库阅读器 https stackoverflow com questions 6837566
  • UISplitViewController PrimaryViewController 视图框架的值错误

    我有一个 UISplitViewController 和 2 个自定义 viewController 当我去设置主视图控制器并想要获取视图的框架时 它给了我一个完全奇怪的值 并且当我使用它来将部分内容绘制出屏幕时 这是我在故事板中的设置 这
  • 如何在 Django 500.html 页面中包含堆栈跟踪?

    我在跑Django 1 0我即将部署我的应用程序 因此 我将把 DEBUG 设置更改为 False 话虽如此 当错误发生时 我仍然希望在 500 html 页面上包含堆栈跟踪 通过这样做 用户可以复制并粘贴错误并轻松地将其通过电子邮件发送给
  • 联系表单脚本未发送表单

    我有这个 PHP 联系表单脚本 如下所示 我以前使用过它 所以我知道它可以工作 但是 由于我将 html 表单隐藏在一个新的 jQuery 支持的 div 中 div class toggle hidemail href Email us
  • 传入工作日名称以获取 SQL 中最接近的日期

    我正在研究一个处理频率值的查询 即星期一 星期二等 思考作业 所以在我的查询中我目前的结果是 jobId 1 personId 100 frequencyVal Mondays jobId 2 personId 101 frequencyV
  • JavaFX - 动态关闭 TabPane 中的选项卡

    我有一个带有可关闭选项卡的 TabPane 当用户单击选项卡内容中的按钮时 我想触发 关闭选项卡事件 这是用户单击按钮时调用的方法 public class CustomTab extends Tab protected void clos
  • 我应该安装@types/node吗? VSCode 好像自动安装了

    我看到很多人都在安装 types node在他们的开发依赖项中 但是 如果您在 VSCode 中打开一个空文件夹 并创建一个空的 js 文件 然后输入 const fs require fs lt hover it and type sho
  • GNU Make for 带有两个变量的循环

    我想写一些这样的内容 foreach var1 var2 LIST1 LIST2 cp var1 var2 我该如何在 GNU makefile 中执行此操作 Beta关于使用join的建议是正确的 但问题是 以构造包含空格的命令行的方式使
  • Firestore 活动文档快照侦听器中断排序

    我遇到了一个 Firestore 问题 希望有人可以帮助我解决 我有一个活动文档快照侦听器 它似乎破坏了排序行为 我不确定为什么 在组件的构造函数中 我初始化文档快照侦听器一次 this listen this fs collection
  • 数据库允许应用程序始终通过 SP 进行 CRUD 操作是最佳实践吗?

    我听过这背后的推理 我很好奇其他人是否认为这是最佳实践 好主意 一种推理是 限制对数据库表的直接访问 并强制应用程序 用户使用 SP 存储过程 进行 CRUD 操作将允许 DBA 在将 SP 投入生产之前进行细粒度控制以批准 审查 SP 避
  • 从 monodroid 类库访问资源

    是否可以从引用类库的 monodroid 应用程序中的 monodroid 类库访问文件 使用构建操作 AndroidAsset 我在类库中创建了一个 Assets 文件夹 并添加了一个带有构建操作 Android Asset 的文本文件
  • 如何减少 TextField 上 prefixIcon 的填充?

    我不知道如何超越 48px 材质库默认值 我快速浏览了 SDK 但没有找到任何东西 我知道这与 prefixIcon 参数本身有关 因为无论里面放什么 它总是 48px 或其他任何值 我有一个自定义 SDK 所以如果有人知道它在哪里 我想减
  • GIT 接收后结账,无需根文件夹

    我是 git 新手 试图弄清楚如何通过检查网络根目录来更新每次推送的网站 我搜索了 stackoverflow 只找到了有关如何克隆的主题 这不是我想要的 到目前为止 我已经设置了本地和远程存储库 以及接收后挂钩 bin sh GIT WO
  • iOS:在 UIImage 上绘制 NSString 和边框

    我想在我已有的 UIImage 上绘制一个 NSString 和一个边框 我找到了一种将 NSString 绘制为 UIImage 的方法 但我需要它在我提供的图像上绘制 UIImage imageFromText NSString tex