UILabel ни на iOS 5.1 с тяжелыми галочка персонаж игнорирует свойства textColor


Я разрабатываю приложение для 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.текстовый цвет? Есть какие-нибудь обходные пути? Я пробовал временно удалить слой и даже создать новую минимальную метку и те же результаты черный, если этот символ только и красный, как набор, если любой другой.

2 3

2 ответа:

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

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

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

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