【问题标题】:Attribute ranges of characters in a UItextview with NSAttributedString?具有NSAttributedString的UItextview中字符的属性范围?
【发布时间】:2014-02-22 11:52:09
【问题描述】:

我在UITextview 中有以下文字

你好! 右上角的汽车是您设置汽车规格的地方 - 不用担心,只需 30 秒,您只需设置一次!

我想:

  1. 加粗“你好!”并将其放大到 17
  2. 在“仅 30 秒”下划线
  3. 制作“一次!”红色的。

我该怎么做?我对NSAttributedString 的了解非常少,并且对文档没有任何帮助。

谢谢你

【问题讨论】:

标签: ios uitextview nsattributedstring


【解决方案1】:

创建可变属性字符串,执行以下步骤

NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:yourTextView.text];

1) 找到Hello!范围并设置字体大小

NSRange foundRange = [attrString rangeOfString:@"Hello!"];
if (foundRange.location != NSNotFound)
{
    [attrString beginEditing];
    [attrString addAttribute: NSFontAttributeName
                   value:[[UIFont boldSystemFontOfSize:17] fontName]
                   range:boldedRange];
    [attrString endEditing];
}

2) 搜索only 30 seconds的范围并设置下划线样式

foundRange = [attrString rangeOfString:@"only 30 seconds"];
if (foundRange.location != NSNotFound)
{
    [attrString beginEditing];
    [attrString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:foundRange];
    [attrString endEditing];
}

3) 搜索once!的范围并设置描边颜色。

foundRange = [attrString rangeOfString:@"once!"];
if (foundRange.location != NSNotFound)
{
    [attrString beginEditing];
    [attrString addAttribute:NSStrokeColorAttributeName value:[UIColor redColor] range:foundRange];
    [attrString endEditing];
}

最后将属性字符串设置为您的文本视图

yourTextView.attributedText = attrString;

注意:以上仅适用于ios6+.

【讨论】:

  • 这也很棒,谢谢!但另一个答案要简单得多。感谢我的朋友
  • 我没有看到 rangeOfString 可用于在 Swift 3 中的 NSMutableAttributedString 实例上调用
【解决方案2】:

如果您想通过情节提要实现此目的,请选择 UITextView 并转到 Attributes Inspector。然后看下图

如果以编程方式,请检查这些link && Here

【讨论】:

  • 这个答案很完美!非常感谢,我不知道你可以像这样简单地编辑它。对刚刚投反对票的其他 SO 成员感到非常失望......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2014-03-18
  • 2013-07-03
  • 2017-06-09
  • 1970-01-01
  • 2013-03-27
相关资源
最近更新 更多