Iphone 使用“自动布局”时设置视图宽度动画

Iphone 使用“自动布局”时设置视图宽度动画,iphone,ios,objective-c,xcode,autolayout,Iphone,Ios,Objective C,Xcode,Autolayout,我使用自动布局来定位自定义进度条(它只是一个带有背景色的UIView)。我没有使用一个合适的进度条,因为我不想在UIView可以满足我的需要时完全定制它 无论如何,我已经告诉XCode将进度条放在左侧,并与底部保持一定距离。这将正确定位它,但当我设置宽度动画时,什么也不会发生。如果我创建了一个新的UIVIew,则设置动画以确保其正常工作。约束是否会阻止此设置动画?在宽度上根本没有设置任何约束 [UIView animateWithDuration:startingGameSeconds dela

我使用自动布局来定位自定义进度条(它只是一个带有背景色的UIView)。我没有使用一个合适的进度条,因为我不想在UIView可以满足我的需要时完全定制它

无论如何,我已经告诉XCode将进度条放在左侧,并与底部保持一定距离。这将正确定位它,但当我设置宽度动画时,什么也不会发生。如果我创建了一个新的UIVIew,则设置动画以确保其正常工作。约束是否会阻止此设置动画?在宽度上根本没有设置任何约束

[UIView animateWithDuration:startingGameSeconds delay:0.0 options:UIViewAnimationOptionCurveLinear
                 animations:^(void) {
                     progressBar.frame = CGRectMake(progressBar.frame.origin.x,
                                                    progressBar.frame.origin.y,
                                                    320,
                                                    progressBar.frame.size.height);

                 }
                 completion:^(BOOL finished){
                 }];

使用自动布局时,不应再使用
setFrame:
方法。当您想要设置“帧”的动画时,必须设置约束的动画。我想您的自动布局约束是在Interface Builder中定义的。首先,确保进度条中添加了宽度布局约束。接下来,为该宽度布局约束创建一个IBOutlet。现在可以按如下方式设置约束的动画:

self.progressBarWidthLayoutConstraint.constant = 320;

[UIView animateWithDuration:1 animations:^{
    [self.view layoutIfNeeded];
}];

您可以在调用animateWithDuration之前设置该常数。是的,约束会阻止此设置动画。即使没有宽度约束,也有引线和尾随约束,对吗?设置约束动画:)是的,我有左边缘和底边的引线和尾随约束。在水平方向上有哪些约束?您需要有两个(一个向左,一个向右),或者一个和一个固定宽度。