專案的任務,需要實現乙個類似於下圖的翻轉動畫,在翻轉的同時,還要進行改變。翻轉過去用時1秒,翻轉回來用時1秒,展示3秒
single.gif
-(void)starttransformanimation completion:^(bool finished) completion:^(bool finished) else{
[btn.topimage sd_setimagewithurl:[nsurl urlwithstring:((functionmodel*)self.imgarr[3]).icon]];
btn.topimage.tag = 1001;
後來產品提出需求:可配置執行動畫的按鈕,多個按鈕同時執行動畫
double.gif
上面的方法肯定是不行了,使用cakeyframeanimation來實現
* 翻轉動畫
- (void)layerrotation {
weakself(weakself)
for (int i=0; i<8; i++) {
custombtn *btn = [_banner viewwithtag:20+i];
[self addlayerrotationwithbtn:btn];
///第一次切換
dispatch_after(dispatch_time(dispatch_time_now,(int64_t)(1.0* nsec_per_sec)),dispatch_get_main_queue(),^{
for (int i=0; i<8; i++) {
custombtn *btn = [_banner viewwithtag:20+i];
[weakself changeimgwithbtn:btn];
///迴圈動畫
dispatch_after(dispatch_time(dispatch_time_now,(int64_t)(5.0* nsec_per_sec)),dispatch_get_main_queue(),^{
[weakself layerrotation];
動畫實現
- (void)addlayerrotationwithbtn:(custombtn *)btn {
cakeyframeanimation *keyanimation = [cakeyframeanimation animation];
// 旋轉角度, 其中的value表示影象旋轉的最終位置
keyanimation.values = [nsarray arraywithobjects:
[nsvalue valuewithcatransform3d:catransform3dmakerotation(0, 0,1,0)],
[nsvalue valuewithcatransform3d:catransform3dmakerotation((m_pi/2), 0,1,0)],
[nsvalue valuewithcatransform3d:catransform3dmakerotation(0, 0,1,0)],
[nsvalue valuewithcatransform3d:catransform3dmakerotation(0, 0,1,0)],
nil];
keyanimation.keytimes = @[@(0),@(0.2),@(0.4),@(1.0)];//每乙個的取值範圍是0-1
keyanimation.duration = 5.0 ;
keyanimation.repeatcount = 1;
[btn.topimage.layer addanimation:keyanimation forkey:@"transform"];
ios 文字翻轉 ios 一 翻轉動畫
專案的任務,需要實現乙個類似於下圖的翻轉動畫,在翻轉的同時,還要進行改變。目標動畫 最開始,直接使用uiview的動畫。很簡單 void viewanimation else completion bool finished void changeimg if imageview.tag 101 e...
iOS 字串翻轉
記錄一次面試題 i am a boy。翻轉成 boy。a am i 保留空格 import nsstring reverse.h implementation nsstring reverse 翻轉字串 return 待發展字串 nsstring reversestring return marra...
iOS中UIView翻轉效果實現
新建乙個view based模板工程,在viewcontroller檔案中新增下面的 即可實現翻轉效果 void viewdidload super viewdidload 需要翻轉的檢視 uiview parentview uiview alloc initwithframe cgrectmake...