gpt4 book ai didi

ios - 在自动布局的使用下动画/移动 View

转载 作者:IT王子 更新时间:2023-10-29 08:00:47 25 4
gpt4 key购买 nike

我想将 View 从一个位置移动到另一个位置,我可以使用

self.view.center = CGPointMake(100, 200);

但是,如果项目使用了Autolayout,那么运行后 View 会回到原来的位置:

[self.view.superview setNeedsLayout];

那么如何将 View 实际移动到新位置?

最佳答案

启用 AutoLayout 后,我们应该FORGET FRAMES 并且只CONSIDER CONSTRAINTS。是的,对于动画,您也不能再更改框架或居中, View 将在调用布局时恢复到其原始位置。

相反,您应该考虑更改约束的常量值以获得相同的效果。

考虑如下图所示的用户界面。我有一个 ImageView ,其 20 points leading space from it's superview 这意味着它的 super View 具有水平空间约束。我还有三个更多约束附加到该 ImageView 、顶部、宽度和高度。

我将向您展示如何使图像从左到右动画化,如图所示。

为我们需要动画的约束创建 IBOutlet。这里我们只采用水平空间约束,这足以将此 View 从左移动到右。

@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalSpaceConstraint;

enter image description here

Go Away Action 中,我们需要更新这个约束的常量值。

- (IBAction)moveFrontAction:(id)sender {
self.horizontalSpaceConstraint.constant = 220;

[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}

现在 View 应该移到右端。我只是在动画 block 中这样做,这样我们就可以看到从左到右的漂亮动画,反之亦然。在生产中,我们不应该硬编码像这样的值(value)观。只是在这里这样做是为了使概念清晰。

enter image description here

Come Back Action 中,我们再次将常量重置回其原始值,因此您可以看到橙色图像动画回到原始位置。

- (IBAction)moveBackAction:(id)sender {
self.horizontalSpaceConstraint.constant = 20;

[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}

关于ios - 在自动布局的使用下动画/移动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com