7

私はUILabelで働いていました。ただし、setLineBreakMode は非推奨です。私は NSAttributedString を使用しています。しかし、UILabel setLineBreakMode はその後、UILabel setNumberOfLines は機能しません。

前:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.text = @"XXXXXX";
memoLabel.textAlignment = UITextAlignmentLeft;
memoLabel.numberOfLines = 2;
memoLabel.lineBreakMode = UILineBreakModeTailTruncation;
memoLabel.font = [UIFont systemFontOfSize:11];
memoLabel.backgroundColor = [UIColor clearColor];

IOS 6 以降:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
NSAttributedString *string
    = [[NSAttributedString alloc] initWithString:text
                                  attributes:[NSDictionary
                                              dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:11],
                                              NSFontAttributeName,
                                              paragraphStyle, NSParagraphStyleAttributeName,nil]];
[paragraphStyle release];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.attributedText = string;
[string relase];

ディスプレイの前後で同じでいたい。複数行を表示するには?

4

2 に答える 2

4

このlineBreakModeプロパティはiOS6で非推奨ではありません。これは、定数の名前を変更しただけです。古い定数は廃止されましたが、引き続き使用できます。定数は単なる列挙値であるため、古いiOSにデプロイしている場合でも、新しい定数を使用できます。古い名前と新しい名前の値は同じです。だから、設定するだけですmemoLabel.lineBreakMode = NSLineBreakByTruncatingTail

サンプルコードは、属性付きの文字列固有の機能を利用していないようです。属性付きの文字列が必要ない場合は、プレーンな文字列を使用し続けてください。それはiOS6でも機能します。

于 2012-11-03T07:26:27.093 に答える
2

NSLineBreakByTruncatingTailの代わりに使用UILineBreakModeTailTruncation

于 2012-12-30T20:40:30.777 に答える