IOS 7 sizeWithFont устарел
Я не могу заменить устаревший sizeWithFont
с boundingRecWithSize
правильно. Я просмотрел все ответы и не спал всю ночь, пытаясь это исправить. Мне действительно нужна помощь кого-то, кто умнее меня. Вот код, который я пытаюсь изменить. Любая помощь будет оценена.
CGSize sizeForText = [faqItem.answer sizeWithFont:[UIFont boldSystemFontOfSize:14]
constrainedToSize:CGSizeMake(self.tblView.bounds.size.width - padding, MAXFLOAT)
lineBreakMode:NSLineBreakByWordWrapping];
[sectionInfo insertObject:[NSNumber numberWithFloat:roundf(sizeForText.height + 5)]
inRowHeightsAtIndex:0];
3 ответа
В яблочной документации:
sizeWithFont: возвращает размер строки, если она должна быть отображена с указанным шрифтом в одной строке. (Устаревшее в iOS 7.0. Вместо этого используйте sizeWithAttributes:)
- (CGSize) sizeWithFont: (UIFont *) шрифт Параметры шрифт Шрифт, используемый для вычисления размера строки. Возвращаемое значение Ширина и высота ограничительной рамки результирующей строки. Эти значения могут быть округлены до ближайшего целого числа.
Так что вы можете использовать sizeWithAttributes: вот так:
CGSize sizeForText = [faqItem.answer sizeWithAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:14]}
constrainedToSize:CGSizeMake(self.tblView.bounds.size.width - padding, MAXFLOAT)
lineBreakMode:NSLineBreakByWordWrapping];
[sectionInfo insertObject:[NSNumber numberWithFloat:roundf(sizeForText.height + 5)]
inRowHeightsAtIndex:0];
Вам необходимо использовать свойство sizeWithAttributes.
CGSize mysize = [string sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
Вы также можете установить для него уже созданный размер шрифта, чтобы уменьшить перекодирование, если вы используете размер более одного раза:
CGSize mysize = [string sizeWithAttributes:@{NSFontAttributeName: label1.font}];
Я не верю, что вы можете использовать constrainedToSize с этим свойством. Это должно быть отдельно установлено на CGRect.
Я написал образец для вас, надеюсь, это полезно.
NSString *text = @" // Do any additional setup after loading the view, typically from a nib.";
CGRect rect = CGRectZero;
NSDictionary *attrDict = @{NSFontAttributeName : [UIFont systemFontOfSize:17]};
rect = [text boundingRectWithSize:CGSizeMake(100,9999)
options:(NSStringDrawingUsesLineFragmentOrigin)
attributes:attrDict
context:Nil];
UILabel *lbl = [[UILabel alloc] init];
lbl.text = text;
rect.origin = CGPointMake(50, 200);
lbl.frame = rect;
lbl.lineBreakMode = NSLineBreakByWordWrapping;
lbl.numberOfLines = 0;
[self.view addSubview:lbl];
lbl.backgroundColor = [UIColor lightGrayColor];