5

文字列が rect で描画された後、文字列がどのフレームになるかを知りたいです。

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

メソッドではdrawInRect:、特定の単語のフレームを取得したいと考えています。sample文字列からの四角形を知りたいとしましょうThis is a sample text.

これがサンプルUILabelです。赤いボックス内のテキストのフレームを知りたいです。ありがとう!

ここに画像の説明を入力

4

4 に答える 4

-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 に答える