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