我对斯威夫特相当陌生,但一路上我注意到了一些奇怪的事情。如果我有一个雪碧和一个标签,并为他们输入完全相同的位置,他们将有一个不同的视觉位置。我正在寻找一个人来解释这一点,以更好地理解斯威夫特。这是输出:

//
// GameScene.swift
// Test Game
//
// Created by NioPullus on 9/7/15.
// Copyright (c) 2015 Owen Vnek. All rights reserved.
//
import SpriteKit
class GameScene: SKScene {
var testSprite: SKSpriteNode = SKSpriteNode(imageNamed: "Spaceship")
var testLabel: UILabel = UILabel()
func defineTestSprite(var #sprite: SKSpriteNode) -> SKSpriteNode {
sprite.position.x = 100
sprite.position.y = 100
sprite.xScale = 0.3
sprite.yScale = 0.3
return sprite
}
func defineTestLabel(var #label: UILabel) -> UILabel {
label = UILabel(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
label.text = "Test"
return label
}
override func didMoveToView(view: SKView) {
self.addChild(defineTestSprite(sprite: self.testSprite))
self.view?.addSubview(defineTestLabel(label:self.testLabel))
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}发布于 2015-09-07 21:54:48
UIKit和SpriteKit使用不同的坐标系统,因此您不一定期望具有与子视图相同的x/y值的sprite出现在相同的视觉位置上。
您可以使用SKView方法convertPoint:toScene: (和convertPoint:fromScene:)在这些坐标空间之间进行转换。
https://stackoverflow.com/questions/32446433
复制相似问题