如何以编程方式向文本添加大纲?

时间:2016-11-03 08:51:49

标签: ios iphone swift sprite-kit swift3

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

如何概述这些标签?

1 个答案:

答案 0 :(得分:1)

对于SKLabelNode,没有“简单”的方式来概述文字。然而,有一个'黑客'。它涉及在标签周围添加8个额外的重复节点,这些节点是黑色的(或者你想要的轮廓颜色),比原始颜色小zPosition,否则相同。

每个标签与原始标签的字体大小相同非常重要。

您尝试这样做会涉及增加一个大纲复制标签的字体大小。正如你在问题中所说,它不起作用。您必须使用多个标签,以便效果无缝显示。

您可以将一个副本直接放在原件上方,一个放在正下方,一个放在左边,一个放在右边,然后放在每个角落(右上角,左上角,右下角和左下角)。这给出了轮廓的效果,但效率不高,应该用一粒盐。

注意:保持所有副本的数量与原始数据保持一致,因此“轮廓”的大小均匀。

这也适用于UILabels,但我认为使用UILabels可能有更简单的方法。

相关问题