NSAttributedString写作方向

sqd*_*jan 6 nsattributedstring right-to-left ios

我试图改变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;
Run Code Online (Sandbox Code Playgroud)

这是我初始化我的NSAttributedString的代码,我已经阅读了关于常量kCTWritingDirectionRightToLeft的内容,我觉得我必须把它放在某处,但我可以弄清楚在哪里和如何.

有人有什么建议吗?

Lar*_*rme 6

我仔细阅读了这份文件.

我会使用NSFontAttributeName,NSWritingDirectionAttributeName因为我比使用所有的bridge东西更容易使用,还有简写语法.

所以NSWritingDirectionAttributeName等待一个NSArrayNSNumbers.那就是问题所在.其中一个数字必须是NSWritingDirection(LeftToRightRightToLeft),另一个是NSTextWritingDirection(嵌入覆盖).

所以,可能的组合是(我认为你正在寻找第四个):

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)]};
Run Code Online (Sandbox Code Playgroud)

来源:文件 NSWritingDirectionAttributeName