NSAttributedString书写方向
我正在尝试更改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的代码,我已经读了关于常量kCTWritingDirectionRightToLeft ,我觉得我必须把它放在什么地方,但我可以找出在哪里和如何。
任何人有任何build议?
我更仔细地阅读文档。
我将使用NSFontAttributeName
和NSWritingDirectionAttributeName
因为我比他们更舒适,比使用所有bridge
东西,也简短的语法。
所以NSWritingDirectionAttributeName
等待一个NSWritingDirectionAttributeName
的NSArray
。 这是问题。 其中一个数字必须是NSWritingDirection ( LeftToRight或RightToLeft ),另一个是NSTextWritingDirection ( embedded或覆盖 )。
所以,可能的组合是(我想你正在寻找第四个):
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
文档