/ / Переміщення UIView - цель-c, ios, анімація, uiview

Переміщення UIView - об'єктив-c, ios, анімація, uiview

Я намагаюся перенести UIView програмно, використовуючи такий метод:

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

Коли метод викликаний, NSLogs показують цезмінна currentBeat збільшується як слід, і кадр playbackLine (мій UIView), здається, рухається як слід. Однак об'єкт на екрані не рухається. Я також спробував встановити межі та центр замість кадру, і всі вони мають схожі результати. Я також спробував використати анімацію замість того, щоб встановити кадр, безрезультатно .

Чи є ще щось, що я повинен робити, щоб зображення на екрані відображало мінливий кадр?

Відповіді:

1 для відповіді № 1

Я здогадуюсь, що ви викликаєте цей метод у циклі? iOS не збирається перемальовувати екран, поки ваш код не закінчиться виконуватися. Ви не можете зациклюватись так і побачити ітераційні результати.

Для анімації переглядів слід скористатися рідною підтримкою, яку надає UIKit. Зокрема, перевірити розділ "Анімація" у довідці класу UIView.


1 для відповіді № 2

Спробуйте це

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