Как правильно выровнять текст на iOS 7

Я пытаюсь горизонтально выровнять текстовые биты с разными размерами и шрифтами.

Вот результат, который я хотел бы (сделанный с помощью scribus):

макет

Вы можете видеть, что текст идеально выровнен по горизонтали (к пикселю).

Я попытался реализовать это с помощью базового UITextView и обосновать текст. Вот что я получил:

оправданный

Вы можете видеть, что текст не выровнен по горизонтали с пикселем. Я попытался центрироваться, и это все еще не достаточно хорошо:

в центре

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

Я посмотрел на textkit, но не нашел ничего убедительного...

Мои выводы:

  1. найти лучший размер шрифта для текста с учетом ширины.
  2. Размещайте глифы равномерно, чтобы текстовый ограничивающий прямоугольник был равен желаемой ширине.

но я понятия не имею, как это сделать. Какие-либо ведет? Спасибо!

1 ответ

Вы пробовали NSString's boundingRectWithSize:options:attributes:context:?

CGRect rect = [string boundingRectWithSize:CGSizeMake(width, height) 
                                   options:NSStringDrawingUsesFontLeading 
                                attributes:attributes
                                   context:nil];

Если вы также поддерживаете iOS 6, используйте -[NSString sizeWithFont:constrainedToSize:lineBreakMode:]

CGSize textSize = [string sizeWithFont:uifont
                     constrainedToSize:maximumCGSize
                         lineBreakMode:lineBreakMode];

sizeWithFont:constrainedToSize:lineBreakMode: Начиная с iOS 7 этот метод устарел.

Используя один из этих методов, вы можете найти самую широкую линию и сопоставить ее с другими. В вашем случае с динамическим текстом я бы рекомендовал не использовать UITextView, чтобы гарантировать правильное выравнивание текста.

Другие вопросы по тегам