Swift 动画持续时间()

Swift animateWithDuration()

我想在动画中更改imageView 的y 并更改标签的文本。但是当我这样做的时候。 ImageView 上升 100,然后将动画从 -100 变为 0。但我希望它下降 100。

如果我不更改标签的文本,动画将完美运行。

    label.text = "test"

    UIView.animateWithDuration(0.5, animations: {

        self.imageView.frame.origin.y += 100

    })

此外,如果我这样做,它只会更改文本而不会移动 imageView。

    label.text = "test"
    imageView.frame.origin.y += 100

您正在使用自动布局。使用自动布局时不能直接更改 frame

您必须设置约束,然后对约束的变化进行动画处理以对视图进行动画处理。

另外,你不能做 blah.frame.origin.y += 100 IIRC CGrect 上的原点是只读的。

你可以做到...

Blah.frame = CGRectOffset(blah.frame, 0, 100)

但这同样不适用于自动布局。

编辑

原点可在 swift 中设置。谢谢 jrturton:-)