如何在UITextView
中为文字加下划线。我理解我需要创建一个UITextView
的子类,但drawRect:
下的内容是什么?
感谢。
答案 0 :(得分:22)
尝试使用NSAttributedString
,如下所示,并在UITextView
中设置。这适用于iOS6。
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Some String"];
[attString addAttribute:(NSString*)kCTUnderlineStyleAttributeName
value:[NSNumber numberWithInt:kCTUnderlineStyleSingle]
range:(NSRange){0,[attString length]}];
有关NSAttributedString
的详细信息,请查看此How do you use NSAttributedString?
例如: -
textView.attributedText = attString;
来自apple documentation on UITextView,
在iOS 6及更高版本中,此类支持多种文本样式 使用attributedText属性。 (不支持样式文本 早期版本的iOS。)为此属性设置值会导致 文本视图使用属性中提供的样式信息 串。您仍然可以使用font,textColor和textAlignment 用于设置样式属性的属性,但这些属性适用于所有属性 文本视图中的文本。
文本视图显示的样式文本。
@property(nonatomic,copy) NSAttributedString *attributedText
讨论:默认情况下,此属性为零。为此属性分配新值也会使用相同的字符串数据替换text属性的值,尽管没有任何格式信息。此外,分配新的值会更新font,textColor和textAlignment属性中的值,以便它们反映从属性字符串中的位置0开始的样式信息。
答案 1 :(得分:8)
如果您想避免包含CoreText,可以使用具有以下属性的属性字符串:
@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}
答案 2 :(得分:6)
如果这是静态文本,您可以在Interface Builder中为其加下划线。请务必制作文字'归因于'首先选择'归因于'在下拉菜单中:
答案 3 :(得分:2)
textViewMessage.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor], NSUnderlineStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]};
答案 4 :(得分:1)
如果您要格式化文字(带下划线的字词,链接,彩色字词......),我建议您使用FTCoreText
答案 5 :(得分:1)
-(IBAction)underline:(id)sender
{
NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
texts.attributedText = [[NSAttributedString alloc] initWithString:texts.text
attributes:underlineAttribute];
}
答案 6 :(得分:0)
如果您使用的是iOS 6,则可以使用 UITextView 的attributedText
属性。对文本应用下划线格式。您还可以设置typingAttributes
属性,以确保用户键入的文本具有特定的格式设置(如果您愿意)。
答案 7 :(得分:0)
我建议您使用CoreText。基础教程是here on raywenderlich。
答案 8 :(得分:0)
我建议您使用MFUnderlinedTextView,这会有所帮助。
答案 9 :(得分:0)
您不能使用“kCTUnderlineStyleAttributeName”或“kCTUnderlineStyleSingle” 现在你必须这样做:
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Text"];
[attString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:(NSRange){0,[attString length]}];
答案 10 :(得分:0)
这就是我使用Swift 5的方法:
let attributedString = NSMutableAttributedString(string: myTextView.text ?? "")
myTextView.linkTextAttributes = [NSAttributedString.Key(rawValue: NSAttributedString.Key.underlineStyle.rawValue): NSUnderlineStyle.single.rawValue] as [NSAttributedString.Key: Any]?
myTextView.attributedText = attributedString
答案 11 :(得分:0)
迅速5。 作为UITextView(如果要插入文本),我创建了一个扩展函数,如下所示。
extension UITextView {
func underlined() {
let border = CALayer()
let width = CGFloat(1.0)
border.borderColor = UIColor.lightGray.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - 5, width: self.frame.size.width, height: 1)
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
let style = NSMutableParagraphStyle()
style.lineSpacing = 15
let attributes = [NSAttributedString.Key.paragraphStyle : style, NSAttributedString.Key.foregroundColor : UIColor.darkGray, NSAttributedString.Key.font : UIFont.systemFont(ofSize: 13)]
self.attributedText = NSAttributedString(string: self.text, attributes: attributes)
}
}
边框绘制线条,样式添加线条之间的间距。 UIView自定义布局中的用法:
override func layoutSubviews() {
super.layoutSubviews()
self.dateAndTimeInput.underlined()
}
答案 12 :(得分:-3)
要为文字加下划线,您必须去哪里可以选择复制,剪切,删除选项,现在有更多选项,如B / I / U(粗体,斜体,下划线)。选择此选项就是这样。并且无法使用它,请再次选择下划线选项。