/ / Преместване на UIView - aim-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;
}];