计算UILabel文本中的空格和空格

时间:2012-12-23 03:03:03

标签: iphone ios uitableview uilabel

我的单元格标签中有一个删除子视图,其宽度根据行中的文本进行设置。单元格标签中的行数设置为2,当有两行时,我在标签上设置了两个删除线。

这就是我正在为只有一行文字的标签做的事情:

 UIView *crossout = [[UIView alloc] init];
 crossout.frame = CGRectMake(x, y, w + 5, 2);
 crossout.backgroundColor = [UIColor colorWithRed: 0.0 / 255 green:175.0 / 255 blue: 30.0 / 255 alpha:1.0];
 crossout.tag = 1;
 [self.contentView addSubview:crossout];

我得到宽度(w):

 CGFloat w = [self.label.text sizeWithFont:[UIFont systemFontOfSize:15.0f]].width;

当我第二次击出时,我只是从标签的长度中减去w以获得第二次击出的宽度。

问题是,w不会考虑标签文本中的空格或空格,因此在换行符中看起来并不总是一致的。

如何计算w以使其包含空格和空格?

2 个答案:

答案 0 :(得分:0)

我知道你可以将它用于UITextField,但你可以尝试一下..

NSString *resultingString = self.label.text;

NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];

if  ([resultingString rangeOfCharacterFromSet:whitespaceSet].location == NSNotFound)         {
//here you can put your code

}

答案 1 :(得分:0)

要获取字符串中的内嵌空格数,可以尝试以下代码:

NSCharacterSet* whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
NSArray* substringsArray = [yourStringToCheck componentsSeparatedByCharactersInSet: whitespaceSet]
NSLog(@"Number of whitespaces : %d", [substringsArray count]);

或者,甚至可能更好(尽管这可能不会考虑标签等):

NSLog(@"Number of whitespaces : %d", [[yourStringToCheck componentsSeparatedByString:@" "] count]);

另一个选项(NSMutableString):

NSUInteger replacementCount = [yourStringToCheck replaceOccurrencesOfString:@" " withString:@" " options:NSLiteralSearch range:NSMakeRange(0, [receiver yourStringToCheck])];