【问题标题】:Bold part of an NSAttributedString without knowing length不知道长度的 NSAttributedString 的粗体部分
【发布时间】:2014-11-21 15:02:23
【问题描述】:

我正在开发一个应用程序,该应用程序将从 UITextFields 获取用户输入的数据,例如用户的名字和姓氏。稍后,我想以粗体显示这些数据。

我读过NSAttributedString change style to bold without changing pointSize?Any way to bold part of a NSString?,但这些似乎表明您必须知道要设置为粗体的字符范围。

在我的情况下,直到用户输入他们的数据之后,我才真正知道字符串的长度……在这种情况发生之前,我怎么知道要设置为粗体的字符串的长度是多少?

下面是我正在使用的 UITextFields 的属性,稍后我将用粗体显示。

@property (strong, nonatomic) IBOutlet UITextField *firstName;
@property (strong, nonatomic) IBOutlet UITextField *lastName;

下面是我当前如何创建字符串来存储来自文本字段的信息,我想以粗体显示所有这些信息:

NSString *firstName = [_firstName text];
NSString *lastName  = [_lastName text];

【问题讨论】:

  • 你忘了提到你要加粗的内容。
  • 现在应该修复了;抱歉,不是很清楚
  • 你想让两个字符串都加粗吗?
  • 是的,我的错;我将对此进行更明确的编辑
  • 你想把姓氏或名字加粗还是两者都加粗?

标签: ios objective-c nsstring uitextfield nsattributedstring


【解决方案1】:

您可能在编写代码时不知道输入文本框中的文本长度,但在运行时您会知道。

试试这样的:

NSMutableAttributedString *attribFirstNameString = [[NSMutableAttributedString alloc] initWithString: [firstName text]];
NSRange firstNameRange = NSMakeRange(0, [[firstName text] length]);
[attribFirstNameString addAttribute: NSFontAttributeName value: [UIFont boldSystemFontOfSize: 20.0f] range: firstNameRange];
[firstName setAttributedText: attribFirstNameString];

【讨论】:

  • 这很难。为什么不使用initWithString:attributes:
  • 你当然可以。我想更详细一点来演示发生了什么。我们创建属性字符串。我们创建范围。我们将粗体字体添加到范围中。我们应用回文本字段。
  • 嗨@Axeva,感谢您的评论。我试图用下面的代码做类似的事情,但我一直收到一个错误,说 NSFont 是一个未声明的标识符: NSMutableAttributedString *firstName = [[NSMutableAttributedString alloc] initWithString:_firstName.text]; [firstName addAttribute:NSFontAttributeName 值:[NSFont fontWithName:@“Helvetica-Bold”]
  • @narner 现在你又遇到了另一个问题。我建议就如何处理数据存储提出一个新问题。
  • 我认为你是对的@Axeva。我仍然会将您的答案标记为正确;我猜我只需要在检索用户数据的同一个空间中使用它。
猜你喜欢
  • 1970-01-01
  • 2019-02-05
  • 2018-08-08
  • 2022-01-07
  • 2015-05-03
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多