UILabel文本末尾包含多个空格

时间:2013-10-02 06:10:39

标签: objective-c text uilabel string-formatting

在Objective-C中,我有一个UILabel,上面写着'正在加载'。每0.5秒,字符串将获得另一个'。'直到有3个点,然后重新开始。我面临的问题是我的字符串居中,当每个点出现时,字符串跳跃。字符串跳转的原因是因为UILabel不断修剪正确的空格。

以下是目前正在发生的一个例子。

+------------+
|  Loading   |
+------------+
|  Loading.  |
+------------+
| Loading..  |
+------------+
| Loading... |
+------------+

这就是我想要发生的事情。

+------------+
| Loading    |
+------------+
| Loading.   |
+------------+
| Loading..  |
+------------+
| Loading... |
+------------+

告诉UILabel有更大的宽度并且左对齐不是一种选择。这需要用文本完成。

我发现了这个link,但我仍然无法弄明白。

我目前拥有的是这个。

[NSString stringWithFormat:@"%-3.3s", [@"" UTF8String]];
[NSString stringWithFormat:@"%-3.3s", [@"." UTF8String]];
[NSString stringWithFormat:@"%-3.3s", [@".." UTF8String]];
@"...";

3 个答案:

答案 0 :(得分:4)

文本在标签上的工作方式是 - 它由标准格式信息格式化 - 如修剪等。如果你不希望ios控制它。您可以通过编程方式设置 attributedText 。这不是通过格式化。这是关于那个

的苹果文档
  

attributedText标签显示的样式文本。

     

@property(非原子,复制)NSAttributedString * attributedText   讨论默认情况下,此属性为零。为...分配新值   此属性还将text替换为text属性的值   相同的字符串数据,尽管没有任何格式信息。在   另外,分配一个新的值会更新字体中的值,   textColor和其他与样式相关的属性使它们反映出来   样式信息从属性字符串中的位置0开始。

基本上将uilabel的属性文本设置为“正在加载”

答案 1 :(得分:1)

看看this

解决方案是添加尾随可见字符并将它们设置为透明。

答案 2 :(得分:1)

设置label.textAlignment = NSTextAlignmentNatural。从ios 9开始,这是默认值,之前它曾经是NSTextAlignmentLeft。

现在,由于您的文本必须居中,因此将其包装在UIView中,标签的所有边距都与包装器视图的边界相关联。然后将包装器置于中心而不是标签。

以下是代码:

UIView* wrapper = [[UIView alloc] init];
wrapper.translatesAutoresizingMaskIntoConstraints = NO;
//This sets the wrapper at the center of where you were adding the label previously
[wrapper.centerXAnchor constraintEqualToAnchor: superview.centerXAnchor].active = YES;

label.translatesAutoresizingMaskIntoConstraints = NO;
[label.leadingAnchor constraintEqualToAnchor:wrapper.leadingAnchor].active = YES;
[label.trailingAnchor constraintEqualToAnchor:wrapper.trailingAnchor].active = YES;
[label.topAnchor constraintEqualToAnchor:wrapper.topAnchor].active = YES;
[label.bottomAnchor constraintEqualToAnchor:wrapper.bottomAnchor].active = YES;

label.textAlignment = NSTextAlignmentNatural
...