struct与NSString的问题

时间:2011-03-09 22:15:32

标签: iphone objective-c nsstring uitextview

另一个(希望很容易)初学者的问题:我试图测量UITextView的大小,但是我对以下代码有一个很大的编译器错误:

NSString *temp2String;
temp2String = [NSString stringWithFormat:@"%@",[textView text]];

CGSize strSize = [temp2String sizeWithFont:@"Courier" constrainedToSize:CGSizeMake(200, 10000)
                             lineBreakMode:UILineBreakModeWordWrap];

NSString *temp2 = [[NSString alloc] initWithFormat:@"String width: %f", strSize.width];
textViewSizeW.text = temp2;
[temp2 release];

错误是:不兼容的Objective-C类型'struct NSString *',在传递sizeWithFont的参数1时需要'struct UIFont *':constrainedToSize:lineBreakMode:'来自不同的Objective-C类型“。

我很害怕,但这听起来像是对我来说很糟糕。我搞砸了弦乐和结构吗?我试着这么小心不要把它们混在一起(我早些时候弄错了......看到我之前的帖子)。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

简单来说,错误是“X方法的参数1是一个NSString对象,期望一个UIFont对象”。

所以,正确的代码是:

UIFont *strFont = [UIFont fontWithName:@"Courier" size:12];
CGSize strSize = [temp2String sizeWithFont:strFont constrainedToSize:CGSizeMake(200, 10000)
                         lineBreakMode:UILineBreakModeWordWrap];

答案 1 :(得分:0)

您正在使用 NSString类型“Courier”的参数调用sizeWithFont:方法。您需要使用[UIFont fontWithName:@"CourierBlah" size:12.0实例化UIFont对象,并将 UIFont对象作为参数传递。

答案 2 :(得分:0)

goobledigook?很明显出了什么问题。

你传递了一个结构NSString(@“Courier”),但该方法需要一个struct UIFont。

我猜这仍然是textview问题。所以传递textview的字体。

CGSize strSize = [temp2String sizeWithFont:textView.font constrainedToSize:CGSizeMake(200, 10000)
                         lineBreakMode:UILineBreakModeWordWrap];