如何在UITextView
. 我知道我需要创建一个 的子类UITextView
,但是会发生什么drawRect:
?
谢谢。
如何在UITextView
. 我知道我需要创建一个 的子类UITextView
,但是会发生什么drawRect:
?
谢谢。
尝试NSAttributedString
如下使用并设置在UITextView
. 这适用于 iOS6。
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Some String"];
[attString addAttribute:(NSString*)kCTUnderlineStyleAttributeName
value:[NSNumber numberWithInt:kCTUnderlineStyleSingle]
range:(NSRange){0,[attString length]}];
有关NSAttributedString
检查此内容的更多信息,您如何使用 NSAttributedString?
例如:-
textView.attributedText = attString;
在 iOS 6 及更高版本中,此类通过使用属性文本属性支持多种文本样式。(iOS 的早期版本不支持样式化文本。)为此属性设置值会导致文本视图使用属性字符串中提供的样式信息。您仍然可以使用 font、textColor 和 textAlignment 属性来设置样式属性,但这些属性适用于文本视图中的所有文本。
文本视图显示的样式化文本。
@property(nonatomic,copy) NSAttributedString *attributedText
讨论:此属性默认为 nil。为该属性分配一个新值也会用相同的字符串数据替换 text 属性的值,尽管没有任何格式信息。此外,分配新的 a 值会更新 font、textColor 和 textAlignment 属性中的值,以便它们反映从属性字符串中位置 0 开始的样式信息。
如果这是静态文本,您可以在 Interface Builder 中为它加下划线。确保首先通过在下拉菜单中选择“Attributed”来制作文本“Attributed”:
如果您想避免包含 CoreText,您可以使用具有此属性的属性字符串:
@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}
textViewMessage.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor], NSUnderlineStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]};
-(IBAction)underline:(id)sender
{
NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
texts.attributedText = [[NSAttributedString alloc] initWithString:texts.text
attributes:underlineAttribute];
}
如果你想格式化你的文本(带下划线的词、链接、彩色词......)我建议你使用FTCoreText
你不能使用 "kCTUnderlineStyleAttributeName" 或 "kCTUnderlineStyleSingle" 现在你必须这样做:
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Text"];
[attString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:(NSRange){0,[attString length]}];
我建议您使用MFUnderlinedTextView,它会有所帮助。
我建议您使用CoreText。基本教程在 raywenderlich 上。
如果您使用的是 iOS 6,那么您可以使用UITextViewattributedText
的属性。对文本应用下划线格式。如果您愿意,您还可以设置该属性以确保用户键入的文本具有一组特定的格式。typingAttributes
let someString = NSMutableAttributedString(string: "Your String", attributes: [NSAttributedString.Key.font : UIFont.boldSystemFont(ofSize: 20), NSAttributedString.Key.underlineStyle : NSUnderlineStyle.single.rawValue])
someStringTextView.attributedText = titleAT
你可以给你的字符串一堆属性,比如粗体、下划线等。
这就是我使用 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
Swift 5. As my UITextView if for inserting text, I created an extension function as bellow.
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)
}
}
The border is drawling the line and the style is adding the spacing between the lines. Usage in your UIView custom layout:
override func layoutSubviews() {
super.layoutSubviews()
self.dateAndTimeInput.underlined()
}
要为文本添加下划线,您必须转到可以选择复制、剪切、删除选项的位置,现在有更多选项,例如 B/I/U(粗体、斜体、下划线)。选择此选项,就是这样。如果无法使用,请再次选择下划线选项。