1. 程式人生 > >監聽UIView animation的動畫過程

監聽UIView animation的動畫過程

今天遇到個場景,是在UIView做動畫效果期間顯示進度和百分比,之後發現UIView包括block方法在內的都沒有動畫移動過程之間的回撥,查閱後可使用NSTimer來獲取

_progressTimer = [NSTimertimerWithTimeInterval:0.01target:selfselector:@selector(testAction) userInfo:nilrepeats:YES];

    [[NSRunLoopcurrentRunLoop] addTimer:_progressTimerforMode:NSRunLoopCommonModes];

_progressTimer是個全域性的timer,新增到NSRunLoop裡後通過它的訊息處理機制來監聽目標屬性的改變,testAction是執行方法

- (void)testAction

{

CALayer *layer = _progressView.layer.presentationLayer;

_yesLabel.text = [NSStringstringWithFormat:@"我喜歡 %.2f%@", (100*layer.bounds.size.width)/ScreenSize().width, @"%"];

_noLabel.text = [NSStringstringWithFormat:@"一般 %.2f%@", 100 - (100*layer.bounds.size.width)/ScreenSize().width, @"%"

];

}

在testAction方法裡,通過presentationLayer屬性來獲取到物件的CALayer,之後處理想要的結果,記得在實行完畢後幹掉timer,下面是動畫執行的方法

    [UIViewanimateWithDuration:1

animations:^{

_progressView.frame = CGRectMake(0, 0, self.frame.size.width/100.0*self.progress, self.frame.size.height);

    }

completion:^(BOOL finished){

if (_progressTimer) {

                             [

_progressTimerinvalidate];

_progressTimer = nil;

                         }

    }];



相關推薦

UIView animation動畫過程

今天遇到個場景,是在UIView做動畫效果期間顯示進度和百分比,之後發現UIView包括block方法在內的都沒有動畫移動過程之間的回撥,查閱後可使用NSTimer來獲取 _progressTime

記錄一次處理https不正確的過程

負載均衡 https 502 nginx 金山雲 今天開發反饋在測試金山雲設備的時候遇到了這樣的一個現象:wget https://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_201707260850

Android學習筆記1:基於的事件處理過程

基於監聽的事件處理過程 記錄一:安卓介面互動處理事件的兩個方式 (1)基於監聽的事件處理 (2)基於回撥的事件處理 基於回撥的事件處理日後再寫,先學習基於監聽的事件處理 通常以下步驟: (1)例項化物件 (2)為事件源物件新增監聽器物件,例如set...List

Android Animation動畫結束的方法

public void mmswoon(){          imageView.setBackgroundResource(R.anim.mmswoon);          AnimationDrawable animationDrawable = (AnimationDrawable)imageVie

oracle11G 已開啟,但遠程連接依舊無解決過程

無法 無法啟動 col min 進入 排查 安裝 ner start 1、連接數據庫顯示無監聽程序,首先查看服務器的oracle監聽服務是否開啟,服務名稱:OracleOraDb11g_home1TNSListener(具體環境中可能不完全一樣,但是認準TNSListene

不浮誇且不單調——鼠標圖片移動動畫

pla 500px -s weixin .cn z-index 移動圖片 att cte 鼠標監聽實現圖片動畫   這是一個小的動畫,監聽鼠標的移動,來實現 圖片的移動視覺特效。雖然功能不是那麽的強大,但應用

UIView動畫UIView Animation總結

今天總結一下UIView動畫就是 UiView動畫是基於高層API封裝進行封裝的,對UIView的屬性進行修改時候所產生的動畫. 基本動畫 下面兩種方法是最常用的兩種. + (void)animateWithDuration:(NSTimeInterval)duration&n

學習Android過程中遇到的問題及解決方法——電話

也許有時你會有這樣一個需求:通電話時有一個重要的事需要記下來或者和一個陌生人特別是大騙子通話時,這是就想如果能把通話錄下來就方便多了。(這才是我寫這個程式碼的目的!!!) 在此過程中,犯了一個很大的錯誤。對電話狀態還不熟悉就開始程式設計,使得我就算編寫正確也出現各種bug。 先將程式碼列出來,供大家參考,

使用屬性動畫實現圖片對角線移動

程式碼塊: WindowManager wm = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new Dis

Windows 2012 R2 Server伺服器Oracle安裝過程中ORA-12514:TNS 問題

一、修改資料庫伺服器中listener.ora檔案內容 路徑: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora # listener.ora Network Configuration File:

iOS 關於手機截圖,UIView生成UIImage, UIImage裁剪與壓縮的總結

一.  關於監聽手機截圖 1. 背景: 發現商品的售價頁總是被人轉發截圖,為了方便使用者新增截圖分享的小功能 首先要註冊使用者截圖操作的通知 - (void)viewDidLoad { [super viewDidLoad]; //註冊使用者的截圖操作通知 [[N

Spring啟動過程中Application事件的與處理.md

這篇部落格是解決一個實際問題,在解決過程中梳理SpringApplicationEvent的執行機制和使用方法。這個問題是,微服務架構下,需要依次啟動多個服務,服務之間存在執行時的依賴關係,必須保證多個服務的啟動順序。所以決定從Spring的Application事件入手。 1.Ap

Spring 的事件 ApplicationListener 和 ApplicationEvent 用法及呼叫過程詳解

ApplicationListener呼叫過程詳解: https://blog.csdn.net/u014263388/article/details/78996509 使用場景 在一些業務場景中,當容器初始化完成之後,需要處理一些操作,比如一些資料的載入、初始化快取、特定任務的註冊等等。這

oracle11G 已開啟,但遠端連線依舊無解決過程

1、連線資料庫顯示無監聽程式,首先檢視伺服器的oracle監聽服務是否開啟,服務名稱:OracleOraDb11g_home1TNSListener(具體環境中可能不完全一樣,但是認準TNSListener是沒錯的) 2、本地使用127.0.0.1可以連線,但使用本機IP則

RecyclerView滑動實現button消失與展現動畫

需求說明: 由於介面大小限制,我們寫完listview或者recyclerView展現圖片後已經佔據了整個螢幕,螢幕下方還有個button,我們需要在滑動圖片的時候button隱藏,出現圖片的時候展現button。 需求分析: 一、給receycleview新增滑動監聽事件

android藍芽開啟關閉過程

在開啟藍芽時,一般藍芽的開啟都需要一個過程,而且有些機型還會開啟失敗,所以就要監測藍芽的開啟過程,下面給出程式碼: 建立一個BluetoothListenerReceiver. public class BluetoothListenerReceiver extends BroadcastRec

android Button使用者互動——機制呼叫過程

一、使用者互動——即對使用者的操作進行響應 android的事件處理機制: 1.基於監聽的事件處理機制 2.基於回撥的事件處理機制 監聽機制的好處:傳統的順序程式設計總是按照流程來安排工作,而事件機制的特點在於:等待,如果有事情發生則處理,順序程式設計在沒有事情的時候也迴圈

屬性動畫03-animatorset和事件(打輔助)

如果一個物件需要同時執行多個動畫效果,在屬性動畫中可以藉助PropertyValuesHoler或者AnimatorSet這兩個類來實現,二者相對比AnimatorSet能力更加強一些. PropertyValuesHoler的使用 public

設定動畫結束的事件

在專案中,今天就遇到了動畫還沒結束就跳到下個介面,這很顯然是糊弄不了客戶——.——無奈 於是就找解決方案,很顯然最好的方案就是監聽動畫結束 解決辦法:主要利用SetAnimationLisener 給imageview的準備setAnimation的那個動畫,設定一個Set

Android屬性動畫欣賞——ObjectAnimator與動畫事件

傳統動畫的侷限 傳統動畫(Animation)只是重繪動畫(就是不斷的呼叫相應的方法重繪,會耗費CPU資源),改變其顯示位置,但是真正能響應事件的位置還在原處。因此不適宜做具有互動的動畫效果,僅僅用來做一些顯示性的效果。(包括位移、旋轉、縮放、透明度四種動畫)