在使用TableView實現多級樹型menu這篇中,實現了多級Menu的現實 ,很多時候為了讓父菜單更有指示性,會在菜單中,加上向下向上箭頭,以表示其自菜單是否打開。一般會加上下面的動畫效果。 [cpp] [UIView animateWithDuration:0.25 animations:^(void){imageView.transform = CGAffineTransformRotate(imageView.transform, 3.1415926);} completion:^(BOOL finished){ //set default transform imageView.transform = CGAffineTransformMakeRotation(0); imageView.image = [UIImage imageNamed:@"new_chevron.png"]; }]; 其中需要這條 imageView.transform = CGAffineTransformMakeRotation(0); 因為在使用transform做動畫時,其轉換是會保存下來的,即使用該imageView下次重新打開圖片,其圖片時倒著的(因為我們已經把它旋轉了π個角度(180)),所以需要先講其旋轉回來,在載入新的圖片。 其次因為cell是會被重用的,使用一張圖片來回旋轉來實現時,不能把旋轉效果保存在imageView中(不建議該方法)。 在使用動畫效果時,發現了一個很奇怪的現象: 當使用系統的π #define M_PI 3.14159265358979323846264338327950288 /* pi */ 會出現設置復數是無法順針旋轉,可能會是位數過長造成了溢出,自己定義一個位數短些的π,如 #define ROTATION_M_PI 3.1415926