Я пытался расположить строку в вертикальном центре CGRect в моем методе drawRect: (CGRect).
CGRect имеет следующий размер:
CGRect rect = CGRectMake(0.0f, 0.0f, rectWidth, rectHeight);
Чтобы нарисоватьЯ бы попробовал это сначала:
CGFloat diffHeightRectAndFont = rectHeight - font.capHeight;
[str drawAtPoint:CGPointMake(0.0f, diffHeightRectAndFont * 0.5f) withFont:font];
Сначала я предположил, что найдет разницу в высоте между моим прямоугольником и шрифтом, затем смещение шрифта на половину этой высоты должно дать мне позицию в"sweet spot".
Однако capHeight находится в точках, а rectHeight в пикселях, поэтому это решение отчасти работает для шрифтов в диапазоне размеров 12-15.После этого различие начало позиционировать строку за пределами прямоугольника.
Я повторил это несколько раз, и единственным способом последовательного правильного позиционирования строки оказался «взлом», который действителен, но делаетНе удивляет читаемость кода:
CGFloat diffHeightRectAndFont = rectHeight - [[NSString stringWithString:@"F"] sizeWithFont:font].height;
Существует ли более прямой способ получения высоты пикселя заглавной буквы с использованием определенного шрифта?
Спасибо заранее :) 1020 *