ios设置约束以设置图标动画

时间:2014-10-29 15:45:11

标签: ios animation autolayout constraints

我想在放大图标上执行以下约束动画

一开始我希望我的图标位于屏幕右侧,然后将其移到文本字段的左侧:

 ___________________
|___________________|           O-

to
    ___________________
O- |___________________|    

所以我所做的是在我的超级视图右侧的图标上设置优先级为1000的约束A. 并在我的文本字段左侧的图标上添加另一个约束B,优先级为750

然后当我想要执行我的动画时,我删除了约束A,所以我希望图标移动到我的texfield的左边,但它没有移动

怎么做?

约束A:

enter image description here

约束B:

enter image description here

动画的一些代码:

[UIView animateWithDuration:0.5 animations:^{

    self.view.alpha = 1;

} completion:^(BOOL finished) {

    //animating the icon
    [self.view removeConstraint:_loupeSuperviewLeftMargin];//remove constraint A
    [self.view  setNeedsUpdateConstraints];

    UIView animateWithDuration:0.5f animations:^{
        [self.view invalidateIntrinsicContentSize];
        [self.view layoutIfNeeded];
    }];
}];

1 个答案:

答案 0 :(得分:1)

如果我给标签(我使用了一个按钮进行测试)这两个约束给标签(低优先级约束可以有任何优先级高达749 - 如果我使用750,两个视图都消失了)它对我有用,

enter image description here

enter image description here

然后在代码中,我删除了高优先级,

- (IBAction)moveButton:(id)sender {
    [self.view removeConstraint:self.rightCon]; // rightCon is the high priority constraint
    [UIView animateWithDuration:1 animations:^{
        [self.view layoutIfNeeded];
    }];

}

请确保在两个视图的超视图上调用removeConstraint,这两个视图之间有间距约束 - 这是拥有该约束的superview。