Направление написания 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, и я чувствую, что должен где-то ее вставить, но я могу понять, где и как.
У кого-нибудь есть предложения?
1 ответ
Я читаю внимательнее док.
Я буду использовать NSFontAttributeName
а также NSWritingDirectionAttributeName
так как мне удобнее с ними, чем использовать все bridge
материал, а также сокращенный синтаксис.
Так NSWritingDirectionAttributeName
ждет NSArray
из NSNumbers. Это была проблема. Один из этих номеров должен быть NSWritingDirection (LeftToRight или RightToLeft), а другой - NSTextWritingDirection (Embedding или 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