2010-11-18 49 views
1

在应用程序中,我正在处理用户在桌面视图上点击以将其缩放为从“缩略图”或微型视图全视图。除了有点烦人的动画故障或其他问题之外,一切都很好。事情是我用下面的代码:CGAffineTransformConcat的替代

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

我认为你必须嵌套views/graphic-context才能得到你想要的。动画系统不支持同时动画,因为这样做的数学需要指数级的计算能力。您可以通过滑动一个视图并放大其他视图来欺骗它。

我不确定,因为我从来没有需要尝试它。

你可能会得到一个混蛋或从tableview本身跳过。如果您在桌面上动态调整大小,则卷轴顶部和底部的反弹可能会产生影响。我会把这一切都关掉,看看你是否仍然有问题。您可能还想在独立于tableview的视图上进行测试,以确保问题出在动画之上,而不是tableview自身移动。

+0

嗯,我试图在UI中向下移动tableview,这样就可以将它缩放到全尺寸而不必移动它,动画工作正常,然后(仅缩放,不翻译)。没有任何工件或任何东西。 – Glitch 2010-11-18 19:16:40