use*_*717 22 cocoa-touch ios autolayout
我想将视图从一个位置移动到另一个位置,我可以使用它来实现它
self.view.center = CGPointMake(100, 200);
Run Code Online (Sandbox Code Playgroud)
但是,如果项目使用的是Autolayout,则视图将在运行后返回到原始位置:
[self.view.superview setNeedsLayout];
Run Code Online (Sandbox Code Playgroud)
然后如何实际将视图移动到新位置?
RJR*_*RJR 32
与AutoLayout启用,我们应该FORGET FRAMES和只CONSIDER CONSTRAINTS.没错,对于动画也可以不再更改框架或中心,当布局被称为视图的将恢复到原来的位置.
相反,你应该consider changing the constant value of the constraint得到相同的效果.
考虑一个用户界面,如下面给出的图像.我有一个图像视图,20 points leading space from it's superview这意味着它有一个水平空间约束与它的superview.Also我有三个附加到该图像视图,顶部,宽度和高度的约束.
我将向您展示如何从左到右为图像设置动画,如图所示.
为我们需要动画的约束创建IBOutlet.这里我们只采用水平空间约束,这足以将此视图从左向右移动.
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalSpaceConstraint;
Run Code Online (Sandbox Code Playgroud)

在内部Go Away操作中,我们需要更新此约束的常量值.
- (IBAction)moveFrontAction:(id)sender {
self.horizontalSpaceConstraint.constant = 220;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
Run Code Online (Sandbox Code Playgroud)
现在应该将视图移动到右端.我只是在动画块中执行此操作,因此我们将能够从左到右看到一个漂亮的动画,反之亦然.在制作中,我们不应该硬编码像这样的值这只是为了使概念清晰明白.

在Come Back动作中,我们再次将常量重置为原始值,因此您可以看到橙色图像动画回原始位置.
- (IBAction)moveBackAction:(id)sender {
self.horizontalSpaceConstraint.constant = 20;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10882 次 |
| 最近记录: |