0

我正在尝试将 UILabel 向左移动并为运动设置动画。UILabel 是从情节提要创建的,并具有以下约束:

在此处输入图像描述

但是,如果我尝试使尾随空间常数等于 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";
    }
4

1 回答 1

0

要获得动画布局更改,您需要更改constant您的NSLayoutConstraint然后调用:

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

还要确保你的约束是一致的。所以如果增加 trailingSpace 也会减少leadingSpace。

于 2013-10-04T13:56:32.480 回答