NSAttributedString 写入方向

2023-11-20

我正在尝试更改 NSAttributedString 中的写入方向。然而,我真的很难弄清楚该怎么做。

CTFontRef fontRef = CTFontCreateWithName((CFStringRef)@"ArialRoundedMTBold", 16, NULL);

NSDictionary *attrDictionary = [NSDictionary dictionaryWithObjectsAndKeys:(__bridge id)fontRef,(NSString *)kCTFontAttributeName, nil];
CFRelease(fontRef);

NSAttributedString *attString=[[NSAttributedString alloc] initWithString:self.stringMap attributes:attrDictionary];

self.attString = attString;

这是我初始化 NSAttributedString 的代码,我已经阅读了有关该常量的信息kCTWritingDirection从右到左我觉得我必须把它放在某个地方,但我可以弄清楚在哪里以及如何放置。

有人有什么建议吗?


我更仔细地阅读了文档。

我会用NSFontAttributeName and NSWritingDirectionAttributeName因为我对它们比使用所有的更舒服bridge东西,还有简写语法。

So NSWritingDirectionAttributeName等待一个NSArrayNSNumbers。这就是问题所在。 这些数字之一必须是新南威尔士州写作方向 (左到右 or 右到左),另一个NSTextWritingDirection (嵌入 or Override).

因此,可能的组合是(我认为您正在寻找第四种组合):

NSDictionary *attrDictionary = @{NSFontAttributeName:font,
                                 NSWritingDirectionAttributeName:@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]};

NSDictionary *attrDictionary = @{NSFontAttributeName:font,
                                 NSWritingDirectionAttributeName:@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionEmbedding)]};

NSDictionary *attrDictionary = @{NSFontAttributeName:font,
                                 NSWritingDirectionAttributeName:@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionOverride)]};

NSDictionary *attrDictionary = @{NSFontAttributeName:font,
                                 NSWritingDirectionAttributeName:@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]};

资料来源:文档NSWritingDirectionAttributeName

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSAttributedString 写入方向 的相关文章

随机推荐