【问题标题】:UIView animation options have no effectUIView 动画选项没有效果
【发布时间】:2016-01-12 22:22:06
【问题描述】:

我正在尝试将缓动动画应用于 UILabel 翻译,但如果我这样做:

[UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
   CGRect frame = _section.frame;
   frame.origin.y = -100;
   _section.frame = frame;
} completion:^(BOOL finished){}];

我看到一个线性动画,结果与我将0 作为options 传递时的结果相同。

如何让动画选项正常工作?

【问题讨论】:

    标签: ios objective-c animation uiview ios9


    【解决方案1】:

    这应该可以,假设您没有使用 AutoLayout。

    如果您使用的是 AutoLayout,那么所有的赌注都是关闭的。使用 AutoLayout,您应该使用约束来制作动画。您需要设置一个约束,将其连接到 IBOutlet,然后在动画块中更改约束的常量值并在您正在制作动画的视图上调用 layoutIfNeeded。

    【讨论】:

    • 我见过另一种方法,您将约束设置为 outside 动画块的新值,并且只在其中调用 layoutIfNeeded()。不知道为什么这两种方法都有效。
    • 实际上,在哪里更改约束(在动画块内部或外部)并不重要。重要的是对 layoutIfNeeded 的调用在动画块内部。对 layoutIfNeeded 的调用是实际移动视图的内容,这就是您想要制作动画的内容。约束更改只是设置阶段,以便下次更新布局时(可能)会移动视图。
    • 如何检查自动布局是否开启? (我继承了这个项目) - 我在情节提要上看到“Autoresize Subviews”被选中,是吗? (我刚刚尝试取消选中,但仍然看到线性动画)
    • 选择您的故事板。打开“文件检查器”。查看标有“Interface Builder Document”的部分。将有一个复选框“使用自动布局”。如果选中,则您的故事板正在使用自动布局。
    • 顺便说一句,不要在不了解其含义的情况下更改该复选框的状态。这可能需要对您的应用进行大量返工。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多