文字列の長さが指定された UITextView に最適なサイズを与えるメソッドがあります(対応する正しいフォントサイズ):
- (NSInteger) heightOfLabel:(NSString*) string {
CGSize maximumLabelSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width - 40, FLT_MAX);
CGSize expectedLabelSize = [[NSString stringTrimmedForLeadingAndTrailingWhiteSpacesFromString:string]
sizeWithFont:[UIFont systemFontOfSize:15]
constrainedToSize:maximumLabelSize
lineBreakMode:NSLineBreakByWordWrapping];
return expectedLabelSize.height + 5;
}
実際、iOS7 でも完璧にフィットします。ただし、「sizeWithFont:contrainedToSize:lineBreakMode」を使用しないでくださいという警告メソッドが表示されます。
-boundingRectWithSize:options:attributes:context: を使用する必要があると表示されます。
このメソッドは iOS7 では新しいものではないため、公式の Apple 開発者フォーラムに行くのではなく、スタック オーバーフローについて質問しても問題ないと思います。
3 つの質問があります。
1) 推奨されていないため、まだ機能しているにもかかわらず、確実に置き換える必要があるということですか?
2)さまざまな変数を使用してさまざまなboundingRectWithSize:メソッドを試しましたが、完全ではありません。常にわずかに外れているようです(多くのstackoverflowの質問が指摘しているように)-この非推奨ではないメソッドを正確に実行する完全な代替品はありますか最小限の手間で以前の方法と同じですか?
3) なぜこのメソッドを削除するのですか? この別の方法との重複のためですか?