5

我想知道一个字符串在用矩形绘制后会处于什么框架。

NSString *string = @"This is a sample text.";
UILabel *label = [[UILabel alloc] init];
label.text = string;
// do some setups here

drawInRect:方法中,我想检索特定单词的框架。假设我想知道字符串的矩形sampleThis is a sample text.

这是一个示例UILabel,我想知道红色框中的文本框架。谢谢!

在此处输入图像描述

4

4 回答 4

0

您可以通过确定一个字符的特定像素来做到这一点

即假设字符“R”在 X 坐标中占用 8 个像素。像这样通过乘法8* number of characters in the label你可以得到框架

于 2013-06-13T08:48:03.267 回答
0
1]Create a CGRect.

 CountRect=CGRectMake(rect.origin.x,
                         rect.origin.y+22 + (rect.size.height - height)/2,
                         rect.size.width,
                         (rect.size.height - height)/2);

2]set NSString which contain string.(your case only contain sample)

  NSString* myNewString;

3]set NSString to CGRect.

  [myNewString drawInRect:CountRect 
withFont:fontlineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
  [myNewString drawInRect:CountRect withAttributes:attributes];
于 2017-09-13T11:59:42.120 回答
-1

你没有得到 UILabel 中特定单词的框架,你只得到 UILabel 框架,你把字符串分成单词,像这样

NSArray *stringArray = [originalString componentsSeparatedByString:@" "];

为每个 UILabel 添加 UILabel 和文本和框架

int x=0;
int y=0;

for(int i=0;i<stringArray.count;i++)
    {
        CGSize size =[[stringArray objectAtIndex:i] sizeWithFont:[UIFont fontWithName:@"ChaparralPro-Bold" size:fontSize ]];
        UILabel *label=[[UILabel alloc]init];
         if(x+size.width >320)
           {
             y=y+size.height;
             x=0;
           }
        label.frame = CGRectMake(x,y,size.width,size.height);
        x=x+size.width;
        label.text=[wordsArray objectAtIndex:i];
        label.textColor=UIColorFromRGB(0x3a5670);
        label.font=[UIFont fontWithName:@"ChaparralPro-Bold" size:fontSize];
        label.backgroundColor=[UIColor clearColor];
        [self.view addSubview:label];
        [label release];
}
于 2013-06-13T08:40:27.780 回答
-1

您可以使用函数获取字符串的大小:

- (CGSize)sizeWithFont:(UIFont *)font; 
CGSize wordSize = [@"sample" sizeWithFont:font];

您可以遍历所有单词和换行符并相应地获取每个单词的框架

于 2013-06-13T09:22:53.173 回答