我在Swift中有一个Table View Cell的代码
let rcap = cell.viewWithTag(613) as! UILabel
rcap.text = "Capacity: \(room.capacity) " // I added space at the end
屏幕上显示时,空格将被移除。
如果我在String的开头添加空格,则没有问题。
目前我正在使用这种“完全停止”黑客攻击,但这还不够好:
rcap.text = "Capacity: \(room.capacity) ."
有什么想法吗?
我也尝试过:
rcap.text = "Capacity: \(room.capacity) " + " "
答案 0 :(得分:32)
为标签添加约束对我来说似乎是更好的解决方案。 它允许您定义标签和之间明确定义的距离 表格视图单元格的边距。 空格的宽度取决于字体,如果标签中的文本缩小,甚至可能会更改,导致文本中的未对齐文本 表格视图。
话虽如此,你可以防止尾随空间 通过附加“ZERO WIDTH NON-JOINER”字符(U + 200C)删除:
int x = random.nextInt(Game.WD - 200) + 100;
int y;
int HEIGHT = 10;
int WIDTH = Game.WD - x;
int gap = 100;
public void paint(Graphics g){
g.drawRect(x, y, WIDTH , HEIGHT); //right part
g.drawRect(-x, y, (Game.WD - gap) , HEIGHT); //left part
但我认为这更像是一个“技巧”,而不是正确的解决方案 问题
更新:似乎这个“技巧”在iOS 10中不再起作用了, 所以应该使用布局约束,如最初建议的那样。
答案 1 :(得分:3)
在使用等宽字体并进行布局时,例如在可能在等宽字符末尾具有对齐空间的用户代码之类的情况下,此问题至关重要。
请注意, @MartinR的解决方案确实运行完美,今天,即公元2020年,iOS 13,Xcode 11。
def tabellina(n):
return [n*i for i in range(11)]
.text = "FATTIE KODE " + reservation + reservation.neededTrailingSpaces + \u{200c}"
.text = "FATTIE KODE " + reservation + reservation.neededTrailingSpaces + \u{200c}"
您现在可以绝对正常地设置字体大小等,并且一切正常。
这里是一个简单的UILabel,可以对其进行填充,因此您无需执行其他任何操作:
.text = "FATTIE KODE " + reservation + reservation.neededTrailingSpaces + \u{200c}"
因此,在上面的三个黄色示例中,您只需这样做
class PaddyLabel: UILabel {
// pad always to 20 characters...
override var text: String? {
get {
return super.text
}
set {
if newValue == nil {
super.text = nil
return
}
var t = newValue!
while t.count < 20 { t += " " }
t += "\u{200c}"
super.text = t
}
}
不必手动添加所需的空格。
请注意,即使您没有使用等宽字体,一个典型的实际用例是您想要“堆放” UILabels -假设它们每个都说一个字,并且无论字体大小如何,它们之间都有绝对正确的空间,也就是说,就好像它只是一个UILabel中的一句话。
仅 的方法是让UILabel“实际上包含空格”。
也许这将(再次?)在将来的iOS中失效。
我知道的唯一其他解决方案是这个。首先,仅向UILabel添加填充非常荒谬。解释如下:
How to actually reliably add damned padding to a UILabel
实际上,使用类似的技术,可以使用.text = "FATTIE KODE " + reservation
,intrinsicContentSize
和drawText
在一端强制额外的宽度。要知道要添加多少宽度,您必须使用幻像示例文本以及相关字符数来计算宽度。进行该计算将需要通常烦人的技术来计算可能的文本呈现大小。但这很糟糕,幸运的是,我们可以使用@MartinR的惊人技巧(照常!)
答案 2 :(得分:1)
请尝试使用零宽度的空格而不是句点。可以使用数字键盘上的左 Alt 和 0173 来编写。或者,您可以在此处复制并删除引号:""
因此,用于设置文本的代码将如下所示(结尾处为零宽度):
rcap.text = "Capacity: \(room.capacity) "
不间断空格(\u{00a0}
)也应该起作用,其用法与Martin和Fattie的答案中的\u{200c}
一样
答案 3 :(得分:-1)
rcap.text = String.localizedStringWithFormat("Capacity: %@ ", rrom.capacity)
尝试以上代码可能有效
答案 4 :(得分:-1)
对不起,我认为您可以将其转换为swift。
请迅速参考:
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
let str = NSMutableAttributedString(string: String(format: " %@ .", yourString))
str.addAttribute(.foregroundColor, value: label.backgroundColor as Any, range: NSRange(".")!)
label.attributedText = str
答案 5 :(得分:-2)
NSMutableAttributedString * str = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@“%@。”,numString]];
[str addAttributes:@{ NSForegroundColorAttributeName : label.backgroundColor } range:[str.string rangeOfString:@"."]];
label.attributedText = str;