iOS刷新控件的旋轉(zhuǎn)效果

思想:用一個貝塞爾曲線畫一個圓讹开,然后用一個CAShapLayer對象的路徑等于貝塞爾曲線的路徑寄锐。將這個layer對象做為當前視圖的子layer击蹲,然后在做旋轉(zhuǎn)動畫毡琉。
<h4>旋轉(zhuǎn)動畫一定要加到當前的view.layer上</h4>
總的來說就是旋轉(zhuǎn)這個view而不是旋轉(zhuǎn)這個CAShapLayer對象


#import "MyView.h"

#define SIZE_RADIUS_WIDTH   30
@interface MyView ()

@property (nonatomic , strong) UIView *toast;

@property (nonatomic, strong)UIView *rotateView;

@property (nonatomic, strong)CAShapeLayer *rotateLayer;


@end

@implementation MyView


- (void)drawRect:(CGRect)rect {
    
//    _toast = [[UIView alloc] initWithFrame:CGRectMake((rect.size.width - toastWidth) / 2, (rect.size.height - toastWidth) / 2 , toastWidth, toastWidth)];
//    _toast.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.8];
//    _toast.layer.cornerRadius = 10;
//
//    [self addSubview:_toast];

//    
//    _rotateLayer = [CAShapeLayer layer];
//    _rotateView = [[UIView alloc] initWithFrame:CGRectMake((_toast.frame.size.width - 2 * SIZE_RADIUS_WIDTH) / 2, (_toast.frame.size.height - 2 * SIZE_RADIUS_WIDTH) / 2, 2 * SIZE_RADIUS_WIDTH, 2 * SIZE_RADIUS_WIDTH)];
//    _rotateView.backgroundColor = [UIColor cyanColor];
//    NSLog(@"%@",NSStringFromCGRect(_rotateView.frame));
//
//    [_toast addSubview:_rotateView];
//    
//     UIBezierPath *pathRotate= [UIBezierPath bezierPathWithArcCenter:CGPointMake(SIZE_RADIUS_WIDTH, SIZE_RADIUS_WIDTH) radius:SIZE_RADIUS_WIDTH startAngle:- M_PI_2 endAngle:( M_PI) clockwise:YES];
//    _rotateLayer = [CAShapeLayer layer];
//    _rotateLayer.path = pathRotate.CGPath;
//    _rotateLayer.fillColor = [UIColor clearColor].CGColor;
//    _rotateLayer.strokeColor = [UIColor whiteColor].CGColor;
//    _rotateLayer.lineWidth = 3;
//    _rotateLayer.lineCap = kCALineCapRound;
//    [_rotateView.layer addSublayer:_rotateLayer];
//    
//    CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
////    rotateAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
//    rotateAnimation.fromValue = @0;
//    rotateAnimation.toValue = @(2*M_PI);
//
//    rotateAnimation.duration = 3;
//    rotateAnimation.repeatCount = HUGE;
//    rotateAnimation.removedOnCompletion = NO;
//    [_rotateView.layer addAnimation:rotateAnimation forKey:nil];
//
    
    
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(rect.size.height/2, rect.size.height/2) radius:60 startAngle:-M_PI_2 endAngle:M_PI clockwise:YES];
    
    _rotateLayer = [CAShapeLayer layer];
    _rotateLayer.path = path.CGPath;
    _rotateLayer.fillColor = [UIColor clearColor].CGColor;
    _rotateLayer.strokeColor = [UIColor purpleColor].CGColor;
    _rotateLayer.lineWidth = 3;
    _rotateLayer.lineCap = kCALineCapRound;
    [self.layer addSublayer:_rotateLayer];


    CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotateAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
    rotateAnimation.fromValue = @0;
    rotateAnimation.toValue = @(2*M_PI);

    rotateAnimation.duration = 3;
    rotateAnimation.repeatCount = HUGE;
    rotateAnimation.removedOnCompletion = NO;
    [self.layer addAnimation:rotateAnimation forKey:nil];

    

    
    
    
}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末要尔,一起剝皮案震驚了整個濱河市舍杜,隨后出現(xiàn)的幾起案子赵辕,更是在濱河造成了極大的恐慌既绩,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件还惠,死亡現(xiàn)場離奇詭異饲握,居然都是意外死亡,警方通過查閱死者的電腦和手機蚕键,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門救欧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锣光,你說我怎么就攤上這事笆怠。” “怎么了誊爹?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵蹬刷,是天一觀的道長。 經(jīng)常有香客問我替废,道長箍铭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任椎镣,我火速辦了婚禮诈火,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘状答。我一直安慰自己冷守,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布惊科。 她就那樣靜靜地躺著拍摇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪馆截。 梳的紋絲不亂的頭發(fā)上充活,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天蜂莉,我揣著相機與錄音,去河邊找鬼混卵。 笑死映穗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的幕随。 我是一名探鬼主播蚁滋,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赘淮!你這毒婦竟也來了辕录?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤梢卸,失蹤者是張志新(化名)和其女友劉穎走诞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體低剔,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡速梗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡体斩,死狀恐怖晚伙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拷窜,我是刑警寧澤开皿,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站篮昧,受9級特大地震影響赋荆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懊昨,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一窄潭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酵颁,春花似錦嫉你、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至簿姨,卻和暖如春距误,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工准潭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攘乒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓惋鹅,卻偏偏與公主長得像则酝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闰集,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果沽讹,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌武鲁。在這里你可以看...
    每天刷兩次牙閱讀 8,469評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果爽雄,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌沐鼠。在這里你可以看...
    F麥子閱讀 5,101評論 5 13
  • 前言 本文只要描述了iOS中的Core Animation(核心動畫:隱式動畫挚瘟、顯示動畫)、貝塞爾曲線饲梭、UIVie...
    GitHubPorter閱讀 3,607評論 7 11
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評論 25 707
  • 展信悅 你好憔涉,C先生订框。距離我們分開已經(jīng)臨近一個月了。 這一個月過得就像在時間輪軸里緩緩爬過地痕跡一樣輕淺兜叨,又如同阿...
    Pitbull閱讀 982評論 3 2