2013-03-15 5 views
5

UILabelに最初の500文字を表示し、500文字を超える文字がある場合は切り捨てアイコンを表示したいと思います。テキストを切り捨てますか?ここで UILabelを500文字に制限し、IOSlabelを切り捨てます

label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 350, self.bounds.size.width, 30)]; 
    // In this case value of self.bounds.size.width is "427" 

    label2.backgroundColor = [UIColor clearColor]; 
    label2.numberOfLines = 2; 
    label2.textAlignment = UITextAlignmentCenter; 
    label2.font = [UIFont systemFontOfSize:13]; 
    [self addSubview:label2] 

     //Here is Implimentation code of my label 

NSString *temp = [galleryEntryTree objectForKey:@"description"];// calling lebel text from database 
coverView.label2.text = temp; 
coverView.label2.adjustsFontSizeToFitWidth = NO; 
coverView.label2.lineBreakMode = UILineBreakModeTailTruncation; 

ただ、私が分500文字を表示することができますどのように男を伝え、すべてのヘルプは高く評価され

(より長い500があれば)

+0

coverView.label2.lineBreakMode = UILineBreakModeWordWrap;高さを調整するか、高さを動的に増やします。 –

+0

NSMutableStringを使用してテキストを切り捨てて、label.textを設定する前に – jcesarmobile

+0

yourLabel.text.lengthをifで使用し、stringbyappendingstringまたはstringwithformatを使用してください。 – amar

答えて

12

文字列が500文字を超える場合は、文字列を切り捨ててください。唯一の注意点:surrogate pairの真ん中にそれを壊さないようにしてください:

NSString *temp = [galleryEntryTree objectForKey:@"description"]; 
if ([temp length] > 500) { 
    NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 500}]; 
    temp = [temp substringWithRange:range]; 
    temp = [temp stringByAppendingString:@" …"]; 
} 
coverView.label2.text = temp; 
4

表示するには、それを切り捨てるよりも、私のコードです500文字しかコードを使用できません:

NSString *string = YOUR_TEXT; 
if ([string length] >500) { 
    string = [string substringToIndex:500]; 
} 

すべてベスト!

+2

サロゲートペアを解除しないで文字列を分割しないでください。 –

0

それは単に表示され、それを超えて、すべての文字が切り捨てられます

NSString *LabelNewText = [YourLabelName.text substringToIndex:500]; 
ここ

500または500未満の文字で行うことができます。

NSString * string = LabelNewText.text;

if ([string length] >500) 
{ 
    string = [string substringToIndex:500];          
} 
+1

テキストの長さが500未満の場合、これはクラッシュします。 –

+0

文字列の長さをNSString * string = LabelNewText.textで確認できます。 if([string length]> 500){ string = [文字列substringToIndex:500]; } –

1

これを試してみてください。

label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 350, self.bounds.size.width, 30)]; 
    // In this case value of self.bounds.size.width is "427" 
[email protected]"your text................................"; 
if([label2.text length]>500) 
     label2.text=[label2.text substringToIndex:500]; 


    label2.backgroundColor = [UIColor clearColor]; 
    label2.numberOfLines = 2; 
    label2.textAlignment = UITextAlignmentCenter; 
    label2.font = [UIFont systemFontOfSize:13]; 
    [self addSubview:label2] 
2

ここでは、スウィフト2.2でそれを行う方法です:

let maxLength = 500 
if originalString.characters.count > maxLength { 
    let range = originalString.rangeOfComposedCharacterSequencesForRange(Range<String.Index>(originalString.startIndex ..< originalString.startIndex.advancedBy(maxLength))) 
    let tmpValue = originalString.substringWithRange(range).stringByAppendingString(" …") 
    // use tmpValue 
} 
0

スウィフト3.0バージョン

let maxLength = 300 //char length 
if originalString.characters.count > maxLength { 
      let range = originalString.rangeOfComposedCharacterSequences(for: originalString.startIndex..<originalString.index(originalString.startIndex, offsetBy: maxLength)) 
      let tmpValue = originalString.substring(with: range).appending("...") 
     } 
関連する問題