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 ответа:
Обновление и исправление, которое работает для меня, но все еще очень странно. Если кто-то еще столкнулся с этой непонятной проблемой, я обнаружил, что использование именованного шрифта вместо системного шрифта, кажется, исправляет ее.
В iOS9 убрали возможность раскрашивать тяжелую галочку и для нестандартных шрифтов. Это связано с тем, что
U+2714 HEAVY CHECK MARK
входит в набор символов emoji Apple, и он будет нарисован в виде полноцветного растрового изображения вместо одноцветного символа unicode.Чтобы предотвратить это, вы можете использовать символ
U+FE0E VARIATION SELECTOR-15
. Если вы измените строку на@"\u2714\uFE0E"
, Вы сможете ее раскрасить.isChecked.text = @"\u2714\uFE0E"; isChecked.textColor = [UIColor redColor];