在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]];
@"...";
答案 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
...