中心UILabel关于具体位置的文字

时间:2014-05-11 16:30:00

标签: ios objective-c uilabel

我有一个带有长文本的UILabel,不经意的是它无法完整显示。

所以我想知道是否有一种方法可以使用自定义偏移量对显示的文本进行居中。

例如,如果我的文字是

  

Lorem ipsum dolor sit amet,consectetur adipisici elit,sed eiusmod tempor incidunt ut labore et dolore magna aliqua。

现在我得到像

这样的东西
  

Lorem ipsum dolor坐好......

但我想要

  

... eiusmod tempor incidunt ut ...

我希望我足够清楚。

2 个答案:

答案 0 :(得分: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];

}

答案 1 :(得分: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];

}

它非常适合我。