0

UILabel複数行でレンダリングしようとしています。私はもう試した:

    CGRect rect2 = CGRectMake(100, 45, 150, 60);
    FontLabel *addresLbl1 = [[FontLabel alloc] initWithFrame:rect2
                                                      fontName:@"arial" pointSize:12.0f];
    //#006000
    addresLbl1.textColor = [UIColor colorWithRed:84/255.0 green:84/255.0 blue:84/255.0 alpha:1.0];
    addresLbl1.text = @"401 King St\\nToronto, Ontario, M5V1K1\\nCanada"; 
    //[addresLbl1 setTextAlignment:UITextAlignmentCenter];
    addresLbl1.backgroundColor = nil;
    addresLbl1.opaque = NO;
    [cell.contentView addSubview:addresLbl1];
    [addresLbl1 release];

ただし、 401 King St \ nToronto、Ontario、M5V1K1\nCanadaとしてレンダリングされます。 このラベルはUITableViewのセルに追加されていることに注意してください。文字列の「\n」の位置から改行が必要です。この文字列はサーバーから取得されるため、「\n」の位置は異なる場合があります。

4

4 に答える 4

0

デフォルトでは、UILabelはそのプロパティnumberoflinesを1に設定します。これは、テキストが1行でレンダリングされることを意味します。ドキュメントに示されているように、そのプロパティを0に設定してみてください

このプロパティは、ラベルのテキストを境界の長方形に合わせるために使用する最大行数を制御します。このプロパティのデフォルト値は1です。最大制限を削除し、必要な数の行を使用するには、このプロパティの値を0に設定します。

このプロパティを使用してテキストを制約する場合、最大行数内およびラベルの境界矩形内に収まらないテキストは、適切な改行モードを使用して切り捨てられます。

sizeToFitメソッドを使用してレシーバーのサイズを変更する場合、サイズ変更では、このプロパティに格納されている値が考慮されます。たとえば、このプロパティが3に設定されている場合、sizeToFitメソッドは、3行のテキストを表示するのに十分な大きさになるようにレシーバーのサイズを変更します。

于 2012-10-19T11:57:28.470 に答える
0

複数行の場合、UILabelプロパティnumberOfLinesを次のように使用できます

label.numberOfLines = 3;

あなたの場合、テキストは1行にしか収まらないので、複数行にしたい場合は、3つの異なるラベルを定義する必要があります。

于 2012-10-19T11:58:51.307 に答える
0

最初にnumberOfLinesを0に設定してから、

unichar chr[1] = {'\n'};
NSString *singleCR = [NSString stringWithCharacters:(const unichar *)chr length:1];
[yourLabel setText:[NSString stringWithFormat:@"new%@line",singleCR]];

これはあなたが望むものを確実にします。

于 2012-10-19T12:05:48.827 に答える
0

二重の円記号は使用しないでください。

\\ is the code used for \, so \\n will be parsed and printed as \n

したがって、コードは次のようになります。

addresLbl1.text = @"401 King St\nToronto, Ontario, M5V1K1\nCanada";
addresLbl1.numberOfLines = 0;
于 2012-10-19T12:11:36.923 に答える