ios - 如何以编程方式为文本添加大纲?

标签 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)

如何概述这些标签?

最佳答案

对于 SKLabelNode,没有“简单”的文本轮廓显示方法。然而,有一个“黑客”。它涉及在标签周围添加 8 个额外的重复节点,这些节点为黑色(或您希望轮廓的任何颜色),zPosition 小于原始节点,否则相同。

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

您为此所做的尝试包括增加one 大纲副本标签的字体大小。正如您在问题中所说,它不起作用。您必须使用多个标签才能无缝显示效果。

您可以在原件的正上方放置一份副本,在正下方放置一份,在左侧放置一份,在右侧放置一份,然后在每个角上放置一份(右上角、左上角、右下角和左下角)。这提供了轮廓的效果,但是效率不高,应该持保留态度。

注意:保持所有副本的原始偏移量一致,以便“轮廓”大小均匀。

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

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

相关文章:

iphone - 将UIView放在UIButton上并仍然突出显示

iphone - 应用程序重新启动时无法按下以编程方式生成的按钮

ios - 警报框上的动画

swift - iOS11 如何同步大导航栏折叠与滚动

ios - 试图找出如何在 Swift 2.0 中加载多个图像序列

ios - 使用 iPad 控制伺服驱动器/电机

ios - PhoneGap 和 Backbone Ajax 调用需要很长时间

iphone - 在回调函数中调用 objective-c 函数

iphone - 静态库的资源(图像和 plist)捆绑

JSON数据: A_Geo: "MULTIPOINT ((121.5831587 24.9971109))" need to be parsed into dictionary