2012-02-23 37 views
6

我已經搜索了谷歌和stackoverflow的所有文章,但我根本無法解決這個難題。 我試圖重新創建現在着名的待辦事項應用「清除」在添加新任務時的效果。他們有某種動畫,從頂部開始,新任務出現在某種3D立體效果中。他們的特殊之處在於,當您仔細觀察左右底角時,始終保持在同一個地方。UIView 3DCube like Clear-app

現在我有以下內容:設置點0,0的一個320x460 UIView和設置在點(0,-460)的一個320x460 UIView。我想要的是頂部的UIView以與頂部的Clear相同的立方體效果。這是我到目前爲止有:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    //startLoc is defined globally to remember the first position 
    startLoc = [[touches anyObject] locationInView:self]; 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint location = [[touches anyObject] locationInView:self]; 
    float difference = location.y-startLoc.y;   

    if(diff > 0 && diff < 90) 
    { 
     //Init the transform 
     CATransform3D transform = CATransform3DIdentity; 
     transform.m34 = perspective; 
     //Rotate (radians is a degree-to radians function) 
     transform = CATransform3DRotate(transform, radians(90-diff), 1.0f, 0.0f, 0.0f); 
     //Also translate the view down   
     transform = CATransform3DTranslate(transform, 0.0f, 230+diff, 0.0f); 
     //the 230 is necessary I think for the Anchorpoint but I'm not sure 
     secondView.layer.transform = transform; 
}  

}

它的工作原理莫名其妙,但不正確,只要我做的旋轉角度變得更大和左下和bottomright角落出來的視圖。如果我把視圖變小,然後做3Dscale,它也會搞砸。通過正確設置圖層的zPosition,我確實已經解決了一半圖像消失的問題,但這是我得到的。 我試過使用來自其他項目的代碼,但所有3D立方體效果與「清除」應用程序不一樣。唯一接近的就是iCarousel項目,但我無法從應用程序中使用正確的代碼,我無法使其正常工作。有人能幫我嗎?

回答

2
+0

嗨亞當,感謝您的鏈接,但不幸的是我昨天在搜索時看到了他們。正如我在帖子中所說的,他們在Clear應用中做了更特別的事情,這些帖子並沒有解釋他們是如何做到的。 – 2012-02-24 08:40:32

+0

Clear有什麼特別的特別之處。你只需要找出旋轉/平移/定位/ z位置等的正確組合。它看起來像我的錨點是視圖的底部中間,它最初圍繞x軸旋轉-90度(即朝向電話的「內部」)。然後當表格視圖向下滾動時,新視圖被翻譯下來以匹配現有內容的頂部,同時也被旋轉回與屏幕平行。 – UIAdam 2012-02-24 09:37:12

+0

好的,謝謝你的建議,我現在實際上使用了一個scrollview,並按照你所說的設置了定位點,它突然工作。當不使用滾動視圖時,圖像總是變大或變小,現在不再了!不管怎麼說,還是要謝謝你! – 2012-02-24 10:16:33