web-dev-qa-db-ja.com

UILabelのテキストの一部を切り捨てる

私の要件は、テキストの長さが1行に収まらないほど長い場合は、最後の数文字のみ(通常、数値b/w 1〜1000なので、テキストの長さは異なる場合があります。)が表示され、「...」で切り捨てられる前のテキスト。

したがって、テキストは「abcdefgijk ... 10」のようになります。

これを達成する方法はありますか?

15
user2990765
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;

このラベルをディスプレイに追加します。あなたはこのような出力を得るはずです

abcdefghijklmnopq...10
14
Srinivasan N

より最近の解決策を探しているすべての人にとって、Swift 3:

yourLabel.lineBreakMode = .byTruncatingMiddle;
5
Melanie Journe

Swift 4:

私のように誰かがこの問題に遭遇した場合、

label.numberOfLines = 1を設定する必要があります

0に設定すると、スペースで切り捨てられます。

コードは次のようになります

    label.numberOfLines = 1
    label.lineBreakMode = .byTruncatingTail
    label.adjustsFontSizeToFitWidth = false
4
ricks

これを試して:

 label.lineBreakMode = NSLineBreakByTruncatingMiddle;

UILineBreakModeMiddleTruncationはiOS 6.0で廃止されました。

2
Krishna Kumar

XIBファイルを使用する場合。

select-> UILableとselect-> Attribute inspector tag and change into Line Breaks-> Truncate tail

単に文字を切り捨てる方法...

0
jeyachandran

これを使用する方法は、NSLineBreakByTruncatingMiddleです。

UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";

出力:Hello...s997

0
Balram Tiwari

ストーリーボード内

  1. 文字を切り捨てるラベルを選択します。

  2. 属性インスペクタを選択します。

  3. [ラベル属性]の下。あなたは見つけることができます改行

enter image description here

できました。

0
iSrinivasan27

nSStringクラスには-lengthを使用する多くのメソッドがあり、次にこれらのいずれかを使用します

– substringFromIndex:
– substringWithRange:
– substringToIndex:

nSString stringwithFormatを使用して一時的な文字列を作成し、substringToインデックスと "....."から取得する必要な文字を入力してから、substringFromIndexによって文字列から数値を入力します。

お役に立てれば

0
Waseem05

最初に、行に配置できる文字の長さを見つけることができます。たとえば、「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];
0
mak

UILabelにはさまざまな改行モードがあります。

頭を切り捨て、中央を切り捨て、尾を切り捨て

Xibでは、必要に応じて改行モードを設定できます

0
Ome