2013-03-15 10 views
5

Ich möchte zuerst 500 Zeichen in UILabel anzeigen und dann Truncate Symbol anzeigen, wenn mehr als 500 Zeichen verfügbar sind. Aber ich weiß nicht, wie kann ich 500 Zeichen begrenzen den Text abschneiden ?.Begrenzen Sie das UILabel auf 500 Zeichen und dann kürzen Sie das UIlabel in IOS

Hier ist mein Code

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; 

einfach sagen Sie mir, Jungs, wie ich min 500 Zeichen angezeigt werden können und als sie gestutzt (wenn mehr als 500)

Jede Hilfe

+0

coverView.label2.lineBreakMode = UILineBreakModeWordWrap; und passen Sie Ihre Höhe an oder erhöhen Sie die Höhe dynamisch. –

+0

Sie können versuchen, einen NSMutableString verwenden und den Text vor dem Festlegen der label.text – jcesarmobile

+0

yourLabel.text.length in if und dann verwenden Sie Stringbyappendingstring oder stringwithformat – amar

Antwort

12

Kürzen Sie die Zeichenfolge, wenn sie länger als 500 Zeichen ist. Nur Einschränkung: sicherstellen, dass es nicht von einem surrogate pair in der Mitte brechen:

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

geschätzt anzuzeigen nur 500 Zeichen verwenden Sie einfach unter code:

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

Hoffe, das wird Ihnen helfen .

Alles Gute !!!

+2

Niemals Strings teilen, ohne sicherzustellen, dass Ersatzpaare nicht zu brechen. –

0

Es kann einfach durch

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

hier 500 oder weniger als 500 Zeichen getan werden die Zeichen angezeigt und alle, die abgeschnitten werden überschreiten werden.

NSString * Zeichenfolge = LabelNewText.text;

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

Dies stürzt ab, wenn die Länge des Textes unter 500 liegt. –

+0

Sie können die Länge der Zeichenfolge nach NSString überprüfen * string = LabelNewText.text; if ([string length]> 500) { string = [string substringToIndex: 500]; } –

1

versuchen Sie diese eine it'l hilft Ihnen.

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

Hier ist, wie es 2,2 in Swift zu tun:

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

Swift 3.0 Version

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("...") 
     }