ios - NSAttributedString:不应用下划线

标签 ios nsattributedstring underline

我正在尝试为 UITextView 添加下划线样式,但未应用。如果我使用“阴影”(取消注释阴影样式和注释下划线样式)我可以看到它,但由于某种原因没有应用下划线。我使用“Courier New”字体。

- (void) addDiagHighlighting: (NSMutableAttributedString*)attrString start:(int)start end:(int)end severity:(int)severity {
    // ignore diags that are out of bounds
    if (start > attrString.length || end > attrString.length)
        return;

    NSRange range = NSMakeRange(start, end - start);
    UIColor *diagColor = [self getSeverityColor: severity];

    // shadow
//    NSShadow *shadow = [[NSShadow alloc] init];
//    [shadow setShadowColor: diagColor];
//    [shadow setShadowOffset: CGSizeMake (1.0, 1.0)];
//    [shadow setShadowBlurRadius: 1.0];
//    [attrString addAttribute:NSShadowAttributeName
//                       value:shadow
//                       range:range];

    // underline
    [attrString addAttributes:@{
                                NSUnderlineColorAttributeName : diagColor, // color
                                NSUnderlineStyleAttributeName : @(NSUnderlinePatternSolid) // style
                                }
                       range:range];
}

我可以更改添加属性以同时添加阴影和下划线,我可以看到阴影但仍然没有下划线:

// shadow + underline
[attrString addAttributes:@{
                            NSShadowAttributeName : shadow, // shadow
                            NSUnderlineColorAttributeName : diagColor, // color
                            NSUnderlineStyleAttributeName : @(NSUnderlinePatternSolid) // style
                            }
                   range:range];

最佳答案

您需要将 NSUnderlinePatternNSUnderlineStyle 进行或运算才能使其正常工作 ( see Apple documentation here )

试试这个:

[attrString addAttributes:@{
                        NSShadowAttributeName : shadow, // shadow
                        NSUnderlineColorAttributeName : diagColor, // color
                        NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) // style
                        }
               range:range];

或者用点...

[attrString addAttributes:@{
                        NSShadowAttributeName : shadow, // shadow
                        NSUnderlineColorAttributeName : diagColor, // color
                        NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternDot) // style
                        }
               range:range];

关于ios - NSAttributedString:不应用下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26646205/

相关文章:

html - swift:转换为 NSAttributed 字符串的 HTML 数据不会使标签中的链接可点击

ios - 将 CLLocationCoordinate2D 数组保存到核心数据?

ios - 在 Swift 中使用泛型无法将“对象”转换为 'T'

swift - 设置前景色仅对 NSAttributedString 有效一次

ios - Xcode 9 中的 Swift 4 - 如何在 NSAttributedstring 中使用 boundingrect?

css - 从 :after content 删除文本装饰下划线

javascript - 单击然后悬停后如何在链接上加下划线

css - 在输入占位符中为单个字母下划线

ios - How to subclass a renamed class?/'MKPinAnnotationView' was deprecated in iOS 15.0 : renamed to 'MKMarkerAnnotationView‘

ios - 如何从 iOS 中的 UIVIew 选择文本范围?