我不使用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。现在我需要找到一种简单的方法来删除我想要的确切约束。
答案 0 :(得分:0)
因此,您只需使用长形式创建高度约束来创建单个约束。然后将其分配给一个属性。 然后你要做的就是改变常数值。 因此向上滑动会将高度约束设置为零。向下滑动会将高度约束常数更改为所需高度。
您不需要每次都添加和删除该约束。