我有一个关于iOS中autoLayout的问题。
我在很长一段时间内都在研究,但我还是没有达到我的需要。 / \
我正在构建一个动画视图(容器视图)。容器视图中有一个单击按钮。
初始状态如下图所示:
单击按钮,容器视图将使用动画(幻灯片)到底部按钮上部。
容器将覆盖白色部分(底部按钮上部)。
最后的愿望如下:
然后单击容器视图中的按钮。它会将视图折叠回初始状态。
我可以编写代码来控制有关包含视图的约束。
- (IBAction)slideBtnAction:(id)sender {
if (isContainerOpen) {
// 100 is for user click region
// it is slide view action (close)
[self replaceTopConstraintOnView:self.containerView withConstant: -self.containerView.frame.size.height + 40];
} else {
// it is slide view action(open)
[self replaceTopConstraintOnView:self.containerView withConstant: self.containerView.frame.size.height - _btmBtn1.frame.size.height - 40];
}
[self animateConstraints];
isContainerOpen = !isContainerOpen;
}
- (void)replaceTopConstraintOnView:(UIView *)view withConstant:(float)constant
{
[self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeTop)) {
constraint.constant = constant;
}
}];
}
- (void)animateConstraints
{
[UIView animateWithDuration:0.5 animations:^{
[self.view layoutIfNeeded];
}];
}
但是工作站是容器视图固定高度,动画无法滑动到底部上方位置的正确位置(覆盖白色部分)。
我希望容器视图可以符合所有iOS设备。所以容器视图将是动态高度。
但我不知道如何在幻灯片中设置容器视图高度。(我在这些代码中实现了修复高度。)
有谁可以帮助我如何实现这种效果?
因为我在故事板中设置了一些自动布局。
所以我将我的简单项目提升到github [here]。
请给我一些提示和导师,非常感谢..
---------------------编辑-----------
表示@YuviGr
如果我更改约束(使用你的建议)
// it is slide view action(open)
[self replaceTopConstraintOnView:self.containerView
withConstant: self.containerView.bounds.size.height - _btmBtn1.bounds.size.height];
- (void)replaceTopConstraintOnView:(UIView *)view withConstant:(float)constant
{
[self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeTop)) {
constraint.constant = constant;
}
}];
}
单击按钮时,视图无法正确显示位置。 像这些
答案 0 :(得分:0)
首先,您需要创建一个对要设置动画的约束的引用,在这种情况下,我认为是containerView的底部约束。
只需控制 - 从故事板拖动到控制器以创建IBOutlat(如果您不知道该做什么,请查看本教程Link)
进入容器视图可见的状态(第二个图像),您可以计算视图的高度并减去按钮高度
constraint = self.view.bounds.size.height - button.bounds.size.height;
对于隐形(第一张图片),你必须使用常数去除你想要的高度