Objective c iOS-UIView动画持续时间工作不正常

Objective c iOS-UIView动画持续时间工作不正常,objective-c,iphone,ios10,uiprogressview,Objective C,Iphone,Ios10,Uiprogressview,当我上传完一张照片到我的服务器时,我正在尝试对我的UIProgressView做一些动画。当我将持续时间设置为5.0秒或10.0秒时,没有什么不同,立即调用Completion [UIView animateWithDuration:5.0 animations:^{ self.progressBar.progress = 1.0; } completion:^(BOOL finished) { NSLog(@"kykny udah");

当我上传完一张照片到我的服务器时,我正在尝试对我的UIProgressView做一些动画。当我将持续时间设置为5.0秒或10.0秒时,没有什么不同,立即调用Completion

    [UIView animateWithDuration:5.0 animations:^{
        self.progressBar.progress = 1.0;
    } completion:^(BOOL finished) {
        NSLog(@"kykny udah");
        if (finished) {
            NSLog(@"finished");
            Post *post = [mappingResult.dictionary objectForKey:@""];
            [self.posts insertObject:post atIndex:0];

            NSLog(@"caption: %@ , items: %@",post.caption, post.items);

            CGRect frame = self.progressView.frame;
            frame.size.height = 0;
            self.progressView.frame = frame;

            [self.tableView reloadData];
        }
    }];

这个问题是怎么发生的?实际上,它就像一个普通的序列代码

如果你想只显示10秒的进度,那么

// PROGRESS VIEW IS JUST A VIEW WITH SOME BACKGROUND COLOR WITH FRAME CGRectMake(0,0,0,10)
[UIView animateWithDuration:5.0 animations:^{
self.progressView.frame = CGRectMake(0,0,100,10); // adjust the frame to get  the linear animation view
} completion:^(BOOL finished) {
NSLog(@"kykny udah");
if (finished) {
    .....
    self.progressView.frame = CGRectMake(0,0,100,0);
    .....
}
}];

尝试在更新帧更改后添加以下行,如

self.progressBar.progress = 1.0;
[self.view layoutIfNeeded];

这将使您的动画效果在您在动画持续时间中指定的时间内生效。

您是否在iOS 9或更早版本中尝试过相同的代码?请注意:您不应将动画误用于计时器。控制器代码不应在完成块中执行。用户为什么要等待可以立即完成的操作?为什么不将“进度视图”设置为“隐藏”
hidden
属性设置为“是”?因为这样我就隐藏了我的“进度视图”,我的“表格视图”不会显示在顶部,它会与我的progressView@macmoonshine我已经看到了,我已经检查了
finished
参数,正如您在上面的代码中看到的,我试着加入分派功能,但仍然很奇怪,OP想要为条而不是帧设置动画。如果只是一个条,那么获取子视图,然后调整帧,然后用户为什么在completin块中设置帧他将帧的高度设置为零以隐藏进度视图。是的,我更改高度以隐藏progressView,因为如果我将可见性更改为隐藏,则我的TableView仍在原来的位置,并且它将在顶部屏幕和单元格之间与progressView的高度存在间隙