【发布时间】:2014-09-19 12:02:02
【问题描述】:
我有一个UITextView,用户可以在其中输入数据。我有一个格式栏下面有
粗体、斜体、下划线和其他选项,如对齐等。
经过大量搜索和测试后,我知道NSString 不支持这种粗体,应该使用斜体样式而不是NSAttributedString,但我使用NSAttributedString 我无法将所选文本设置为粗体和斜体同时。
我的代码是这样的
NSMutableAttributedString *textViewText = [[NSMutableAttributedString alloc]initWithAttributedString:textView.attributedText];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
if(textBoldBtn){
UIFont *boldFont = [UIFont boldSystemFontOfSize:textView.font.pointSize];
NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName];
[dict addEntriesFromDictionary:boldAttr];
}
if(textItalicBtn){
UIFont *italicFont = [UIFont italicSystemFontOfSize:textView.font.pointSize];
NSDictionary *italicAttr = [NSDictionary dictionaryWithObject:italicFont forKey:NSFontAttributeName];
[dict addEntriesFromDictionary:italicAttr];
}
attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:dict];
[textViewText appendAttributedString:attributedText];
textView.attributedText = textViewText;
return true;
}
使用这种技术,当两个按钮都被按下时,它只需要 dict 中的最后一个字体。
我已经浏览了堆栈溢出的链接,他们使用标签的 fontDescriptor 使文本成为斜体和粗体,但请注意我不想使用任何标签。我正在使用UITextView。我也经历过
[textView setAllowsEditingTextAttributes:YES];
但我想要我自己的功能。我还看到了几个适用于 iOS 的 EGOTextView 和 TextEdit,但我绝对希望它适用于 iPad。我只想使用UITextView。
请告知是否有任何方法使用属性字符串使文本同时变为斜体粗体甚至下划线或任何方法自定义 textView 个人 EditingTextAttributes 功能的功能。
提前致谢。
*应用必须上传到应用商店,因此不需要私有框架,因为它们会导致应用被拒绝。
【问题讨论】:
标签: ipad fonts uitextview nsattributedstring