iOS 對象沿著指定路徑進行動畫

對象的動畫運動路徑設

以下方法可作為兩步實現:

以下方法在自定義view的類里面實現,可放在自定義函數中自行控制觸法横浑。也可放在drawRect或layoutSubviews里面讓view在顯 示時觸法集畅。但推薦放在自定義view中觸發(fā),因為這樣才可以做到自行控制,并保證同時只有一個在運行腌乡,否則會因為view的改變導致重繪,導致同時執(zhí)行多 個相同的動畫夜牡,會影響效果和耗費內存与纽。

一》讓view對象沿指定的路徑進行動畫的方法:

以下是指定路徑:

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

//Set some variables on the animation

pathAnimation.calculationMode = kCAAnimationPaced;

//We want the animation to persist - not so important in this case - but kept for clarity

//If we animated something from left to right - and we wanted it to stay in the new position,

//then we would need these parameters

pathAnimation.fillMode = kCAFillModeForwards;

pathAnimation.removedOnCompletion = NO;

pathAnimation.duration = 10;

//Lets loop continuously for the demonstration

pathAnimation.repeatCount = 10;

//Setup the path for the animation - this is very similar as the code the draw the line

//instead of drawing to the graphics context, instead we draw lines on a CGPathRef

//CGPoint endPoint = CGPointMake(310, 450);

CGMutablePathRef curvedPath = CGPathCreateMutable();

CGPathMoveToPoint(curvedPath, NULL, 10, 10);

CGPathAddQuadCurveToPoint(curvedPath, NULL, 10, 450, 310, 450);

CGPathAddQuadCurveToPoint(curvedPath, NULL, 310, 10, 10, 10);

//Now we have the path, we tell the animation we want to use this path - then we release the path

pathAnimation.path = curvedPath;

CGPathRelease(curvedPath);

在指定路徑后,指定動畫的對象塘装,(在此用UIImageView舉例:)

UIImageView *circleView = [[UIImageView alloc] initWithImage:circle];

circleView.frame = CGRectMake(1, 1, 40, 40);

[self addSubview:circleView];

//Add the animation to the circleView - once you add the animation to the layer, the animation starts

[circleView.layer addAnimation:pathAnimation

forKey:@"moveTheSquare"];

二>.若要把指定的路徑以線條或其他方法顯示出來急迂,則要繪制路徑,方法是:

UIGraphicsBeginImageContext(CGSizeMake(320,460));

CGContextRef ctx = UIGraphicsGetCurrentContext();

//Set variables in the context for drawing

CGContextSetLineWidth(ctx, 1.5);

CGContextSetStrokeColorWithColor(ctx, [UIColor whiteColor].CGColor);

//Set the start point of your drawing

CGContextMoveToPoint(ctx, 10, 10);

//The end point of the line is 310,450 .... i'm also setting a reference point of 10,450

//A quadratic bezier curve is drawn using these coordinates - experiment and see the results.

CGContextAddQuadCurveToPoint(ctx, 10, 450, 310, 450);

//Add another curve, the opposite of the above - finishing back where we started

CGContextAddQuadCurveToPoint(ctx, 310, 10, 10, 10);

//Draw the line

CGContextDrawPath(ctx, kCGPathStroke);

若要繪制圖片背景(直接添加即可)蹦肴,則:

//With the image, we need a UIImageView

UIImage *image = [UIImage imagewithName:@"a.png"];

UIImageView *curveView = [[UIImageView alloc] image];

//Set the frame of the view - which is used to position it when we add it to our current UIView

curveView.frame = CGRectMake(1, 1, 320, 460);

curveView.backgroundColor = [UIColor greenColor];

[self addSubview:curveView];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末僚碎,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子阴幌,更是在濱河造成了極大的恐慌勺阐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裂七,死亡現場離奇詭異皆看,居然都是意外死亡,警方通過查閱死者的電腦和手機背零,發(fā)現死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門腰吟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徙瓶,你說我怎么就攤上這事毛雇。” “怎么了侦镇?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵灵疮,是天一觀的道長。 經常有香客問我壳繁,道長震捣,這世上最難降的妖魔是什么荔棉? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蒿赢,結果婚禮上润樱,老公的妹妹穿的比我還像新娘。我一直安慰自己羡棵,他們只是感情好壹若,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著皂冰,像睡著了一般店展。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秃流,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天赂蕴,我揣著相機與錄音,去河邊找鬼剔应。 笑死睡腿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的峻贮。 我是一名探鬼主播席怪,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纤控!你這毒婦竟也來了挂捻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤船万,失蹤者是張志新(化名)和其女友劉穎刻撒,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體耿导,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡声怔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了舱呻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醋火。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箱吕,靈堂內的尸體忽然破棺而出芥驳,到底是詐尸還是另有隱情,我是刑警寧澤茬高,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布兆旬,位于F島的核電站,受9級特大地震影響怎栽,放射性物質發(fā)生泄漏丽猬。R本人自食惡果不足惜宿饱,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宝鼓。 院中可真熱鬧刑棵,春花似錦巴刻、人聲如沸愚铡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沥寥。三九已至,卻和暖如春柠座,著一層夾襖步出監(jiān)牢的瞬間邑雅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工妈经, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淮野,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓吹泡,卻偏偏與公主長得像骤星,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爆哑,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容

  • 以下方法可作為兩步實現: 以下方法在自定義view的類里面實現洞难,可放在自定義函數中自行控制觸法。也可放在drawR...
    Legendary閱讀 1,080評論 0 1
  • 我有一個背包 我和它一起走了很長的路 我的背包很輕很輕 媽媽說別往里面裝太多東西 在前行的路上 許多的更多的 看著...
    李唐的小詩閱讀 214評論 0 0
  • 七言古絕·頌友三 民不畏死死何懼揭朝, 人若貪生生可歡队贱? 拍案而出悲公仆, 一腔熱血斥青天潭袱! 注:聞一多字友三柱嫌;公...
    任爾風云我自逍閱讀 155評論 9 5
  • 每次回老家看著侄女們的幾個孩子在家里為一根火腿腸编丘,一個玩具,爭得不可開交時趟径,就對他們一頓大吼:“不要在家里鬧了瘪吏,出...
    夏冰日記閱讀 589評論 4 3
  • 我的家鄉(xiāng)在龍舟之鄉(xiāng)——沙田幕屹,沙田最美的地方就是濱江路蓝丙。濱江路是一條美麗的臨江靠漁港的水鄉(xiāng)路级遭。東起港口大道中心...
    語歌晨唱閱讀 1,135評論 0 1