【问题标题】:Animation with Autolayout带有自动布局的动画
【发布时间】:2014-03-10 06:25:26
【问题描述】:

我不使用 IB。我正在用代码布置一切。

我在视图顶部有一个 UIToolbar。 我将它的高度设置为 64 或其他东西,宽度显然是为了水平拉伸以适应屏幕宽度。 当我第一次启动该应用程序时,一切都很完美。我改变了方向,工具栏调整大小,都很好。

现在是动画部分。

当我在视图上向上滑动时,工具栏应该在屏幕顶部向上移动并隐藏。 当我在视图上向下滑动时,工具栏应该会返回下来。

我尝试通过以下方式设置约束。

最初是这个。

// for width
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[toolbar]-|" options:0 metrics:nil views:viewDict]];
// for height
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[toolbar(toolbarHeight)]" options:0 metrics:metricDict views:viewDict]];

现在,在向上滑动期间

[self.view removeConstraint:[NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0]];

但它打破了本应使其回落并保持稳定的约束。

不用说,这让我发疯。有什么解决办法吗?

编辑:

经过仔细分析,“removeConstraint”没有按预期工作。基本上,它并没有消除我希望它消除的约束。 self.view.constraints 是一个 NSArray。现在我需要找到一种简单的方法来删除我想要的确切约束。

【问题讨论】:

    标签: animation ios7 autolayout uitoolbar


    【解决方案1】:

    因此,您只需要使用长格式创建高度约束即可创建单个约束。然后将其分配给一个属性。 然后你所要做的就是改变常数值。 所以向上滑动会将高度约束常数设置为零。向下滑动会将高度约束常量更改为所需的高度。

    您不需要每次都添加和删除该约束。

    【讨论】:

    • 不,我想看工具栏上移的动画。
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多