Моноширинные шестнадцатеричные значения iOS

Мне нравится шрифт Сан-Франциско. И хотел бы использовать его, если это возможно. У меня есть табличное представление, которое показывает серию меток, где каждая метка представляет собой 6 шестнадцатеричных цифр, например.

F0:1A:2B
12:CE:88

Проблема в том, что они плохо сочетаются. Я могу включить атрибут моноширинных цифр для шрифта, но это не учитывает символы ABCDEF. Я попробовал моноширинный шрифт (Menlo), и он выглядит ужасно и неуместно.

Я играюсь с созданием 8 маленьких меток, по одной для каждого символа (6 шестнадцатеричных цифр плюс два разделителя :), что кажется огромным хламом. Неужели нет другого пути. Мне было интересно, есть ли способ сделать что-то с AttributedString, чтобы шестнадцатеричные цифры были одинаковой ширины?


person Travis Griggs    schedule 19.04.2018    source источник
comment
См. stackoverflow.com /вопросы/38560422/   -  person Guy Kogus    schedule 19.04.2018
comment
@GuyKogus, вы имеете в виду решение для кернинга? Непонятно, как вы применяете кернинг? Нужно ли мне вычислять уникальное значение для каждого из ABCDEF? (и пусть моноширинные цифры позаботятся об остальных?)   -  person Travis Griggs    schedule 19.04.2018
comment
Извините, нет, я имел в виду ответ от @Warpling, который показывает, как заставить шрифт работать как моноширинный.   -  person Guy Kogus    schedule 19.04.2018
comment
Да, это только цифры, а не буквы AF, к сожалению.   -  person Travis Griggs    schedule 19.04.2018
comment
А, тогда у @aaron-bratcher есть правильный ответ.   -  person Guy Kogus    schedule 19.04.2018


Ответы (2)


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

person Aaron Bratcher    schedule 19.04.2018

Для полноты картины я должен опубликовать то, что я сделал после того, как принял то, что подтвердил @AaronBratcher.

Сначала я создал 5 отдельных UILabels для следующих элементов:

leftTwoDigits-leftSeparator-centerTwoDigits-rightSeparator-rightTwoDigits

Я использовал ограничения, чтобы ограничить все их базовые линии и установить 0 горизонтальных интервалов между каждым. Метки-разделители были установлены просто на : и обычного цвета. Меткам xxxTwoDigits была присвоена строка AA. A НЕ является самым широким символом, C is. Но A рядом. C слишком широкий, а A достаточно широкий. Цвет этих меток был установлен на clear, поэтому на самом деле они не отображаются.

Затем добавляются еще 6 UILabels. Опять те же исходные данные. Первые два ограничены передней и задней сторонами leftTwoDigits и ограничены по ширине. Повторите для остальных 4 ячеек. Сделать все по центру. И заполните их индивидуально отдельными цифрами.

person Travis Griggs    schedule 23.04.2018