2010-11-18 51 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