当前位置: 首页 > 知识库问答 >
问题:

自动布局在不更改宽度/高度的情况下为UIView的x/y位置设置动画

相诚
2023-03-14

我正在尝试习惯使用自动布局和约束的动画,而不是使用帧的动画。在我的项目中,我在屏幕顶部附近有一个UIView,我正试图直接向下(y位置)设置动画。我知道我必须修改约束常量值,但这样做会降低视图的高度,而不是像我想要的那样向下“推”视图。这是我的代码

self.topConstraint.constant = 180;

[UIView animateWithDuration:0.5f animations:^{
    [self.theView layoutIfNeeded];
} completion:^(BOOL finished) {

}];

顶部约束是视图控制器视图顶部和视图之间的垂直空间约束。

theView的其他约束包括:

>

水平间距

垂直空间(self.topConstraint)

垂直空间(表示theView和ViewController视图底部之间的空间)

固定宽度

固定高度

如何修改约束值以简单地更改theView的位置而不影响其宽度/高度?


共有1个答案

丘普松
2023-03-14

应删除约束:

垂直空间(表示视图和ViewController视图底部之间的空间)

因为您不希望高度改变(您已经固定了它),并且您正在使用其他约束指定x(中心约束)和y(其他vert约束)位置,所以它不是必需的。

也可能不需要您的水平空间约束(因为您有一个中心X对齐约束)-可能需要水平空间,但更可能是在以该空间为中心的视图上。

 类似资料:
  • 我想复制这家伙做的但不使用画布。我想有一个div在我的页面的中心,并简单地增加宽度/高度/边界半径10px每秒。这工作得很好,但是由于某种原因,div越大,它向右下方移动的越多。圆圈不是静止不动的,它的中心位置随着它变大而改变。如何在不改变位置的情况下更改div的宽度/高度? main.css index.html APP咖啡

  • 问题内容: 如果我有: 然后 会拉伸以填充该空间。我希望图像保持相同大小,但是要在DOM中占用那么多空间。我是否必须添加封装或?我讨厌添加样式标记。 问题答案: 是的,您需要一个封装div: 与类似: 其他解决方案(填充,边距)比较繁琐(因为您需要根据图像的尺寸计算正确的值),但也不能有效地使容器小于图像。 同样,上述内容可以更容易地适用于不同的布局。例如,如果您希望图像位于右下角:

  • 关于UITableViewCell高度动画,在堆栈溢出方面有很多类似的问题,但对于新的iOS8自动布局驱动的表视图,这些问题都不起作用。我的问题: 自定义单元格: 注意旋转木马高度限制。这是内容视图的子视图(唯一的子视图)的高度约束。 然后,在“查看我要展开的所有操作”单元上,我的代码: 如您所见,我尝试使用这个很好的旧解决方案: 您可以在选中UITableViewCell时设置高度更改的动画吗?

  • 在过去的几天里,我试图使用自动布局约束完成一个相当简单(至少应该是这样)的布局,但没有成功。 我的视图层次结构是:< br> UIScrollView - UIView(容器视图)< br> - UILabel(多行标签)< br >-ui webview < br >-ui label < br >-ui button 所需的功能是根据内容的大小扩展容器视图。为了增加UIWebView的高度,我

  • 我应该添加哪些约束来设置宽度和高度与Superview成比例(在我的例子中是UIViewController的视图)在iOS自动布局中,通过自动调整大小,我们可以像下面显示的图片一样进行操作。

  • 问题内容: 我有一个UILabel,一个UIView在情节提要中并排包含其他子视图。UIView应该紧靠UILabel的右边缘(跟踪约束为1),但我还需要UIlabel(左侧的UIlabel)将其宽度设置为等于其内容大小,除非它达到最大宽度。视觉上: |标签文字| | UIViewWithSubviews | 我需要以下约束: 1)标签应明智地调整宽度大小,除非达到最大大小,并且高度也是动态的,这