UIView.animate () не оживляет вещь - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь оживить изменение размера спрайта. Размер изменяется, но без какой-либо анимации.

Вот проблемный код:

func layout_scene() {
    backgroundColor = UIColor(red: 14/255, green: 145/255, blue: 137/255, alpha: 1.0);

    var char_trail: SKSpriteNode!
    char_trail = SKSpriteNode(imageNamed: "trail")
    char_trail.size = CGSize(width: frame.width / 8, height: frame.width / 12)
    char_trail.position = CGPoint(x: frame.minX + frame.width / 10,
                                  y: frame.minY + frame.height / 4.4)
    char_trail.zPosition = -0.1

    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(fire), userInfo: nil, repeats: true)
}


@objc func    fire()
{
    UIView.animate(withDuration: 1, animations: {
        self.char_trail.size.width += 10
    })
}

Я ожидаю, что размер char_trail изменится плавно, но он просто изменит размер в одно мгновение. Скажите, что я делаю не так, пожалуйста

1 Ответ

0 голосов
/ 11 октября 2019

Чтобы анимировать размер вида, вам нужно установить view.transform вместо непосредственного изменения ширины слоя

view.transform = CGAffineTransformMakeScale(0,0);

0,0 относится к ширине, высоте, и этот код будет только уменьшатьвид пока не исчезнет (не проверено). Если вы хотите увеличить масштаб до фиксированного числа, вам сначала нужно будет рассчитать коэффициент масштабирования ((width + the_size_you_want_to_add) / width) --..... Имейте в виду, что если вы не масштабируете высоту с тем же коэффициентом, то представлениерастянется.

...