/ / Déplacer une UIView - objective-c, ios, animation, uiview

Déplacer un UIView - objective-c, ios, animation, uiview

J'essaie de déplacer un UIView par programme en utilisant la méthode suivante:

-(void)animatePlaybackLine: (int) currentBeat{
CGRect newFrame = CGRectMake(currentBeat*eighthNoteWidth, 0, eighthNoteWidth, 320);
[playbackLine setFrame:newFrame];
NSLog(@"Line animated to %i", currentBeat);
NSLog(@"New frame origin %f", playbackLine.frame.origin.x);
}

Lorsque la méthode est appelée, les NSLogs montrent quela variable currentBeat incrémente comme il se doit, et le cadre de playbackLine (mon UIView) semble se déplacer comme il se doit. Cependant, l'objet à l'écran ne bouge pas. J'ai également essayé de définir les limites et le centre au lieu du cadre, et tous ont des résultats similaires. J'ai également essayé d'utiliser une animation au lieu de définir le cadre, en vain .

Y a-t-il autre chose que je devrais faire pour que l'image à l'écran montre le changement de cadre?

Réponses:

1 pour la réponse № 1

Je suppose que vous appelez cette méthode en boucle? iOS ne va pas redessiner l'écran jusqu'à ce que votre code termine son exécution. Vous ne pouvez pas boucler comme ça et voir les résultats itératifs.

Pour animer des vues, vous devez utiliser le support natif que vous offre UIKit. En particulier, consultez la section Animations dans la référence de classe UIView.


1 pour la réponse № 2

Essaye ça

    [UIView animateWithDuration:0.3
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^{
datePickerView.frame = imageFrame;
}
completion:^(BOOL finished){
self.datePickerViewFlag = NO;
}];