有没有一种“空格”字符不会从UILabel的末尾被修剪?

4

我看到很多有关去除字符串末尾空白的问题和答案。我的问题正好相反。

我故意想要在字符串末尾有一个空格字符,并且不希望在将其分配给UILabeltext属性时自动修剪它。

我尝试添加了我能想到的所有unicode变体(NO-BREAK SPACE /u00a0; PUNCTUATION SPACE /u0008; TAG SPACE等),但它们都被修剪了。

在我过去的编程经验中,总是有一个“空格”字符,它不被认为是“空格”,因此它不会被自动修剪。


当编辑完成后再添加它怎么样? - Lorenzo B
由于它是UILabel而不是UITextField,我认为它没有可用的相同的“didEndEditing”方法。 - HirsuteJim
好的。对不起,我在想关于UITextField的事情。 - Lorenzo B
我的程序正在设置文本,而iOS正在对其进行修剪。KVO在适当的级别/深度上运作吗?它能让我“捕捉”iOS执行的截断操作并防止其发生吗? - HirsuteJim
为什么你需要一个空格? - Lorenzo B
显示剩余6条评论
2个回答

3

我搜索了一周,发现可以使用Unicode编码中的"0009"(制表符)来使UILabel产生缩进。


2
你可以使用[NSString stringWithFormat:@"%@\t", @"你的文本"]来追加制表符。 - xi.lin

1

在添加制表符并不能满足我只想在标签开头和结尾加入一个空格的需求,所以我想出了这个解决方案,虽然看起来不太好看,但是它是可配置的并且救了我的命:

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]}];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接