11

のテキストに下線を付けるにはどうすればよいですかUITextView。のサブクラスを作成する必要があることは理解していますUITextViewが、何が発生しdrawRect:ますか?

ありがとう。

4

14 に答える 14

23

次のように使用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;

UITextViewのアップルのドキュメントから、

iOS 6以降では、このクラスはattributedTextプロパティを使用して複数のテキストスタイルをサポートします。(スタイル付きテキストは、以前のバージョンのiOSではサポートされていません。)このプロパティに値を設定すると、テキストビューは属性付き文字列で提供されるスタイル情報を使用します。font、textColor、およびtextAlignmentプロパティを使用してスタイル属性を設定することはできますが、これらのプロパティはテキストビューのすべてのテキストに適用されます。

attributedText:

テキストビューによって表示されるスタイル付きテキスト。

@property(nonatomic,copy) NSAttributedString *attributedText

説明:このプロパティはデフォルトではnilです。このプロパティに新しい値を割り当てると、フォーマット情報がなくても、textプロパティの値が同じ文字列データに置き換えられます。さらに、新しい値を割り当てると、font、textColor、およびtextAlignmentプロパティの値が更新され、属性付き文字列の位置0から始まるスタイル情報が反映されます。

于 2012-10-28T21:56:15.497 に答える
8

CoreTextを含める必要がない場合は、次の属性を持つ属性付き文字列を利用できます。

@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}
于 2014-04-24T02:05:20.657 に答える
8

これが静的テキストの場合は、InterfaceBuilderで下線を引くことができます。ドロップダウンメニューで[属性付き]を選択して、最初に[属性付き]というテキストを作成してください。

ここに画像の説明を入力してください

于 2014-07-29T20:24:44.973 に答える
2
textViewMessage.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor], NSUnderlineStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]};
于 2015-06-01T12:56:06.813 に答える
1

テキストをフォーマットしたい場合(下線付きの単語、リンク、色付きの単語など)、FTCoreTextを使用することをお勧めします

于 2012-10-28T21:21:50.060 に答える
1
-(IBAction)underline:(id)sender
{
    NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
    texts.attributedText = [[NSAttributedString alloc] initWithString:texts.text
                                                           attributes:underlineAttribute];
}
于 2014-09-30T10:54:42.230 に答える
1

「kCTUnderlineStyleAttributeName」または「kCTUnderlineStyleSingle」は使用できません。次のようにする必要があります。

    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Text"];
[attString addAttribute:NSUnderlineStyleAttributeName
                  value:@(NSUnderlineStyleSingle)
                  range:(NSRange){0,[attString length]}];
于 2017-06-02T12:40:26.653 に答える
0

MFUnderlinedTextViewを使用することをお勧めします。これは役に立ちます。

于 2012-11-26T07:25:07.347 に答える
0

iOS 6を使用している場合は、 UITextViewattributedTextの属性を使用できます。テキストにアンダースコアの書式を適用します。必要に応じて、ユーザーが入力するテキストに特定の書式設定が含まれるようにプロパティを設定することもできます。typingAttributes

于 2012-10-28T21:03:03.237 に答える
0

CoreTextを使用することをお勧めします。基本的なチュートリアルは、raywenderlichにあります。

于 2012-10-29T09:13:19.093 に答える
0

これは私がSwift5を使用してそれを行った方法です:

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
于 2019-12-02T17:17:59.280 に答える
0

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()
  }

結果の画像

于 2020-03-06T23:30:11.547 に答える
0
       let someString = NSMutableAttributedString(string: "Your String", attributes: [NSAttributedString.Key.font : UIFont.boldSystemFont(ofSize: 20), NSAttributedString.Key.underlineStyle : NSUnderlineStyle.single.rawValue])
        someStringTextView.attributedText = titleAT
       

Uは、文字列に太字、下線などの一連の属性を与えることができます。

于 2022-02-04T16:45:44.230 に答える
-3

テキストに下線を引くには、コピー、切り取り、削除のオプションを選択できる場所に移動する必要があります。B/ I / U(太字、斜体、下線)などのオプションが追加されました。このオプションを選択すると、これで終わりです。それができない場合は、下線オプションをもう一度選択してください。

于 2013-03-23T13:43:20.377 に答える