私はこれまで同様の質問を見ましたが、明確な解決策は提供されていないようです。現在私はSKView
に含まれている子供とSKScene
を持っています。注:私はゲームプロジェクトを使用していません。代わりに、UIView
のSKView
を使用しています。UIView
のサブビューとしてSKView
を追加するだけです。スプライト自体は小さな画像であり、フレーム全体の中底部の特定の部分のみを占有します。コードは次のようになります。SpriteKit:サイズ変更/スケーリング時のスプライトの不必要な伸び
let imageView = SKView()
imageView.frame = CGRect(x: ..., y: ..., width: ..., height: ...) //all are predefined constants
let sprite = SKSpriteNode(texture: SKTexture(imageNamed: "image"))
sprite.position = CGPoint(x: imageView.frame.width * 0.5, y: imageView.frame.height * 0.5) // so it's positioned in the center
let scene = SKScene(size: imageView.frame.size) // also tried with sprite.size, but not working
scene.addChild(sprite)
scene.scaleMode = .aspectFit
imageView.presentScene(scene)
self.frame.addSubview(imageView)
ここで、問題はスプライトが元の形になっていないことです。それは縦軸に沿って伸びています。 .fill
/.aspectFill
/.aspectFit
/.resizeFill
/none
のいずれも、scaleMode
を変更しようとしましたが、スプライトの元の形状/比率を与えるものはありません。また、imageView
のフレームの定数を変更しようとしましたが、スプライトのみがカットされます(imageView.frame.height
が減少した場合)。だから私はこの問題に対処する方法を知っているかもしれませんか?
私は 'GameViewController''viewDidLoad'標準ゲームテンプレートにあなたのコードを入力しました。' .aspectFit'で伸びが見えません... –