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;
から ITextViewに関するAppleのドキュメント 、
IOS 6以降では、このクラスはattributedTextプロパティを使用して複数のテキストスタイルをサポートします。 (スタイル付きテキストは、以前のバージョンのiOSではサポートされていません。)このプロパティに値を設定すると、テキストビューは属性付き文字列で提供されるスタイル情報を使用します。 font、textColor、およびtextAlignmentプロパティを使用してスタイル属性を設定することはできますが、これらのプロパティはテキストビューのすべてのテキストに適用されます。
テキストビューによって表示されるスタイル付きテキスト。
@property(nonatomic,copy) NSAttributedString *attributedText
ディスカッション:このプロパティはデフォルトではnilです。このプロパティに新しい値を割り当てると、フォーマット情報はありませんが、textプロパティの値も同じ文字列データに置き換えられます。さらに、新しい値を割り当てると、font、textColor、およびtextAlignmentプロパティの値が更新され、属性付き文字列の位置0から始まるスタイル情報が反映されます。
CoreTextを含める必要がない場合は、次の属性を持つ属性付き文字列を利用できます。
@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}
これが静的テキストの場合は、InterfaceBuilderで下線を引くことができます。ドロップダウンメニューで[属性付き]を選択して、最初に[属性付き]というテキストを作成してください。
textViewMessage.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor], NSUnderlineStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]};
「kCTUnderlineStyleAttributeName」または「kCTUnderlineStyleSingle」は使用できません。次のようにする必要があります。
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Text"];
[attString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:(NSRange){0,[attString length]}];
テキストをフォーマットしたい場合(下線付きの単語、リンク、色付きの単語など) FTCoreText を使用することをお勧めします
-(IBAction)underline:(id)sender
{
NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
texts.attributedText = [[NSAttributedString alloc] initWithString:texts.text
attributes:underlineAttribute];
}
MFUnderlinedTextView を使用することをお勧めします。役に立ちます。
これは私が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
IOS 6を使用している場合は、ITextViewのattributedText
属性を使用できます。テキストに下線の書式を適用します。必要に応じて、typingAttributes
プロパティを設定して、ユーザーが入力するテキストに特定の書式設定が含まれるようにすることもできます。
CoreText を使用することをお勧めします。基本的なチュートリアルは ここではraywenderlich です。
Swift 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()
}