【问题标题】:How to add outline to text in a UITextView?如何在 UITextView 中为文本添加大纲?
【发布时间】:2015-01-18 01:54:56
【问题描述】:

我是 iOS 文本编程的新手,现在有点难过。我正在创建一个示例项目来学习如何制作一个 lolcat 应用程序(从有趣的事情开始!)。

我有一个带有猫的 UIImage,我通过在上面放置一个带有文本的 UITextView 来在它上面放置一些文本。

我想以这样的文字结尾:

当我将文本放在 UILabel 中时,我能够成功完成此操作。我使用了在 SO 上找到的代码,该代码使用 drawTextInRect 来完成魔法。

现在,我想在 UITextView 中做同样的事情(我希望能够滚动文本)。

**编辑:**所以这是我目前正在尝试的:

var foo = NSAttributedString(string: text, attributes: [
        NSStrokeColorAttributeName : UIColor.blackColor(),
        NSForegroundColorAttributeName : UIColor.whiteColor(),
        NSStrokeWidthAttributeName : NSNumber(float: -4.0),
        NSFontAttributeName : UIFont.systemFontOfSize(30.0)
 ])

这让我得到这样的结果:

如果我现在将笔画宽度加倍到 -8.0,我会得到以下结果,这在我的估计中看起来非常糟糕。似乎在笔触宽度和我能看到的填充量之间有一个权衡。理想情况下,我希望笔画变宽而不会占用白色文本。

【问题讨论】:

  • 请注意:如果你要否决我的问题,你应该留下评论解释原因。没有 cmets 的投票对我没有任何启发。
  • “我的问题是 UITextView 当然不提供与 UILabel 相同的钩子”我不明白你的意思。它们都允许您使用 NSAttributedString,并且使用 NSAttributedString,这很容易。
  • 你的问题的标题和内容有点无关。标题是在问如何创建大纲文本,但在我看来内容是在问如何在图像上绘制文本。请改写它以使其更清楚。
  • 您找到解决方案了吗?我也面临同样的问题...

标签: ios swift text


【解决方案1】:

您需要阅读 NSAttributedString。你可以给字母一个轮廓线:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSAttributedString_UIKit_Additions/#//apple_ref/doc/constant_group/Character_Attributes

使用NSStrokeColorAttributeNameNSStrokeWidthAttributeName 配置轮廓描边。

一旦你有了你的属性字符串,你可以把它作为一个标签,把它放在一个文本视图中,或者直接绘制它,你可以随意。

如果你添加一些扩展和一点点阴影可能会更好看:

【讨论】:

  • 我在帖子中提到这是在 iOS 上,但您已将我链接到 Mac 开发人员文档。谢谢你的信息!
  • @bitops 在 iOS 上完全一样。
  • 您确定这会按您期望的方式工作吗?当我尝试将其插入时,笔画“吃掉”字符越宽。我希望笔画绕到角色的外部。
  • @bitops 添加了一张图片。我不认为这很糟糕。
  • 我将发布我的问题的更新 - 我没有看到与您在图像中得到的结果相似的结果。
【解决方案2】:

您无需任何 CoreGraphics 代码即可使用库 DrawingLabel 的帮助

DrawingStroke *blackStroke = [DrawingStroke new];
blackStroke.strokeWidth = 3.0;
blackStroke.strokeColor = [UIColor blackColor];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多