2017-02-21 104 views
0

我以前見過類似的問題,但似乎沒有提供明確的解決方案。目前我有一個SKScene與孩子,包含一個SKView。注意:我沒有使用遊戲項目;相反,我在正常的UIView中使用SKView,並且只需添加SKView作爲UIView的子視圖。精靈本身是一個小圖像,它只佔據整個幀的中下部分的一定部分。代碼看起來是這樣的: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) 

現在的問題是精靈是不是在它的原始形狀;它沿着垂直軸延伸。我試圖用所有5個選項來更改scaleMode.fill/.aspectFill/.aspectFit/.resizeFill/none,但它們都沒有給出精靈的原始形狀/比例。我也嘗試改變imageView的幀的常量,但是隻削減精靈(如果imageView.frame.height減少)。所以我可以知道如何解決這個問題?

+0

我已經將你的代碼輸入到GameViewController的viewDidLoad標準遊戲模板中,並且我沒有看到用'.aspectFit'伸展... –

回答

0

您的代碼可以正常工作,所以問題可能在其他地方。我修改了一下,所以你可以在Playground中測試它。只需製作一個新的遊樂場並複製並粘貼即可。你還必須爲你的精靈拖動一張圖片。

import SpriteKit 
import PlaygroundSupport 

// create the outer UIView and show it on the playground 
let outerView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) 
PlaygroundPage.current.liveView = outerView 

// create the SKView and add it to the outer view 
let imageView = SKView(frame: CGRect(x: 25, y: 25, width: 250, height: 250)) 
outerView.addSubview(imageView) 

// create the scene and present it 
var scene = SKScene(size: imageView.frame.size) 
imageView.presentScene(scene) 

// create the sprite, position it, add it to the scene 
let sprite = SKSpriteNode(texture: SKTexture(imageNamed: "worf.jpg")) 
sprite.position = CGPoint(x: imageView.frame.width * 0.5, y: imageView.frame.height * 0.5) 
scene.scaleMode = .aspectFit 
scene.addChild(sprite) 

這裏的結果:

enter image description here

沒有拉伸!所以,您的問題可能與你把它放在了UIView例如,如果您添加:

outerView.transform = CGAffineTransform(scaleX: 1, y: 2) 

現在爲您所描述的圖像被拉伸。看看你的包含視圖和它上面的所有內容。