Вопрос по использованию CIAttributedTextImageGenerator рисует текст в iOS - PullRequest
0 голосов
/ 21 апреля 2020

Пример кода:

    NSAttributedString *text = [[NSAttributedString alloc] initWithString:@"Hello world" attributes:@{
        NSFontAttributeName:[UIFont systemFontOfSize:100],
        NSForegroundColorAttributeName:[UIColor redColor]
    }];
    CIFilter *textGenerator = [CIFilter filterWithName: @"CIAttributedTextImageGenerator"
                                           keysAndValues: @"inputText", text,nil];
    CIImage *image= [textGenerator valueForKey: @"outputImage"];

Когда я изменяю цвет текста для того же текста, например [UIColor blueColor], и снова фильтрую. Я получаю старую текстуру текста с помощью redColor.

И я нахожу, что, если не изменить текстовое содержимое на другое (получить правильную текстуру) или масштабировать текстуру (иметь неправильный переключатель отображения со старой и новой текстурой).

Это ошибка diff или функция CIAttributedTextImageGenerator ...?

Как я могу получить правильную текстуру ...?

Только можно использовать его как базовую c текстуру, а для рендеринга цвета использовать другой CIFilter?

Или есть другой способ быстрого рендеринга текста?

Спасибо !!!

Я пишу простой демонстрационный код, подобный следующему:

NSAttributedString *firstText = [[NSAttributedString alloc] initWithString:@"Hello world"
                                                           attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:100],
                                                                        NSForegroundColorAttributeName:[UIColor redColor]}];
CIFilter *textGenerator1 = [CIFilter filterWithName: @"CIAttributedTextImageGenerator"
                                     keysAndValues: @"inputText", firstText,nil];
CIImage *texture1= [textGenerator1 valueForKey: @"outputImage"];
self.firstImageView.image = [UIImage imageWithCIImage:texture1];

NSAttributedString *secondText = [[NSAttributedString alloc] initWithString:@"Hello world"
                                                           attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:100],
                                                                        NSForegroundColorAttributeName:[UIColor blueColor]}];
CIFilter *textGenerator2 = [CIFilter filterWithName: @"CIAttributedTextImageGenerator"
                                     keysAndValues: @"inputText", secondText,nil];
CIImage *texture2= [textGenerator2 valueForKey: @"outputImage"];
self.secondImageView.image = [UIImage imageWithCIImage:texture2];

Отображение результата: [https://i.stack.imgur.com/NABBu.png] [1]

...