IOS 5.1 UILabel с символом Heavy Check Mark игнорирует TextColor - PullRequest
3 голосов
/ 13 марта 2012

Я разрабатывал приложение для iOS и недавно "обновил" до xCode 4.3.1 и симулятора iOS 5.1, и у меня возникла очень странная проблема с одним персонажем. Он называется «Тяжелая галочка» в средстве просмотра символов, он отлично смотрится в моем приложении в 5.0.1 и ниже и окрашен с помощью .textColor = [UIColor redColor]. В 5.1 он показывает черный цвет в симуляторе, и, поскольку мой телефон взломан, я не проверял его в 5.1 на реальном устройстве. Если я добавлю любой другой символ, он будет красным, но этот конкретный символ всегда будет черным. Если я поставлю перед ним пробел, он будет красным, но интервал отключен, так как я использую слой для границы. Ниже приведен актуальный код, но я попробовал более простой ярлык и имею ту же проблему.

        isChecked = [[[UILabel alloc] initWithFrame:CGRectMake(20.0,9.0,20,20)] autorelease];
        isChecked.font = [UIFont boldSystemFontOfSize:24.0];
        isChecked.backgroundColor = [UIColor clearColor];
        isChecked.textColor = [UIColor redColor];
        isChecked.layer.borderColor = [UIColor blackColor].CGColor;
        isChecked.layer.borderWidth = 2.0;
        isChecked.text = @"✔";
        isChecked.tag = 2;
        [cell.contentView addSubview:isChecked];

Кто-нибудь еще испытывает проблемы с этим или другими специальными символами и UILabel.textColor? Любые предлагаемые обходные пути? Я попытался временно удалить слой и даже создать новую минимальную метку и получить те же результаты черного цвета, если только этот символ, и красного цвета, как установлено, если есть другие.

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Обновление и исправление, которые работают для меня, но все еще очень странно. Если кто-то столкнулся с этой неясной проблемой, я обнаружил, что использование именного шрифта вместо системного шрифта, кажется, исправляет это.

0 голосов
/ 05 мая 2017

В iOS9 убрана возможность закрасить жирную галочку и для нестандартных шрифтов. Это связано с тем, что U+2714 HEAVY CHECK MARK включено в набор символов смайликов Apple и будет отображаться как полноцветное растровое изображение вместо одноцветного символа юникода.

Чтобы предотвратить это, вы можете использовать символ U+FE0E VARIATION SELECTOR-15. Если вы измените строку на @"\u2714\uFE0E", вы сможете закрасить ее.

isChecked.text = @"\u2714\uFE0E";
isChecked.textColor = [UIColor redColor];
...