如何使用“自动布局”移动标签并为更改设置动画?

时间:2013-08-10 16:35:28

标签: ios objective-c uiview autolayout nslayoutconstraint

我正试图将UILabel向左移动并为机芯设置动画。 UILabel是从故事板创建的,具有以下约束:

enter image description here

但是如果我试图让尾随空间恒定等于150,而不是20来将它移动到左边,它会向左反弹,然后回到中间。所以我把左前导约束的优先级降低到了900,但同样的事情仍然发生了。

所以我试过了:

self.textToReadLabel.transform = CGAffineTransformMakeTranslation(-500.0, 0.0);

移动它,但是如果我使用动画,它会滑离屏幕,然后重新滑动,然后停留在它应该......所有那些戏剧之后的地方。

我将如何实现这一目标?

点击按钮移动标签时发生的事情的全部内容:

        self.textHorizontalPlacementConstraint.constant = 150.0;
        self.textHorizontalPlacementConstraint2.constant = -110.0;
        [UIView animateWithDuration:1.0 animations:^{
            [self.view layoutIfNeeded];
        }];

        CATransition *animation = [CATransition animation];
        animation.duration = 0.5;
        animation.type = kCATransitionFade;
        animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        [self.textToReadLabel.layer addAnimation:animation forKey:@"changeTextTransition"];

        // Change the text
        self.textToReadLabel.text = @"text";
    }

视频如下:

http://cl.ly/3l2E401N3Q3h

1 个答案:

答案 0 :(得分:1)

您可以在Interface Builder中设置约束的出口,然后在想要为更改设置动画时修改代码,如下所示:

    [UIView animateWithDuration:2.0 animations:^{
        //Change your constraints from code.
    }];

对于Eg:如果我有一个leftSpacing约束,我可以直接更改它,如下所示:

    [UIView animateWithDuration:2.0 animations:^{
        //Change your constraints from code.
        self.leftSpacing.constant = self.leftSpacing.constant+20;
        [self.view layoutIfNeeded];
    }];

上面的代码会将您的视图从左到右动画20点。

<强>更新

您是否尝试过添加多个约束:例如,间距值应小于或等于:200但大于或等于20.我认为这可能有所帮助。