2014-05-11 51 views
0

我有一個長文本UILabel,並且不知道它不能被整體顯示。中心在特定位置上的UILabel文本

所以我想知道是否有一種方法,以自定義偏移中心顯示的文本。

例如,如果我的文字是

Lorem存有悲坐阿梅德,consectetur adipisici ELIT,sed的eiusmod tempor incidunt UT labore等dolore麥格納aliqua。

現在我得到這樣的

Lorem存有悲坐阿梅德...

但我想

... eiusmod tempor incidunt UT ...

我希望我已經清楚了。

回答

0

使用NSMakeRange將字符串從特定位置修剪到位置。如果你想限制字符長度,那麼下面的方法修剪字符串的長度恰好在字符串中間。

- (NSString*)trimString:(NSString*)myLongString{ 
NSUInteger trimLength = 20; 
NSUInteger stringLength = [string length]; 
if(stringLength < trimLength) return myLongString; 
NSUInteger trimStartPosition = stringLength/2 - trimLength/2; 
NSString *trimmedString = [myLongString substringWithRange:NSMakeRange(trimStartPosition, trimLength) ]; 

return [NSString stringWithFormat: @"...%@...", trimmedString]; 

} 
0

基於Insane-36的回答,我已經做到了。

- (NSString *)trimString:(NSString *)string aroundWord:(NSString *)word withRadius:(NSUInteger)radius { 

    NSString *prev = @"...", *next = @"..."; 
    NSUInteger centerStr = [string rangeOfString:word].location + word.length/2; 
    NSUInteger start = centerStr - radius; 

    NSRange range = NSMakeRange(start, radius * 2); 

    if (range.location + range.length > string.length) { 

     range = NSMakeRange(string.length - range.length, range.length); 
     next = @""; 

    } 

    if ((int)(range.location - range.length/2) < 0) { 

     range = NSMakeRange(0, range.length); 
     prev = @""; 
    } 

    NSString *stringaRestituita = [string substringWithRange:range]; 

    return [NSString stringWithFormat: @"%@%@%@", prev, stringaRestituita, next]; 

} 

它對我來說非常合適。

+0

您可能會考慮使用省略號字符而不是三個句號。 – bbarnhart

相關問題