Как узнает любой, кто озадачился этим, метод имеет неправильное название и довольно несовместим с тем, что вы ожидаете (это нарушение хорошего дизайна API, но, как знает любой опытный разработчик: API Apple не очень хорошо разработан, извините ребята). Стоит прочитать: Презентация Джоша Блоха о хорошем API-дизайне.
Я бы сказал, что они должны переименовать его (если это необходимо сохранить) и сделать его полезным, чтобы вы не использовали обычную практику передачи CGSize
с размером, который, как вы знаете, слишком большой.
[someString sizeWithFont:yourFont
constrainedToSize:CGSizeMake(maxWidthYouSpecify, self.frame.size.height)
lineBreakMode:UILineBreakModeWordWrap];
С другой стороны, это будет работать так же хорошо:
[someString sizeWithFont:yourFont
constrainedToSize:CGSizeMake(maxWidthYouSpecify, CGFLOAT_MAX)
lineBreakMode:UILineBreakModeWordWrap];
Возможно, именно так должна работать функция. (FWIW, CGFLOAT_MAX
определяется в CGGeometry )
В сторону, но довольно важно: вся Core Graphics работает в точках, а не в пикселях.
Одна точка не обязательно соответствует одному пикселю на экране.
Это важное различие, которое необходимо понимать при работе с различными разрешениями (iPhone 3GS против 4 против iPad и т. Д.). См. документы Apple и Command + F для "Точки против пикселей".