基本的 UIAnimation
Basic UIAnimation
这是一个非常基本的问题,但这是我第一次在应用程序中制作任何动画。
我有以下情况。显示带有一些文本的视图 1,并且在某个时间其他视图 2 和 3 应该在第一个视图上从顶部向下推动画。
目前我在故事板中使用自动布局。当我想要动画或继续使用它时,我应该停止这样做吗?
我是否必须以编程方式 add/update 约束或 show/hidden 视图?
我试过 show/hidden 但它似乎对我不起作用。尝试此操作时,我添加了所有视图(右图),然后将视图 2 和 3 设置为隐藏,希望底部视图自动上升,但这没有用...
我没有尝试手动设置约束,因为我以前从未做过。我对应该如何完成有一个基本的了解,但想先知道它是否可行?
我建立了一个非常基本的项目来说明我的答案。你可以找到它here。几乎所有事情都在 IB 中完成。左边的红色视图固定在屏幕顶部,并且此约束连接到 ViewController.m 中的 IBOutlet。其他视图的位置取决于左侧红色视图的位置。我们两次更改此约束的常量值 - 第一次是在 VC 已加载但尚未出现在屏幕上之后,将红色视图移出屏幕。第二次,当按下按钮时,我们将约束更改为原来的状态并强制使用动画进行布局。差不多就这些了。
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *redViewTopConstraint;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.redViewTopConstraint.constant = - ([UIScreen mainScreen].bounds.size.width * 0.3 + 20);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)action:(id)sender {
self.redViewTopConstraint.constant = 20;
[UIView animateWithDuration:0.5f delay:0 usingSpringWithDamping:0.65f initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
@end
这是一个非常基本的问题,但这是我第一次在应用程序中制作任何动画。
我有以下情况。显示带有一些文本的视图 1,并且在某个时间其他视图 2 和 3 应该在第一个视图上从顶部向下推动画。
目前我在故事板中使用自动布局。当我想要动画或继续使用它时,我应该停止这样做吗? 我是否必须以编程方式 add/update 约束或 show/hidden 视图?
我试过 show/hidden 但它似乎对我不起作用。尝试此操作时,我添加了所有视图(右图),然后将视图 2 和 3 设置为隐藏,希望底部视图自动上升,但这没有用...
我没有尝试手动设置约束,因为我以前从未做过。我对应该如何完成有一个基本的了解,但想先知道它是否可行?
我建立了一个非常基本的项目来说明我的答案。你可以找到它here。几乎所有事情都在 IB 中完成。左边的红色视图固定在屏幕顶部,并且此约束连接到 ViewController.m 中的 IBOutlet。其他视图的位置取决于左侧红色视图的位置。我们两次更改此约束的常量值 - 第一次是在 VC 已加载但尚未出现在屏幕上之后,将红色视图移出屏幕。第二次,当按下按钮时,我们将约束更改为原来的状态并强制使用动画进行布局。差不多就这些了。
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *redViewTopConstraint;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.redViewTopConstraint.constant = - ([UIScreen mainScreen].bounds.size.width * 0.3 + 20);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)action:(id)sender {
self.redViewTopConstraint.constant = 20;
[UIView animateWithDuration:0.5f delay:0 usingSpringWithDamping:0.65f initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
@end