С помощью этого следующего кода, вы можете изменить высоту вашего UITextView в зависимости от фиксированной ширины (он работает на прошивке 7 и предыдущую версию):
- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
UITextView *textView = [[UITextView alloc] init];
[textView setAttributedText:text];
CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
return size.height;
}
С помощью этой функции вы будете принимать NSAttributedString и фиксированную ширину, чтобы вернуть требуемую высоту.
Если вы хотите, чтобы вычислить кадр из текста с определенным шрифтом вам, нужно использовать следующий код:
- (CGSize)text:(NSString *)text sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
CGRect frame = [text boundingRectWithSize:size
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName:font}
context:nil];
return frame.size;
}
else
{
return [text sizeWithFont:font constrainedToSize:size];
}
}
Вы можете добавить, что SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
на файл prefix.pch в проекте как:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
Вы также можете заменить предыдущий тест SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)
по:
if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])
я могу только дайте его вам через 24 часа. будьте терпеливы, это ваше :) –
Возможно, вам следует ссылаться на ответы, на которые вы их взяли? http://stackoverflow.com/questions/18368567/uitableviewcell-with-uitextview-height-in-ios-7 – Anderscc
@ Джордан Монтель, для другого вопроса, если у меня фиксированная ширина и высота, как я могу найти лучший размер шрифта для назначенной строки? У меня аналогичная проблема на iOS7 (на iOS6, я могу это сделать) – Jacky