我有两个应用程序,一个带有 UILabel,另一个使用带有 SKLabelNode 的 SpriteKit。我想在白色文本周围添加黑色轮廓。
我在 swift 中找不到任何轮廓或边框属性或类似的东西。我试过只创建新标签,后面的黑色字体稍大一些,但看起来一点也不对。
这是我用 SpriteKit 玩的游戏
title.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
title.text = "Tap to start!"
title.fontName = "Arial"
title.zPosition = 10
title.fontSize = 50
self.addChild(title)
这是我的另一个使用 UILables 的(它在红色矩形内,因此更容易看到)
let rectangle = UIView(frame:CGRect(x: self.view.frame.size.width / 2 - 150, y: self.view.frame.size.height / 2 - 75, width: 300, height: 150))
rectangle.backgroundColor = UIColor.red
self.view.addSubview(rectangle)
let label = UILabel(frame: CGRect(x: rectangle.frame.size.width / 2 - 75, y: rectangle.frame.size.height / 2 - 10, width: 150, height: 20))
label.textAlignment = .center
label.text = "Tap to Start!"
label.textColor = UIColor.white
label.font = UIFont(name: "Arial", size: 20)
rectangle.addSubview(label)
如何概述这些标签?
最佳答案
对于 SKLabelNode
,没有“简单”的文本轮廓显示方法。然而,有一个“黑客”。它涉及在标签周围添加 8 个额外的重复节点,这些节点为黑色(或您希望轮廓的任何颜色),zPosition
小于原始节点,否则相同。
重要的是每个标签的字体大小都与原始标签相同。
您为此所做的尝试包括增加one 大纲副本标签的字体大小。正如您在问题中所说,它不起作用。您必须使用多个标签才能无缝显示效果。
您可以在原件的正上方放置一份副本,在正下方放置一份,在左侧放置一份,在右侧放置一份,然后在每个角上放置一份(右上角、左上角、右下角和左下角)。这提供了轮廓的效果,但是效率不高,应该持保留态度。
注意:保持所有副本的原始偏移量一致,以便“轮廓”大小均匀。
这也适用于 UILabels
,但我认为使用 UILabels
可能有更简单的方法。
关于ios - 如何以编程方式为文本添加大纲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397185/