我该如何解决“无法将类型 'CATextLayerAlignmentMode' 的值分配给类型 'String'?”
How may I solve 'Cannot assign value of type 'CATextLayerAlignmentMode' to type 'String'?
func createNewBubbleParentNode(_ text: String) -> SCNNode {
let billBoardConstraint = SCNBillboardConstraint()
billBoardConstraint.freeAxes = SCNBillboardAxis.Y
let bubble = SCNText(string: text, extrusionDepth: CGFloat(bubbleDepth))
var font = UIFont(name: "Futura", size: 0.15)
bubble.font = font
bubble.alignmentMode = kCAAlignmentCenter
return bubbleNodeParent
}
如何解决“无法使用此类函数将类型 'CATextLayerAlignmentMode' 的值分配给类型 'String'?
感谢您的回答!!
洛伊克
我认为您需要将 kCAAlignmentCenter
替换为 CATextLayerAlignmentMode.center.rawValue
您只需使用一个值 CATextLayerAlignmentMode.center.rawValue
。这个值不仅在 iOS 中使用,而且在 macOS 中也使用。
bubble.alignmentMode = CATextLayerAlignmentMode.center.rawValue
这是完整的代码版本:
import ARKit
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.scene = SCNScene()
let textNode = self.createBubbleNode("SceneKit")
sceneView.scene.rootNode.addChildNode(textNode)
sceneView.session.run(ARWorldTrackingConfiguration())
}
func createBubbleNode(_ text: String) -> SCNNode {
let bubble = SCNText(string: text, extrusionDepth: 0.02)
bubble.font = UIFont(name: "Futura", size: 0.15)
bubble.firstMaterial?.diffuse.contents = UIColor.red
bubble.alignmentMode = CATextLayerAlignmentMode.center.rawValue
let bubbleNode = SCNNode(geometry: bubble)
return bubbleNode
}
}
func createNewBubbleParentNode(_ text: String) -> SCNNode {
let billBoardConstraint = SCNBillboardConstraint()
billBoardConstraint.freeAxes = SCNBillboardAxis.Y
let bubble = SCNText(string: text, extrusionDepth: CGFloat(bubbleDepth))
var font = UIFont(name: "Futura", size: 0.15)
bubble.font = font
bubble.alignmentMode = kCAAlignmentCenter
return bubbleNodeParent
}
如何解决“无法使用此类函数将类型 'CATextLayerAlignmentMode' 的值分配给类型 'String'?
感谢您的回答!!
洛伊克
我认为您需要将 kCAAlignmentCenter
替换为 CATextLayerAlignmentMode.center.rawValue
您只需使用一个值 CATextLayerAlignmentMode.center.rawValue
。这个值不仅在 iOS 中使用,而且在 macOS 中也使用。
bubble.alignmentMode = CATextLayerAlignmentMode.center.rawValue
这是完整的代码版本:
import ARKit
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.scene = SCNScene()
let textNode = self.createBubbleNode("SceneKit")
sceneView.scene.rootNode.addChildNode(textNode)
sceneView.session.run(ARWorldTrackingConfiguration())
}
func createBubbleNode(_ text: String) -> SCNNode {
let bubble = SCNText(string: text, extrusionDepth: 0.02)
bubble.font = UIFont(name: "Futura", size: 0.15)
bubble.firstMaterial?.diffuse.contents = UIColor.red
bubble.alignmentMode = CATextLayerAlignmentMode.center.rawValue
let bubbleNode = SCNNode(geometry: bubble)
return bubbleNode
}
}