iOS如何監(jiān)聽動(dòng)畫中view的frame UIView.animate

在使用UIView 動(dòng)畫的時(shí)候拯辙,想監(jiān)控view的一些動(dòng)畫屬性郭变,比如frame颜价、center 等,怎么辦呢诉濒? 也許你會(huì)說KVO吧周伦,你試試看,其實(shí)不行未荒。

試想如果在繪畫周期里面獲取一次是不是可行呢专挪, 使用CADisplayLink,它每秒固定可以執(zhí)行60次片排;然后每次執(zhí)行方法時(shí)在這個(gè)方法里面獲取view的展現(xiàn)層(presentationLayer)的frame寨腔。因?yàn)橹挥酗@示層發(fā)生的變化我們用戶才看得到,這時(shí)候frame才有意義率寡。

在動(dòng)畫開始時(shí)候啟用CADisplayLink進(jìn)行檢測(cè)迫卢,動(dòng)畫結(jié)束時(shí)候停止CADisplayLink。

// 監(jiān)聽MyView
- (void)startWatchMyView {
    [self stopWatchMyView];
    self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(watchMyViewAction)];
    [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}

- (void)watchMyViewAction {
    CALayer *presentationLayer = self.myView.layer.presentationLayer;
    [self handleMaskViewWithMyViewFrame:presentationLayer.frame];
}

// 停止監(jiān)聽MyView
- (void)stopWatchMyView {
    [self.displayLink invalidate];
    self.displayLink = nil;
    [self watchMyViewAction];
}

- (void)handleMaskViewWithMyViewFrame:(CGRect)myFrame {
    // 下面是根據(jù)myFrame 進(jìn)行其他相關(guān)view的繪制
    [self.myView setNeedsDisplay];
    
    // mask處理overlayView
    self.overlayView.maskFrame = myFrame;
    [self.overlayView setNeedsDisplay];
}


/////////// 觸發(fā)動(dòng)畫 ///////////////

- (void)adjustMyView {
    // 開始監(jiān)控MyView冶共,動(dòng)畫完成后停止監(jiān)控
    [self startWatchMyView];
    
    [UIView animateWithDuration:0.15 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
        self.myView.frame = self.clipFrame;
    } completion:^(BOOL finished) {
        // 停止監(jiān)控ClipAreaView
        [self stopWatchMyView];
        // 調(diào)整imageView 的位置
        [self adjustImageView];
    }];
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乾蛤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捅僵,更是在濱河造成了極大的恐慌家卖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庙楚,死亡現(xiàn)場(chǎng)離奇詭異上荡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)馒闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門榛臼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窜司,你說我怎么就攤上這事『饺啵” “怎么了塞祈?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)帅涂。 經(jīng)常有香客問我议薪,道長(zhǎng),這世上最難降的妖魔是什么媳友? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任斯议,我火速辦了婚禮,結(jié)果婚禮上醇锚,老公的妹妹穿的比我還像新娘哼御。我一直安慰自己坯临,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布恋昼。 她就那樣靜靜地躺著看靠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪液肌。 梳的紋絲不亂的頭發(fā)上挟炬,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音嗦哆,去河邊找鬼镀赌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛邻薯,可吹牛的內(nèi)容都是我干的备蚓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烁峭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼容客!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起约郁,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤缩挑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鬓梅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體供置,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年绽快,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芥丧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坊罢,死狀恐怖续担,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情活孩,我是刑警寧澤物遇,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站憾儒,受9級(jí)特大地震影響询兴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜起趾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一诗舰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧训裆,春花似錦眶根、人聲如沸蜀铲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝙茶。三九已至,卻和暖如春诸老,著一層夾襖步出監(jiān)牢的瞬間隆夯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工别伏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹄衷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓厘肮,卻偏偏與公主長(zhǎng)得像愧口,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子类茂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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