ManWithBear
@ManWithBear
Swift Adept, Prague

Почему UILabel плюет на форматирование?

Необходимо выровнять несколько строк в приложении.
Сам код:
subText = [NSString stringWithFormat:@"%3d%% - %@",subPercent,subfactor];
NSLog(@"%@",subText);
[label setText:subText];

В итоге в логах всё выровнено отлично, а в приложении можно наблюдать следующее:
57e87194da024595970fca04d173524c.png
Можно заметить, что проблема наблюдается при различном кол-ве цифр в числе.
Из-за чего это может происходить и как пофиксить?

UPD.
Лейблы создаются в storyboard, размеры и выравнивание одинаковые.
Всё это под iOS 7+
  • Вопрос задан
  • 2426 просмотров
Решения вопроса 1
@lostuser
Похоже проблема в "%3d%%".
Когда число двухзначное — добавляется пробел. Когда однозначное — два пробела.
Попробуйте сделать вывод числа с помощью %d

UPD. Ошибка была в том это рассчитано на моноширинные шрифты (в которых ширина всех символов, в т.ч. пробела, равны).
В вашем случае можно использовать два UILabel, слева для процентов, справа для остального. Или выбрать моноширинный шрифт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
martsen
@martsen
Программист-дроновод
Сначала доп.вопросы:
1) Под какую версию ОС идет разработка? 7+ ?
2) UILabel создаете из кода или на Storyboard?

Предлагаю для начала посмотреть у UILabel на свойство textAligment.

Оно задается параметрами из enum'a - NSTextAlignment

Вам нужно его либо проставить на Storyboard, либо прописать в коде (например, на viewDidLoad).
В редакторе выглядит так:
85195d9a47a54e49915e96102c7be16e.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы