/ / Moving a UIView - objective-c, ios, animacja, uiview

Przenoszenie UIView - cel-c, ios, animation, uiview

Próbuję przenieść UIView programowo przy użyciu następującej metody:

-(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);
}

Gdy metoda jest wywoływana, NSLogs to pokazujązmienna currentBeat zwiększa się tak, jak powinna, a ramka playbackLine (mój UIView) wydaje się poruszać tak, jak powinna. Jednak obiekt na ekranie się nie porusza. Próbowałem też ustawić granice i środek zamiast ramki i wszystkie z nich mają podobne wyniki. Próbowałem też użyć animacji zamiast ustawiania ramki, ale bezskutecznie .

Czy jest jeszcze coś, co powinienem zrobić, aby obraz na ekranie przedstawiał zmieniającą się ramkę?

Odpowiedzi:

1 dla odpowiedzi № 1

Zgaduję, że wywołujesz tę metodę w pętli? iOS nie będzie przerysowywać ekranu, dopóki kod nie zakończy wykonywania. Nie możesz zapętlić się w ten sposób i zobaczyć iteracyjnych wyników.

Aby animować widoki, powinieneś użyć natywnej obsługi, którą zapewnia UIKit. W szczególności sprawdź sekcja Animacje w odwołaniu do klasy UIView.


1 dla odpowiedzi nr 2

Spróbuj tego

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