как масштабировать окно, чтобы оно подходило для всех устройств?

Я хочу знать, как я могу масштабировать окно, чтобы оно соответствовало одинаковому размеру во всех разделах. Проблема в том, что в некоторых разделах объекты не занимают такое же пространство, как я хочу.

У меня есть свой scaleMode = .ResizeFill, но проблема в том, что если я сделаю его .AspectFill, он не появится в правильном месте. Я думаю, что проблема в том, что я добавил новый контейнер на сцену, но не знаю, как это решить.

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(fileNamed:"GameScene") {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .ResizeFill
        scene.position = view.center

        skView.presentScene(scene)
    }
}


override func didMoveToView(view: SKView) {
    /* Setup your scene here */

    scaleMode = .ResizeFill
    node.position = view.center
    // 3) Add the container to the scene
    //addChild(node)
    // 4) Set the sprite's x position
    sprite.position = CGPointMake(radius, 0)
    // 5) Add the sprite to the container
    node.addChild(sprite)
    // 6) Rotate the container
    rotate()
    sprite.color = UIColor.whiteColor()
    sprite.colorBlendFactor = 1.0
    sprite.zPosition = 4.0

    circulo = SKSpriteNode(imageNamed: "circuloFondo2")
    circulo.size = CGSize(width: 294, height: 294)
    circulo.color = UIColor(red: 0.15, green: 0.15, blue: 0.15, alpha: 1)
    circulo.colorBlendFactor = 1
    circulo.alpha = 0.35
    circulo.position = view.center
    self.addChild(circulo)
    circulo.zPosition = 1
   }

Это iPhone 5s введите здесь описание изображения


person Diego Benítez    schedule 05.07.2016    source источник


Ответы (1)


  • Проблема может быть в коде, где вы рисуете круг. Возможно, вы рисуете круг с одинаковым радиусом для всех размеров экрана.
  • Вместо того, чтобы рисовать круг с тем же радиусом, вам нужно обеспечить динамический радиус круга в соответствии с шириной устройства.

Замените это

circulo.size = CGSize(width: 294, height: 294)

Используйте следующий фрагмент

let padding:CGFloat =  40.0  
circulo.size = CGSize(width:view.frame.size.width - padding , height: view.frame.size.width - padding)
person Rohit Pradhan    schedule 05.07.2016
comment
И как я могу это сделать? - person Diego Benítez; 05.07.2016
comment
Спасибо, но теперь, когда я добавил новый спрайт, произошло то же самое. - person Diego Benítez; 05.07.2016