我有两个应用程序,一个带有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)

这是我的另一个使用uilabes的(它在一个红色的矩形内,所以更容易看到)
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,但是我认为使用UILabels可能有一种更简单的方法。

关于ios - 如何以编程方式向文本添加轮廓?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40397185/

10-13 07:40