【问题标题】:Keep constraint as size changes ios随着大小的变化保持约束 ios
【发布时间】:2015-09-26 17:57:33
【问题描述】:

我有三个这样的观点:

灰色视图对“Header 1”有一个顶部约束,“Header 2”对灰色视图有一个顶部约束。

我正在像这样为灰色视图设置动画:

    CGRect rect = self.fruitSection.frame;
    rect.size.height = 0;

    [UIView animateWithDuration:0.3 animations:^{
        [self.greySection setFrame:rect];
    }];

这使它向上滑动。但是,当灰色视图滑动到 height=0 时,其下方的“Header 1”视图将保持原位(并在“Header 1”和“Header 2”之间留有灰色视图之前的空白)。

有没有办法让“Header 2”在灰色视图折叠时向上滑动?

谢谢!

更新

我尝试为约束设置动画,而不是像这样为实际视图设置动画:

   [UIView animateWithDuration:0.5 animations:^{
        self.greyHeightConstraint.constant = 0.0f;
    }];

这可行,但视图没有动画;它“跳跃”而不是幻灯片

【问题讨论】:

  • 我能想到的只是将constant 设置为1.0f 的动画,然后在完成块中将constant 设置为0.0f。我不确定设置为 0.0f 是否会触发停止动画的优化。
  • @RoboticCat 不幸的是,同样的行为,感谢您的建议
  • 您是否阅读过这个问题(如何为约束更改设置动画?)它的答案是:stackoverflow.com/q/12622424/558933

标签: ios objective-c constraints


【解决方案1】:

我认为您在描述中混淆了“标题 1”和“标题 2”,但您应该为 graySection 的高度约束而不是其框架设置动画。

我猜灰色部分有一个恒定的高度约束,例如 200。

您想为此约束创建一个属性(我猜是 IBOutlet),并更改 .constant 属性。然后在动画块中调用[self.view layoutIfNeeded]。

【讨论】:

  • 谢谢,我更新了问题来解决这个问题。你的回答有点用。它确实将“标题 1”向上推并删除了空格。然而,视图不再是动画的,它只是跳跃。我已更新问题以显示我尝试过的内容
猜你喜欢
  • 2018-09-15
  • 2013-05-04
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2021-02-21
相关资源
最近更新 更多