前言
前幾天做項(xiàng)目遇到一個(gè)問題,一個(gè)之前同事用xib寫的彈框待德,需要加一個(gè)縮放的動(dòng)畫效果君丁,結(jié)果我用普通的改變frame的方法對(duì)其進(jìn)行移動(dòng)和縮放時(shí),其內(nèi)部的部分view沒有隨著父視圖縮放将宪,最后用CGAffine Transform解決該問題绘闷。
CGAffineTransformMakeTranslation
位移效果:有兩個(gè)參數(shù),分別是x较坛、y坐標(biāo)的偏移量
[UIView animateWithDuration:1 animations:^{
_testView.transform = CGAffineTransformMakeTranslation(100, 100);
}];
CGAffineTransformMakeScale
等比縮放效果:兩個(gè)參數(shù)印蔗,別是長(zhǎng)、寬的縮放比例
[UIView animateWithDuration:1 animations:^{
_testView.transform = CGAffineTransformMakeScale(2.0f, 2.0f);
_testView.transform = CGAffineTransformMakeScale(1.0, 1.0);
}];
CGAffineTransformMakeRotation
旋轉(zhuǎn)效果:一個(gè)參數(shù)丑勤,轉(zhuǎn)的角度华嘹,用一個(gè)π的宏定義M_PI
[UIView animateWithDuration:1.0f animations:^{
CGAffineTransform transform1 = CGAffineTransformMakeRotation(M_PI_2);
CGAffineTransform transform2 = CGAffineTransformScale(transform1, 0.5, 0.5);
_testView.transform = CGAffineTransformTranslate(transform2, 100, 100);
}];
CGAffineTransformConcat
組合動(dòng)畫:參數(shù)是兩個(gè)CGAffineTransform,也就是說可以同時(shí)執(zhí)行兩個(gè)參數(shù)的動(dòng)畫效果
[UIView animateWithDuration:0.5 animations:^{
weakPopLoginView.middleView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(0.01f, 0.01f), CGAffineTransformMakeTranslation(gifPoint.x - centerPoint.x, gifPoint.y - centerPoint.y));
weakPopLoginView.alpha = 0;
}];