sizeWithFont
メソッドですNSString
(UIKitの追加)。使用する:
CGSize userInputSize = [userLabel.text sizeWithFont:[UIFont fontWithName:@"Arial" size:18.0f] constrainedToSize:[tableView frame].size lineBreakMode:NSLineBreakByWordWrapping];
また
CGSize userInputSize = [userLabel.text sizeWithFont:userLabel.font constrainedToSize:[tableView frame].size lineBreakMode:NSLineBreakByWordWrapping];
NSString UIKit 追加リファレンスを参照してください。
編集:
私はちょうどこのコードを試しました:
NSLog (@"test: %@", NSStringFromCGSize([@"test" sizeWithFont:[UIFont fontWithName:@"Arial" size:18.0f]]));
NSLog (@"longer test: %@", NSStringFromCGSize([@"longer test" sizeWithFont:[UIFont fontWithName:@"Arial" size:18.0f]]));
結果は次のとおりです。
test: {30, 22}
longer test: {85, 22}
CGSize
はstruct
:
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
したがって、おそらくsize.height
代わりに見ているsize.width
EDIT2:
ドキュメントからsizeWithFont:forWidth:lineBreakMode:
文字列のサイズが指定された幅を超える場合、このメソッドは、指定された改行モードを使用して、最大幅に収まるまでテキストを切り捨てます (レイアウト目的のみ)。次に、結果の切り捨てられた文字列のサイズを返します。
width
したがって、最大サイズ ( realおよび big height
)を定義して、次のようにする方がよいでしょう。
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
この回答をご覧ください。