43

OHAttributedLabel 内のいくつかの単語をリンクにしたいのですが、それらを青以外の色にしたいので、下線を付けたくありません。

これにより、下線付きのテキストが付いた青いリンクが表示されます。

 -(void)createLinkFromWord:(NSString*)word withColor:(UIColor*)color atRange:(NSRange)range{

    NSMutableAttributedString* mutableAttributedText = [self.label.attributedText mutableCopy];   

    [mutableAttributedText beginEditing];
    [mutableAttributedText addAttribute:kOHLinkAttributeName
                   value:[NSURL URLWithString:@"http://www.somewhere.net"]
                   range:range];

    [mutableAttributedText addAttribute:(id)kCTForegroundColorAttributeName
                   value:color
                   range:range];

    [mutableAttributedText addAttribute:(id)kCTUnderlineStyleAttributeName
                   value:[NSNumber numberWithInt:kCTUnderlineStyleNone]
                   range:range];
    [mutableAttributedText endEditing];


    self.label.attributedText = mutableAttributedText;

}

私はOHAttributedLabelを使用しているので、NSAttributedString+Attributes.hそのカテゴリのメソッドも使用しようとしましたが、それらは青い下線付きのリンクも返します:

-(void)createLinkFromWord:(NSString*)word withColor:(UIColor*)color atRange:(NSRange)range{

NSMutableAttributedString* mutableAttributedText = [self.label.attributedText mutableCopy];

[mutableAttributedText setLink:[NSURL URLWithString:@"http://www.somewhere.net"] range:range];
[mutableAttributedText setTextColor:color range:range];
[mutableAttributedText setTextUnderlineStyle:kCTUnderlineStyleNone range:range];

self.label.attributedText = mutableAttributedText;
}

各バージョンのリンクを設定する行をコメントアウトすると、テキストは渡されたものに色付けされます-それは機能します。リンクを設定すると、これが上書きされて青に戻るようです。

残念ながら、私が見つけたアップルのドキュメントページには、リンクテキストを青に設定して下線を引く方法が示されてい ます.タスク/ChangingAttrStrings.html

4

11 に答える 11

62

だから私は TTTAttributedLabel を使用することになりました:

-(void)createLinkFromWord:(NSString*)word withColor:(UIColor*)color atRange:(NSRange)range{
    NSMutableAttributedString* newTextWithLinks = [self.label.attributedText mutableCopy];
    NSURL *url = [NSURL URLWithString:@"http://www.reddit.com"];
    self.label.linkAttributes = @{NSForegroundColorAttributeName: color, 
                                   NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)};
    [self.label addLinkToURL:url withRange:range];
}

OHAttributedLabelリンクを設定し、それらのリンクの色と下線のスタイルを宣言するメソッドが実際にあることがわかりました。ただし、パラメーターに基づいてリンクを異なる色にしたかったのです。作成する各リンクのプロパティをTTTAttributedLabel設定できるようにすることで、これが可能になります。linkAttributes

于 2013-03-19T04:53:38.213 に答える
13

を使用している場合はUITextViewtintColorプロパティを変更してリンクの色を変更する必要がある場合があります。

于 2015-05-07T06:52:46.153 に答える
4

Swift 2.3 の例TTTAttributedLabel:

yourLabel.linkAttributes       = [
    NSForegroundColorAttributeName: UIColor.grayColor(),
    NSUnderlineStyleAttributeName: NSNumber(bool: true)
]
yourLabel.activeLinkAttributes = [
    NSForegroundColorAttributeName: UIColor.grayColor().colorWithAlphaComponent(0.8),
    NSUnderlineStyleAttributeName: NSNumber(bool: false)
]

スイフト4

yourLabel.linkAttributes = [
    .foregroundColor: UIColor.grayColor(),
    .underlineStyle: NSNumber(value: true)
]
yourLabel.activeLinkAttributes = [
    .foregroundColor: UIColor.grayColor().withAlphaComponent(0.7),
    .underlineStyle: NSNumber(value: false)
]
于 2016-10-05T15:03:10.777 に答える
0

Swift 3 の例TTTAttributedLabel:

yourLabel.linkAttributes = [
    NSForegroundColorAttributeName: UIColor.green,  
    NSUnderlineStyleAttributeName: NSNumber(value: NSUnderlineStyle.styleNone.rawValue)
]
yourLabel.activeLinkAttributes = [
    NSForegroundColorAttributeName: UIColor.green,  
    NSUnderlineStyleAttributeName: NSNumber(value: NSUnderlineStyle.styleDouble.rawValue)
]
于 2016-12-23T11:38:59.077 に答える
-1

スウィフト 4.0 :

短くてシンプル

 let LinkAttributes = NSMutableDictionary(dictionary: testLink.linkAttributes)
 LinkAttributes[NSAttributedStringKey.underlineStyle] =  NSNumber(value: false)
 LinkAttributes[NSAttributedStringKey.foregroundColor] = UIColor.black // Whatever your label color
 testLink.linkAttributes = LinkAttributes as NSDictionary as! [AnyHashable: Any]
于 2019-01-19T09:49:23.570 に答える