Я использую шрифты Georgia и Georgia-Bold в своем приложении. Поскольку он должен отображать много текстовых данных, загружаемых с сервера, я использую метод NSString sizeWithFont: constrainedToSize: lineBreakMode: широко в различных местах приложения. Проблема в том, что возвращаемые значения не совсем правильные, а буквы, такие как y, j и g, разрезаются снизу. Как вы можете видеть в этом образеNSString sizeWithFont возвращает неправильные значения шрифтом Georgia
все «J» 's в последней строке не помещаются на этикетке. Это известная ошибка sizeWithFont: constrainedToSize: lineBreakMode :? Что еще более важно, есть ли способ обойти это другое, чем всегда добавлять, то есть 2 пикселя к высоте метки?
Это линия, где я установил размер этикетки:
answerLabel.frame = CGRectMake(15, bottomOfRect(questionLabel.frame) + 10, frame.size.width - 45, [answer sizeWithFont:answerLabel.font constrainedToSize:CGSizeMake(frame.size.width - 45, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping].height);
Я дважды проверил, чтобы убедиться, что метка не внешние границы его надтаблицы.
Я нацеливание IOS 6 и 7.
Вы используете устаревший метод, если вы нацеливаетесь на iOS 7. Возможно, попробуйте новый? – Desdenova
Наиболее вероятная причина в том, что вы неправильно корректируете базовую линию, но она также может быть ошибкой в шрифте (да, шрифты могут иметь ошибки, или иногда они могут просто выходить за пределы своих ящиков и утверждать, что это функция) , Во-первых, вы можете объяснить, как вы выполняете шаг чертежа (я подозреваю, что ошибка там, особенно если вы делаете что-то вроде калибровки UILabel на основе этого значения). Но также проверьте, не возникает ли ошибка с другими семействами шрифтов. И, как намекают другие, дайте нам знать, нужен ли вам предварительный iOS7. –
Я обновил ответ с дополнительной информацией. И я не получил эту ошибку для других семейств шрифтов, которые я проверил. – johnyu