私の要件は、テキストの長さが1行に収まらないほど長い場合は、最後の数文字のみ(通常、数値b/w 1〜1000なので、テキストの長さは異なる場合があります。)が表示され、「...」で切り捨てられる前のテキスト。
したがって、テキストは「abcdefgijk ... 10」のようになります。
これを達成する方法はありますか?
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
このラベルをディスプレイに追加します。あなたはこのような出力を得るはずです
abcdefghijklmnopq...10
より最近の解決策を探しているすべての人にとって、Swift 3:
yourLabel.lineBreakMode = .byTruncatingMiddle;
Swift 4:
私のように誰かがこの問題に遭遇した場合、
label.numberOfLines = 1
を設定する必要があります
0に設定すると、スペースで切り捨てられます。
コードは次のようになります
label.numberOfLines = 1
label.lineBreakMode = .byTruncatingTail
label.adjustsFontSizeToFitWidth = false
これを試して:
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
UILineBreakModeMiddleTruncation
はiOS 6.0で廃止されました。
XIBファイルを使用する場合。
select-> UILableとselect-> Attribute inspector tag and change into Line Breaks-> Truncate tail
単に文字を切り捨てる方法...
これを使用する方法は、NSLineBreakByTruncatingMiddle
です。
UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";
出力:Hello...s997
nSStringクラスには-lengthを使用する多くのメソッドがあり、次にこれらのいずれかを使用します
– substringFromIndex:
– substringWithRange:
– substringToIndex:
nSString stringwithFormatを使用して一時的な文字列を作成し、substringToインデックスと "....."から取得する必要な文字を入力してから、substringFromIndexによって文字列から数値を入力します。
お役に立てれば
最初に、行に配置できる文字の長さを見つけることができます。たとえば、「n」文字です。このリンクを利用して「n」を決定できます NSStringがUILabelに適合するかどうか、および適合する最後の文字列のインデックスを確認する方法 。次に、文字列の長さを見つけます。 nを超える場合は、最後の2文字を抽出します。例
NSString * fooString = @"a very long string";
NSString * s2 = [fooString substringWithRange:NSMakeRange([fooString length]-3, 2)];
NSString * s1 = [fooString substringWithRange:NSMakeRange(0 , n-5)];
NSString * newString = [NSString stringWithFormat:@"%@...%@",s1,s2];
UILabelにはさまざまな改行モードがあります。
頭を切り捨て、中央を切り捨て、尾を切り捨て
Xibでは、必要に応じて改行モードを設定できます