Macos 附加NSAttributedString未按预期工作
我正在尝试附加属性字符串以生成和弦名称,如“G#m7”,其中#和7为上标。我是这样做的:Macos 附加NSAttributedString未按预期工作,macos,nsattributedstring,catextlayer,Macos,Nsattributedstring,Catextlayer,我正在尝试附加属性字符串以生成和弦名称,如“G#m7”,其中#和7为上标。我是这样做的: NSFont* font = [NSFont fontWithName:kGillSans size:24]; NSMutableDictionary* attributeNormal = [[NSMutableDictionary alloc] init]; [attributeNormal setObject:font forKey:NSFontAttributeName]; [attributeNor
NSFont* font = [NSFont fontWithName:kGillSans size:24];
NSMutableDictionary* attributeNormal = [[NSMutableDictionary alloc] init];
[attributeNormal setObject:font forKey:NSFontAttributeName];
[attributeNormal setObject:color forKey:NSForegroundColorAttributeName];
NSFont* fontSmall = [NSFont fontWithName:kGillSans size:14];
NSMutableDictionary* attributeSuperScript = [[NSMutableDictionary alloc] init];
[attributeSuperScript setObject:fontSmall forKey:NSFontAttributeName];
[attributeSuperScript setObject:[NSNumber numberWithInteger:5] forKey:NSSuperscriptAttributeName];
[attributeSuperScript setObject:color forKey:NSForegroundColorAttributeName];
NSAttributedString* pitch = [[NSAttributedString alloc] initWithString:@"G" attributes:attributeNormal];
NSAttributedString* accidental = [[NSAttributedString alloc] initWithString:@"#" attributes:attributeSuperScript];
NSAttributedString* quality = [[NSAttributedString alloc] initWithString:@"m" attributes:attributeNormal];
NSAttributedString* seventh = [[NSAttributedString alloc] initWithString:@"7" attributes:attributeSuperScript];
NSMutableAttributedString* fullString = [[NSMutableAttributedString alloc] initWithAttributedString:pitch];
[fullString appendAttributedString:accidental];
[fullString appendAttributedString:quality];
[fullString appendAttributedString:seventh];
然后,我将其添加到CATextLayer中进行显示。不幸的是,它没有按预期工作。上标不是上标,返回的[fullstring size]与上标不符,导致图层难以放置。我打开了边框宽度以演示大小问题
我已经为上标属性尝试了不同的字体大小和值。有什么想法吗 试试这个:
NSFont* font = [NSFont fontWithName:@"GillSans" size:24];
NSDictionary * attributeNormal = @{NSFontAttributeName: font,
NSForegroundColorAttributeName: [NSColor blackColor]};
NSFont* fontSmall = [NSFont fontWithName:@"GillSans" size:14];
NSDictionary * attributeSuperScript = @{NSFontAttributeName: fontSmall,
NSSuperscriptAttributeName: @(2),
NSForegroundColorAttributeName: [NSColor blackColor]};
NSMutableAttributedString* fullString =
[[NSMutableAttributedString alloc]
initWithAttributedString:[[NSAttributedString alloc]
initWithString:@"G"
attributes:attributeNormal]];
[fullString appendAttributedString:
[[NSAttributedString alloc] initWithString:@"#"
attributes:attributeSuperScript]];
[fullString appendAttributedString:
[[NSAttributedString alloc] initWithString:@"m"
attributes:attributeNormal]];
[fullString appendAttributedString:
[[NSAttributedString alloc] initWithString:@"7"
attributes:attributeSuperScript]];
仅供参考:我有一个NSAttributedString类别initWithArray:方法,它使用一个属性/字符串数组来初始化NSAttributedString:NSAttributedString*fullString=[[NSAttributedString alloc]initWithArray:@[attributeNormal,@“Welcome to”,attributeBold,@“GeoWorld”,attributeNormal,@“!(现在回家)”;如果您想要副本,请给我发消息。我已将其放在我的dropbox上:。嘿,谢谢,但这与我的代码没有任何区别,结果是相同的。结果看起来是通过[[myTextView textStorage]setAttributedString:fullString]查找的;。也许CATextLayer正在剥离/忽略这些属性?您使用什么方法设置字符串?