4nt*_*ine 3 underline nsattributedstring ios
我正在尝试添加下划线样式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];
}
Run Code Online (Sandbox Code Playgroud)
我可以更改添加属性以添加阴影和下划线,我可以看到阴影,但仍然没有下划线:
// shadow + underline
[attrString addAttributes:@{
NSShadowAttributeName : shadow, // shadow
NSUnderlineColorAttributeName : diagColor, // color
NSUnderlineStyleAttributeName : @(NSUnderlinePatternSolid) // style
}
range:range];
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要或NSUnderlinePattern
有NSUnderlineStyle
得到它的工作(见苹果文档在这里)
试试这个:
[attrString addAttributes:@{
NSShadowAttributeName : shadow, // shadow
NSUnderlineColorAttributeName : diagColor, // color
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) // style
}
range:range];
Run Code Online (Sandbox Code Playgroud)
或点点......
[attrString addAttributes:@{
NSShadowAttributeName : shadow, // shadow
NSUnderlineColorAttributeName : diagColor, // color
NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternDot) // style
}
range:range];
Run Code Online (Sandbox Code Playgroud)
Apple 开发者文档说明了NSUnderlineStyle
:
样式,图案,和任选地通过字掩码逻辑或运算,以产生用于值
underlineStyle
和strikethroughStyle
。
因此,在 Swift 5 和 iOS 12.3 中,您可以使用按位 OR 运算符( |
) 为NSAttributedString.Key.underlineStyle
属性设置样式和模式。
以下 Playground 示例代码显示了如何为实例设置 NSUnderlineStyle.thick
和NSUnderlineStyle.patternDot
属性NSAttributedString
:
import UIKit
import PlaygroundSupport
let attributes = [NSAttributedString.Key.underlineStyle : (NSUnderlineStyle.thick.rawValue | NSUnderlineStyle.patternDot.rawValue)]
let attributedString = NSAttributedString(string: "Some text", attributes: attributes)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40))
label.backgroundColor = .white
label.attributedText = attributedString
PlaygroundPage.current.liveView = label
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2610 次 |
最近记录: |