gpt4 book ai didi

ios - 约束动画问题

转载 作者:行者123 更新时间:2023-11-29 12:05:21 25 4
gpt4 key购买 nike

我正在构建一个应用程序,但我遇到了一个奇怪的约束问题。

我正在尝试为 Storyboard中附加到 UIView 的高度约束设置动画,但模拟器显示了一些奇怪的行为。为了进行调试,我创建了一个全新的 iOS 9.2 项目并添加了一个 UIButton,为它设置了一个水平图钉和 superview 顶部约束,将顶部约束链接到我的头文件,并将按钮本身链接到一个IBAction.

单独调用这段代码时:

- (IBAction)myAction:(id)sender {
self.topConstraint.constant += 150.0f;
}

即使没有调用 [self.view layoutIfNeeded];,按钮也会向下移动 150 点。

但是,当我使用这段代码时:

- (IBAction)myAction:(id)sender {
self.topConstraint.constant += 150.0f;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:1 animations:^{
[self.view layoutIfNeeded];
}];
}

按钮向下滑动。

当没有动画 block 时,为什么我没有调用 layoutIfNeeded 就捕捉到那里?我觉得这很奇怪。

这是我的头文件:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;

@end

还有我的顶级 NSLayoutConstraint 设置:

enter image description here

以及界面生成器中的 UIViewController: enter image description here

最佳答案

在 View 上调用 layoutIfNeeded 只会强制提前更新 View ,而不是等待整个绘图周期的更新,当您为约束设置动画时,您将 layoutIfNeeded 放置在动画 block 内,从而为更改设置动画,在第二个在您不调用 layoutIfNeeded 的实例中,绘图周期开始并在没有动画的情况下更新 View 。

关于ios - 约束动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225776/

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