1. 程式人生 > >iOS學習階段總結-b20120920-多媒體動畫

iOS學習階段總結-b20120920-多媒體動畫

UIImageView內建的動畫功能

UIImageView.animationImages:儲存UIImage的一個數組,實用NSArray.arrayWithObjects建立;

UIImageView.animationDuration:所有圖片播放一次的總時間;

UIImageView.animationRepeatCount:重複播放次數,值為0時表示持續播放;

UIImageView.startAnimating:開始播放;

隨機動畫效果(小專案Snow):

隨機數:random(),生成[MIN,MAX]之間的一個隨機數 (random()%(MAX-MIN)) + MIN

定時函式:NSTimer.scheduledTimerWithTimeInterval;

關鍵程式碼

[SnowViewController.m]viewDidLoad

//設定螢幕背景顏色,淺藍色

self.view.backgroundColor = [UIColor colorWithRed:0.5 green:0.5 blue:1 alpha:1];

//開啟定時器,每隔0.05秒執行一次onTimer函式

[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];

定時函式onTimer

- (void)onTimer {
    UIImage *snowImage = [UIImage imageNamed:@"snow.png"];
    UIImageView *view = [[UIImageView alloc] initWithImage:snowImage];
    [snowImage release];

    //隨機開始位置,結束位置,大小,速度
    int startX = random()%320;
    int endX = random()%320;
    int width = random()%MAX_SIZE;//#define定義
    int time = (random()%(MAX_TIME - MIN_TIME)) + MIN_TIME;//同上
    
    //開始位置
    view.frame = CGRectMake(startX,-1*MAX_SIZE,width,width);//從螢幕上沿出現
    view.alpha = 0.25;//半透明

    [self.view addSubview:view];

    [UIView beginAnimations:nil context:nil];

    //速度
    [UIView setAnimationDuration:time];

    //結束位置
    view.frame = CGRectMake(endX,480,width,width);
    [UIView commitAnimations];
}

程式執行一段時間後,會出現記憶體溢位

解決記憶體溢位:註冊動畫的結束事件,在動畫停止時,回收UIImageView

在上面onTimer函式中commitAnimations之前加入下面程式碼

[UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];

[UIView setAnimationDelegate:self];

事件處理:

- (void)onAnimationComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    UIImageView *snowView = context;
    [snowView removeFromSuperview];
    [snowView release];
}


相關推薦

iOS學習階段總結-b20120920-多媒體動畫

UIImageView內建的動畫功能 UIImageView.animationImages:儲存UIImage的一個數組,實用NSArray.arrayWithObjects建立; UIImageView.animationDuration:所有圖片播放一次的總時間; U

iOS學習階段總結-b20120920-動畫轉場

iPhone動畫型別: 1.UIView,可能在底層用CATransition進行了封裝,它只能用於一些簡單的常用的效果展現; 2.CATransition,相對複雜,是對UIView的Layer進行底層控制和動畫操作。 UIView基本動畫轉場 第一類UIView類方法全

【前端】react學習階段總結學習react、react-router與redux的這些事兒

行程 clas 目前 webpack body src 控制 return 體驗 前言   借用阮一峰的一句話:真正學會 React 是一個漫長的過程。 這句話在我接觸react深入以後,更有感觸了。整個react體系都是全新的,最初做簡單的應用,僅僅使用react-to

python學習階段總結

圖片 另一個 之前 for 賦值 如果 其它 display closed 1.字符串雖然可以和列表一樣通過下標查找值,但是不能直接像列表一樣賦值 2.查看Windows下的默認編碼命令 chcp 一般返回 活動代碼頁:936(對應的是gbk2312) 3.對於文件的‘w模

iOS -- 學習資料總結(轉載)

先著名轉載地址:https://www.jianshu.com/p/c47c24ab1e76/ 關於iOS學習進階的必讀一些部落格總結 經過一週的思考還是決定重組一下優秀的部落格,首次整理這些部落格比較亂,但是後期會慢慢增加github 常用的優秀開源專案,部落格會細緻分類,針對某一些功

前端學習階段總結(2)

引用值和原始值 上篇文章提到了引用值和原始值,今天便要花些時間來刨析一下這兩個值: 原始值: 首先,先來說一下棧,棧的特點為先入後出。採用動態一維陣列來儲存棧。所謂動態,指的是棧的大小可以根據需要增加。 原始值位於棧內,也遵循先入後出的特點。重點是:賦值為copy

web學習階段總結(3)大作業小結

對這段時間web學習做一些總結: 期末大作業選擇的題目是: 做一個使用Video API的頁面程式,要求內容是有關線上視訊播放的,video必須是自己錄製的。 因為考慮到作業的實用性,我把它完善為

IOS 學習總結動畫

別人總結的一篇關於動畫的文章,感覺不錯,轉載一下 UIView的,翻轉、旋轉,偏移,翻頁,縮放,取反的動畫效果 翻轉的動畫 //開始動畫 [UIView beginAnimations:@"doflip" context:nil]; //設定時常 [UI

js學習總結----jQuery之動畫 ajax 事件

win 學習總結 top 上一個 淡出 set 返回 ati var <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

OO學習第一階段總結

出現 只需要 看書 二次 平時 更新 人的 前言 作業 前言 雖然之前接觸過java,也寫過一些1000行左右的程序。可以說面向對象的思想和java的一些基本語法對我來說是沒有難度的,但是這學期的面向對象依然給了我一個下馬威。這幾次的作業每次都很讓我頭疼。因為

Python學習筆記 Day12 json儲存資料及階段總結

Day 12 json儲存資料 及 階段總結 json格式化 JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字

對於第一階段學習總結

階段總結 楊芳芳    第一階段的學習就到此結束了,在這一段時間中,學到了很多以前沒有接觸過的知識,讓我對java有了很大的瞭解,並且能夠自己編寫一些小程式了。下面就是我對於在這段期間的學習情況的總結。    由於我是開課後從UI轉進JAVA來的,剛進來的那天,我們已經在講

python學習第一階段總結

1、字串切片的索引是可正,可負數 例子: +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5

iOS幾種常用執行緒鎖學習總結

開始前,先建立3個執行緒執行的任務。- (void)method1 { NSLog(@"%@", @"執行緒1"); } - (void)method2 { NSLog(@"%@", @"執行緒2"); } - (void)method3 { NS

前端學習階段總結

         從6月25日開始報名學習前端,到現在差不多一個月了,我已經學習完了一階段,課程內容主要是Html標籤、CSS還有佈局。 現在回憶一下這幾個月的學習經歷以及思想歷程。 一:為什麼選擇前端?      我之前會一點SQL和Delphi的,主要的工作也是對自

iOS 學習總結----音訊/視訊處理

if (event.type == UIEventTypeRemoteControl) {         switch (event.subtype) {             case UIEventSubtypeRemoteControlPlay:                [ _pla

【強化學習階段總結

馬爾可夫決策過程 MDP 基於模型的動態規劃方法(Model-Based,DP) 策略搜尋 策略迭代 值迭代 無模型的強化學習方法(Model-Free) 蒙特卡洛方法(MC):效率不高,但是能夠展現 model-free 類演算法的特

git 學習筆記總結

upd remove 不常用 常見命令 指定 之前 初始 add manage 換了一家東家以後要用git了,和之前的svn還是有區別的 最明顯的兩個區別就是 1、git 的commit只是提交到本地的一個緩存工作區,git真正提交到中央也就是遠程倉庫的命令是 git pu

IOS 照片瀏覽器總結(思想步驟)

con bsp rop 設置 分析 瀏覽器 圖像 atom return 1. 界面分析========================================1> 需要讀取或修改屬性的控件需要設置屬性// 序號標簽// 圖片// 圖片描述// 左邊按鈕//

第13周張文小組學習情況總結

成員 基本原則 應用 產生 討論 軟件工程 十分 流程 調查問卷 繼上周對於5,6章節的學習之後,這一周我們小組成員基本都已進入7,8章節的自學。 第七章介紹了微軟推薦的軟件開發方法MSF。MSF的最大特性是商業化,並一直體現在項目的實施過程中。所謂商業化意味著客戶的商業利