In ViewController.Swift Udało mi się zrobić animację z jednego punktu do drugiego. Pomyślałem, że będzie to łatwe do zapętlenia, więc pudełko będzie animowało się do jednego punktu, a następnie ożywi z powrotem do swojej pierwotnej pozycji, a następnie ponownie wykona pętlę. Udało mi się przesunąć obiekt na pozycję i "ukończyć" go przenieść z powrotem, ale to nie powoduje, że jestem w pętli. Jak można to osiągnąć?UIView.animateWithDuration swift loop animation
Myślałem, że może to może działać, ale szczerze mówiąc nie wiem:
let boxmoves = [CGRect(x: 120, y: 220, width: 100, height: 100), CGRect(x: 120, y: 120, width: 100, height: 100)]
for boxmove in boxmoves {
coloredSquare.frame = boxmove
}
Jak mogę wyśrodkować go w oparciu o urządzenia szerokości (zakładam istnieją pewne matematyki zaangażowany?)?
Mój kod:
let coloredSquare = UIView()
coloredSquare.backgroundColor = UIColor.blueColor()
coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)
self.view.addSubview(coloredSquare)
// found repeate but this will not animate as I want.
//UIView.animateWithDuration(2.0, delay: 0.2, options: UIViewAnimationOptions.Repeat, animations: {
UIView.animateWithDuration(2.0, animations: {
coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100)
}, completion: { finished in
UIView.animateWithDuration(2.0, animations: {
coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)
})
})
Wow, to było takie proste. Dzięki @Mazyod! Czy wiesz, jak je wyśrodkować na podstawie szerokości urządzenia? –
@JohanNdiyoLinnarsson Cóż, oczywiście musisz usunąć wszystkie te wartości zakodowane. Spróbuj ustawić ramkę o żądanym rozmiarze, a następnie animuj właściwość 'coloredSquare.center' zamiast ramki. Aby wyśrodkować go w widoku, wypróbuj 'coloredSquare.center = view.center' lub lepiej' coloredSquare.center = CGPoint (x: view.bounds.midX, y: view.bounds.midY) ' – Mazyod
jeśli nie jesteś używając autolayout, musisz również ustawić właściwość 'autoresizingMask' na elastyczne marginesy. – Mazyod