我正在尝试在里面创建一个UILabel
或UITextView
带有粗体和普通文本的内容。
我已经浏览了属性字符串,但是当我在自定义单元格的标签中设置它时,它不会显示任何文本。
我也使用了该UITextView setContentToHTMLString:
方法,但它没有记录并且应用程序被拒绝。
任何人都可以为此提供某种解决方案吗?
我正在尝试在里面创建一个UILabel
或UITextView
带有粗体和普通文本的内容。
我已经浏览了属性字符串,但是当我在自定义单元格的标签中设置它时,它不会显示任何文本。
我也使用了该UITextView setContentToHTMLString:
方法,但它没有记录并且应用程序被拒绝。
任何人都可以为此提供某种解决方案吗?
在 iOS 6.0 之前,您无法使用普通的 UILabel 或 UITextView 执行此操作,但您可以将 NSAttributedString 对象与一些可能的开源解决方案一起使用。
像TTAttributedLabel或OHAttributedLabel。
iOS SDK 中内置的一种解决方案是,您还可以使用 CATextLayer,它具有可以设置为 NSAttributedString 的字符串属性。
而且,就像下面的评论者所说,是的,您可以使用" attributedText
" 属性来做到这一点。万岁!(对于 Apple 倾听开发人员经常重复的功能请求)
使用“ NSAttributedString
”在单个标签中设置多个字体文本并CATextLayer
用于渲染它:
只是#import "NSAttributedString+Attributes.h"
然后像这样实现它:
NSString *string1 = @"Hi";
NSString *string2 = @"How are you ?";
NSMutableAttributedString *attr1 = [NSMutableAttributedString attributedStringWithString:string1];
[attr1 setFont:[UIFont systemFontOfSize:20]];
NSMutableAttributedString *attr2 = [NSMutableAttributedString attributedStringWithString:string2]
[attr2 setFont:[UIFont boldSystemFontOfSize:20]];
[attr1 appendAttributedString:attr2]
CATextLayer *textLayer = [CATextLayer layer];
layer.string = attr1;
layer.contentsScale = [[UIScreen mainScreen] scale];
(Your_text_label).layer = textLayer;
OR (if you want to render on a view directly)
[(Your_View_Name).layer addSublayer:textLayer];
我知道这是一个旧线程,但这是我自己发现的。至少在 Xcode 版本 4.6.3 中,这可以通过使用属性 textView 来实现。更棒的是,一切都可以在 Interface Builder 中完成!
以下是步骤:
将 textView 放在所需位置 选择 textView 并打开 Utilities 面板下的 Attributes 选项卡 将 textView 文本更改为“attributed” 输入所需文本 现在,突出显示您想要加粗、下划线等的任何文本。点击“T " 字体名称旁边的按钮 在弹出窗口中,选择所需的字体(例如:粗体) 您应该会在实用程序面板中看到所需的字体享受!
以下代码适用于 iOS 6.0 及更高版本。结果是文本“This is bold”将变为粗体,而“This is not bold”。将是普通文本。
if ([self.registrationLabel respondsToSelector:@selector(setAttributedText:)])
{
// iOS6 and above : Use NSAttributedStrings
const CGFloat fontSize = 17;
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
UIFont *regularFont = [UIFont systemFontOfSize:fontSize];
//UIColor *foregroundColor = [UIColor clearColor];
// Create the attributes
NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:
boldFont, NSFontAttributeName, nil];
NSDictionary *subAttrs = [NSDictionary dictionaryWithObjectsAndKeys:
regularFont, NSFontAttributeName, nil];
const NSRange range = NSMakeRange(0,12); // range of " 2012/10/14 ". Ideally this should not be hardcoded
// Create the attributed string (text + attributes)
NSString *text = @"This is bold and this is not bold.;
NSMutableAttributedString *attributedText =
[[NSMutableAttributedString alloc] initWithString:text
attributes:subAttrs];
[attributedText setAttributes:attrs range:range];
// Set it in our UILabel and we are done!
[self.registrationLabel setAttributedText:attributedText];
}
如果您在检查器中编辑属性文本时遇到问题,请将文本复制/粘贴到富文本编辑器中,调整它,将 textView 文本选项切换为属性并粘贴。瓦拉。