让NSAttributedText UIKit添加工作

时间:2014-03-03 00:42:10

标签: ios ios7 nsstring nsattributedstring

请参阅下面的编辑#1,其中ISOLATES的问题比原始问题更好

我正在尝试让linkTextAttributes为UITextView工作,我对此感到非常沮丧 - 这可能是一个直接的Obj-C问题。我宁愿不去NSAttribtedString,但可能不得不这样做。我只是想删除链接上的下划线。这有效:

 textview.linkTextAttributes = @{NSForegroundColorAttributeName : [UIColor yellowColor]};

使其变黄但我需要取出底座。它看起来应该是这样的:

 textview.linkTextAttributes = @{NSForegroundColorAttributeName : [UIColor yellowColor],
    NSUnderlineStyleAttributeName: NSUnderlineStyleNone};

但是我得到了以下有些神秘的错误:

enter image description here

我试过了:

      textview.linkTextAttributes = @{
                                      NSForegroundColorAttributeName : [UIColor yellowColor],
                                      NSUnderlineStyleAttributeName: [NSNumber numberWithInt: NSUnderlineStyleNone]};

删除错误但不删除下划线。关于如何解决这个问题的任何想法?或者上面的语法是否正确?

编辑#1

所以我试图将问题更多地分解为一个新项目。这是来自主UIViewController的viewDidLoad;只是想删除下划线:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITextView *textview= [[UITextView alloc]initWithFrame:CGRectMake(50.0F, 50.0F , 200.0f, 100.0f)];
    [textview setValue:@"here is my thinking <a href='http://www.some.com'>me</a>" forKey:@"contentToHTMLString"];
    textview.layer.borderWidth = 5.0f;
    textview.layer.borderColor = [[UIColor grayColor] CGColor];
    textview.dataDetectorTypes = UIDataDetectorTypeLink;
    textview.linkTextAttributes = @{
                                    NSForegroundColorAttributeName : [UIColor blueColor],
                                    NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)};
    [self.view addSubview:textview];
}

和输出:

enter image description here

2 个答案:

答案 0 :(得分:0)

将其更改为:

textview.linkTextAttributes = @{
                                NSForegroundColorAttributeName : [UIColor yellowColor],
                                 NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)};

答案 1 :(得分:0)

希望其他人在Swift中尝试相同:

如果您在ADC网站中搜索“NSUnderlineStyleNone”或“NSUnderlineStyleSingle”,您将只能找到:

NSUnderlineStyleNone 不要画下划线。

在OS X v10.3及更高版本中可用。

:(

swift的快速补丁

var下划线:NSNumber = NSNumber(bool:false)// NSUnderlineStyleNone

OR

underline = NSNumber(bool:true)// NSUnderlineStyleSingle

然后以这种方式调用它:

    let font = ....fontOfSize(18)!
    let attrString1 = NSAttributedString(
        string: "www.apple.com",
        attributes: [ NSFontAttributeName: font
            , NSForegroundColorAttributeName: UIColor.whiteColor()
            , NSUnderlineStyleAttributeName: underline
        ]
    )