获取UITextView的维度

时间:2011-03-09 19:49:13

标签: iphone objective-c cocoa-touch uitextview

如果放置在尺寸为200 x 460像素,字体Courier的UITextView中,我想确定某个文本字符串的尺寸(尤其是行数)。

我试着调用以下方法来获取一个我可以显示的整数。但是,它不起作用(xCode告诉我在初始化中我有不兼容的类型):

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

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

    NSString *temp2 = [[NSString alloc] initWithFormat:@"Size of string: %d", strSize];
    textViewSize.text = temp2;
    [temp2 release];

我是初学者,今天早些时候我发布了一个类似的问题,但我仍然无法弄清楚如何让CGSize工作并给我我需要的答案。任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

CGSize是一个结构。它包含两个浮点数,名为“height”和“width”。

CGSize strSize = [temp2String sizeWithFont:@"Courier" constrainedToSize:CGSizeMake(200, 10000)
                   lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"Height %f, width %f", strSize.height, strSize.width);

答案 1 :(得分:1)

CGSize是一个结构(来自CGGeometry.h):

struct CGSize {
  CGFloat width;
  CGFloat height;
};

因此,您需要做的就是获取它并显示您需要的任何维度;

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

按照你的例子(注意尺寸以浮点值给出):

NSString *temp2 = [[NSString alloc] initWithFormat:@"Width of string: %f", strSize.width];
textViewSize.text = temp2;
[temp2 release];