我看到很多有关去除字符串末尾空白的问题和答案。我的问题正好相反。
我故意想要在字符串末尾有一个空格字符,并且不希望在将其分配给UILabel
的text
属性时自动修剪它。
我尝试添加了我能想到的所有unicode变体(NO-BREAK SPACE /u00a0; PUNCTUATION SPACE /u0008; TAG SPACE等),但它们都被修剪了。
在我过去的编程经验中,总是有一个“空格”字符,它不被认为是“空格”,因此它不会被自动修剪。
我看到很多有关去除字符串末尾空白的问题和答案。我的问题正好相反。
我故意想要在字符串末尾有一个空格字符,并且不希望在将其分配给UILabel
的text
属性时自动修剪它。
我尝试添加了我能想到的所有unicode变体(NO-BREAK SPACE /u00a0; PUNCTUATION SPACE /u0008; TAG SPACE等),但它们都被修剪了。
在我过去的编程经验中,总是有一个“空格”字符,它不被认为是“空格”,因此它不会被自动修剪。
我搜索了一周,发现可以使用Unicode编码中的"0009"(制表符)来使UILabel产生缩进。
[NSString stringWithFormat:@"%@\t", @"你的文本"]
来追加制表符。 - xi.lin在添加制表符并不能满足我只想在标签开头和结尾加入一个空格的需求,所以我想出了这个解决方案,虽然看起来不太好看,但是它是可配置的并且救了我的命:
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSForegroundColorAttributeName : [UIColor blackColor]}];
[string insertAttributedString:[self emptyAtributedWhitespace] atIndex:0];
[string appendAttributedString:[self emptyAtributedWhitespace]];
label.attributedText = string;
...
- (NSAttributedString *)emptyAtributedWhitespace
{
// You can put any random string there or how many spaces you want
return [[NSAttributedString alloc] initWithString:@"_" attributes:@{ NSForegroundColorAttributeName : [UIColor clearColor]}];
}