0

我的单元格标签中有一个删除子视图,其宽度根据行中的文本进行设置。单元格标签中的行数设置为 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 以使其包含空格和空格?

4

2 回答 2

0

我知道你可以用这个,UITextField但你可以试一试..

NSString *resultingString = self.label.text;

NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];

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

}
于 2012-12-23T06:20:16.343 回答
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])];
于 2012-12-23T11:23:55.570 回答