iOS - Получить "реальную" высоту буквы
Я пытаюсь расположить текст в UIView.
(Желтая область - это рамка UILabel с цветом фона).
Когда я использую sizeWithFont, я получаю это, которое имеет очень большое пространство над буквой:
Когда я использую font.pointSize
я получаю это за "я", что хорошо-
НО, когда я использую его для "р", я получаю точную высоту, но буква нарисована внизу и обрезана.
** Как я могу получить глиф только по центру кадра? **
Спасибо
Шани
3 ответа
Есть много свойств на UIFont
чтобы помочь в этой ситуации:
pointSize
ascender
descender
capHeight
xHeight
lineHeight
Вы могли бы преобразовать UILabel
к UIImage
с помощью функции "printscreen", а затем проверяйте пиксели один за другим (например, с помощью: Как получить данные пикселей из UIImage (Cocoa Touch) или CGImage (Core Graphics)?) и "вычислить" левую верхнюю правый нижний
Попробуйте переместить текст вверх с помощью font.ascender - font.capHeight. Уменьшение высоты UILabel, скорее всего, обрезает его содержимое, поэтому лучше изменить положение метки y, а не изменять его размер.
Следующий пример кода объясняет вычисление, которое я использовал:
// in UILabel subclass:
- (CGFloat) topPadding
{
// ascender = height from baseline to top of label (including top padding)
// capHeight = height of a capital letter = ascender - top padding
// -> top padding = ascender - capHeight
return self.font.ascender - self.font.capHeight;
}