小论动画分析
2017-10-18 本文已影响0人
BoxDeng
一手指天,一手指地。
天就是网络, 天网呗
地,就是数据库
Code4App 动画分析, 好烂啊
Code4App上面找的动画,基本都是UIView 层的,简单的 设置属性,
非常的基础, 适合 初学者 练习。
觉得 比较好看的动画,
翻源码, 发现 :实现 很 Low, 工程性 很差。
+ (void)showTitle:(NSString *)title KRPopupViewModelArray:(NSMutableArray *)modelArray Target:(UIViewController<KRPopupViewCellDelegate> * )target{
KRPopupView * krPopupView = [[KRPopupView alloc] initWithFrame:CGRectMake(0, 20, kScreenWidth, kScreenHeight )];
UIViewController * vc = target;
[vc.view addSubview: krPopupView];
NSMutableArray * viewArray = [NSMutableArray new];
for (int i = 0; i < modelArray.count + 1; i++) {
if (i == 0) {
KRPopupHeaderView * headerView = [[[NSBundle mainBundle] loadNibNamed:@"KRPopupHeaderView" owner:self options:nil] firstObject];
headerView.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, KR_HEADERVIEW_HEIGHT);
headerView.alpha = 0.2f;
headerView.delegate = krPopupView;
headerView.titleLabel.text = title;
[viewArray addObject:headerView];
[krPopupView addSubview:headerView];
}else{
KRPopupViewCell * cell = [[[NSBundle mainBundle] loadNibNamed:@"KRPopupViewCell" owner:self options:nil] firstObject];
cell.frame = CGRectMake(0, kScreenHeight, kScreenWidth, 120);
cell.alpha = 0.2f;
cell.tag = i - 1;
cell.delegate = target;
cell.model = modelArray[i-1];
[viewArray addObject:cell];
[krPopupView addSubview:cell];
}
}
[krPopupView showWithViewArray:viewArray];
}
- (void)showWithViewArray:(NSMutableArray *)array{
static double durationTime;
durationTime = 0.0;
for (int i = 0; i < array.count; i++) {
if (i == 0) {
KRPopupHeaderView * headerView = [array firstObject];
[UIView animateWithDuration:KR_DURATION_TIME animations:^{
headerView.frame = CGRectMake(0, 0, kScreenWidth, KR_HEADERVIEW_HEIGHT);
headerView.alpha = 1.f;
}];
}else{
KRPopupViewCell * cell = array[i];
[UIView animateWithDuration:KR_DURATION_TIME delay:durationTime options:UIViewAnimationOptionCurveEaseOut animations:^{
cell.frame = CGRectMake(0, (i - 1) * KR_CELLVIEW_HEIGHT + KR_HEADERVIEW_HEIGHT, kScreenWidth, KR_CELLVIEW_HEIGHT);
cell.alpha = 1.f;
} completion:nil];
}
//增加延迟
durationTime += KR_DURATION_TIME - 0.1;
}
}