在应用程序中,我正在用户点击桌面视图,从“缩略图”或微缩视图将其缩放到完整视图。一切都很好,除了有点烦人的动画故障或其他什么。问题是我正在使用下面的代码:
if ([subview respondsToSelector:@selector (name)] && [subview.name isEqualToString:self.labelListName.text])
{
[self.tabBarController.view addSubview:subview];
CGRect frame = CGRectMake(35, 78, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
subview.frame = frame;
CGAffineTransform scale = CGAffineTransformMakeScale(1.39, 1.39);
CGAffineTransform move = CGAffineTransformMakeTranslation(0,44);
CGAffineTransform transform = CGAffineTransformConcat(scale, move);
[UIView animateWithDuration:0.15
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
subview.transform = transform;
}
completion:^(BOOL finished){ [self goToList],subview.hidden = YES; }];
}
- (void)goToList
{
self.gotoWishList = [[WishList alloc] initWithNibName:@"WishList" bundle:nil];
self.gotoWishList.hidesBottomBarWhenPushed=YES;
self.gotoWishList.name = self.labelListName.text;
[self.navigationController pushViewController:self.gotoWishList animated:NO];
self.gotoWishList.scrollLists = self;
[WishList release];
}
在进行动画制作时,缩放视图与用户要与之交互的实际视图之间的转换并不完美。在视图之间切换时,单元格内的文本会略微跳转。问题在于翻译矩阵。如果我跳过它我可以让动画完美地工作,但当然我需要在GUI中向下移动微缩视图,这不是一个选项。如果我改为以另一个顺序(移动,缩放)进行动画,那么它会更好。我最后还是跳了一下,但看起来更好,因为一切都跳了......而不仅仅是文字。
所以...基本上我的问题是如何让这个动画流畅。我读到CGAffineTransformConcat仍然分别完成每个动画,我真的需要两个动画(缩放和移动列表)成为一个流畅的动画。
感谢您的任何提示!
答案 0 :(得分:0)
我认为您必须嵌套视图/图形上下文才能获得所需内容。动画系统不支持同时动画,因为这样做的数学需要指数量的计算能力。您可以通过滑动一个视图同时放大另一个视图来欺骗它。
我不确定,因为我从来没有需要尝试过。
您可能也会从桌面视图中获取一个混蛋或跳过。如果您在运行中彻底调整表格大小,则滚动顶部和末尾的反弹可以产生效果。我会把所有这些都关掉,看看你是否还有问题。您可能还希望独立于tableview测试视图,以确保问题与动画有关,而不是tableview移动本身。