2015-01-21 2 views
0

Я пытаюсь разместить два символа Unicode внутри UIAlectAction. У меня должно быть два круга, один пуст, а другой - один. Мой текущий код:Символы Unicode в NSString имеют неправильный размер

NSString *unicodeStar = [NSString stringWithFormat:@"%C %C", 0x25CB,0x25CF]; 


    UIAlertAction* star = [UIAlertAction 
           actionWithTitle:unicodeStar 
           style:UIAlertActionStyleDefault 
           handler:^(UIAlertAction * action) 
           { 

           [view dismissViewControllerAnimated:YES completion:nil]; 

           }]; 
    [view addAction:star]; 

Согласно Unicode Character Table это два символа должны иметь одинаковый размер, но фактический результат:

enter image description here

Все остальные окружности имеют одинаковую размерность. Что мне не хватает?

+3

Вероятно, шрифт. Попробуйте другой шрифт. BTW - нет необходимости в строках stringWithFormat и hex. Просто выполните: 'NSString * unicodeStar = @" ○ ● ";' – rmaddy

+0

пытаясь найти более крупный, но мне пока не повезло – Claus

+0

См. Мой обновленный ответ. Я нашел пару, которая соответствует. – rmaddy

ответ

2

Это шрифт, используемый видом предупреждения. Если вы используете средство просмотра персонажей в OS X, когда вы смотрите на символ «Белый круг», он отображает тот же символ во всех шрифтах на вашем компьютере, и вы можете видеть, что в зависимости от шрифта много разных размеров.

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

Update:

Вот два, которые выходят один и тот же размер:

NSString *unicodeStar = @"⚪︎ ⚫︎"; 

Открытый круг является "MEDIUM БЕЛЫЙ КРУГ" (U + 26аа U + FE0E) и заполненный кружком является «СРЕДНИЙ ЧЕРНЫЙ КРУГ» (U + 26AB U + FE0E).