约束动画问题
Constraint animation issue
我正在构建一个应用程序,但我遇到了一个奇怪的约束问题。
我正在尝试为故事板中附加到 UIView
的高度约束设置动画,但模拟器显示了一些奇怪的行为。为了进行调试,我创建了一个全新的 iOS 9.2 项目并添加了一个 UIButton
,为其设置了一个水平图钉和超级视图顶部约束,将顶部约束链接到我的头文件并将按钮本身链接到一个 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];
}];
}
按钮向下滑动
为什么没有动画块,我不调用layoutIfNeeded
就卡在那里?我觉得很奇怪。
这是我的头文件:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;
@end
我的顶级 NSLayoutConstraint
设置:
以及界面生成器中的 UIViewController
:
在视图上调用 layoutIfNeeded 只会强制提前更新视图,而不是等待整个绘图周期的更新,当您为约束设置动画时,您将 layoutIfNeeded 放置在动画块内,从而为更改设置动画,在在您不调用 layoutIfNeeded 的第二个实例中,绘图周期出现并更新没有动画的视图。
我正在构建一个应用程序,但我遇到了一个奇怪的约束问题。
我正在尝试为故事板中附加到 UIView
的高度约束设置动画,但模拟器显示了一些奇怪的行为。为了进行调试,我创建了一个全新的 iOS 9.2 项目并添加了一个 UIButton
,为其设置了一个水平图钉和超级视图顶部约束,将顶部约束链接到我的头文件并将按钮本身链接到一个 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];
}];
}
按钮向下滑动
为什么没有动画块,我不调用layoutIfNeeded
就卡在那里?我觉得很奇怪。
这是我的头文件:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;
@end
我的顶级 NSLayoutConstraint
设置:
以及界面生成器中的 UIViewController
:
在视图上调用 layoutIfNeeded 只会强制提前更新视图,而不是等待整个绘图周期的更新,当您为约束设置动画时,您将 layoutIfNeeded 放置在动画块内,从而为更改设置动画,在在您不调用 layoutIfNeeded 的第二个实例中,绘图周期出现并更新没有动画的视图。