




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
摘要蘋果iOS是蘋果開發(fā)的手持設備操作系統(tǒng)。蘋果公司最早于2007年1月9日的Macworld大會上發(fā)布這個系統(tǒng),最初設計給iPhone使用,后來陸續(xù)套用到iPodtouch、iPad以及AppleTV等蘋果產(chǎn)品上。近年來,隨著iphone和廣泛應用,使許多企業(yè)發(fā)現(xiàn),手機業(yè)務價值,促使越來越多的人開始學習開發(fā)手機。蘋果手機軟件基于Object_C編程語言編程Xcode的環(huán)境下發(fā)展。手機軟件分為許多類型,包括視頻類手機軟件有很高的地位在手機軟件的發(fā)展。本文基于iOS開發(fā)平臺設計并且實現(xiàn)了一款手機視頻App,展示如何通過利用Object_C的工具函數(shù)實現(xiàn)對視頻的各種處理。論述了視頻的播放,異步下載以及斷點播放。關鍵字:視頻播放DotaObject_CAbstractAppleiOSisthedevelopmentofhandhelddevicesoperatingsystem.AppleasearlyasJanuary9,2007theMacworldconferencethissystem,originallydesignedforuseiniPhone,subsequentlyappliedtotheiPodtouch,Apple,andAppleproductssuchasAppleTV.Inrecentyears,withtheiphoneanditiswidelyused,makemanybusinessesfoundthatmobilephoneonbusinessvalue,promptingmoreandmorepeoplebegintolearnthedevelopmentonmobilephones.ApplemobilephonesoftwarebasedonObject_CprogramminglanguageundertheenvironmentofXcodedevelopmentprogramming.Mobilephonesoftwareisdividedintomanytypes,includingvideoclassmobilephonesoftwarehavetheveryhighstatusinthedevelopmentofmobilephonesoftware.ThisarticleisbasedontheiOS(InternetworkingOperationSystem)isdesignedandimplementedamobilevideoApp,showshowtouseObject_Ctoolfunctiononvideoprocessing.Discussesthevideoplayback,asynchronousdownloadandbreakpoint.KeywordsVideoDisplayDotaObject_C目錄TOC\o"1-3"\h\u26874第一章緒論 5284641.1iOS系統(tǒng)概述 5258341.2iOS系統(tǒng)的構架 5198651.2.1CocoaTouch層 5197531.2.2Media層 671891.2.3CoreServices層 659311.2.4CoreOS層 6154341.3Object_C的介紹 624573第二章總體設計 8310082.1系統(tǒng)各個功能模塊總體設計 8104132.2iOS的View的生命周期 921014第三章詳細設計 11294043.1基礎類設計 11107433.2項目所需系統(tǒng)類庫 13100033.3第三方SDK 13154673.4App運行首頁面 14149923.4.1視頻解說 1464053.4.2視頻解說詳情頁面 16308873.4.3視頻播放 1760683.5視頻緩存 18132833.6直播 2065943.7Dota2英雄介紹和物品介紹 2114273.7.1Dota2英雄介紹 21173493.7.2Dota2物品的介紹 24139323.8設置 26523.9系統(tǒng)測試 283413.9.1功能模塊測試 28223933.9.2功能整體測試 2810664第四章結論和致謝 29緒論1.1iOS系統(tǒng)概述iOS操作系統(tǒng)是iPhont、ipodtouch以及iPad設備的核心。構架iOS平臺的知識與MacOSX系統(tǒng)同出一轍,iOS平臺的許多開發(fā)工具和開發(fā)技術也源自MacOSX,都是以UNIX為基礎。但開發(fā)者無需具備MacOSX的開發(fā)經(jīng)驗就可以編寫iOS的應用程序。iPhone軟件開發(fā)包(SDK)為著手創(chuàng)建iOS應用程序提供所需要的一切。1.2iOS系統(tǒng)的構架iOS架構和MacOS的基礎架構相似。站在高級層次來看,iOS扮演底層硬件和應用程序的中介。創(chuàng)建的應用程序不能直接訪問硬件,而需要和系統(tǒng)接口進行交互。系統(tǒng)接口轉而又去和適當?shù)尿寗哟蚪坏馈_@樣的抽象可以防止應用程序改變底層硬件。iOS實現(xiàn)可以看作是多個層的集合,底層為所有應用程序提供基礎服務,高層則包含一些復雜巧妙的服務和技術。圖1-1iOS的層1.2.1CocoaTouch層CocoaTouch層提供了基本的系統(tǒng)行為支持,而且將你的工作量降到最低,當你想要實現(xiàn)更為復雜的行為和界面時,才考慮向下層探尋技術支持。UIKit框架:UIKit提供了一些程序運行所必須的關鍵對象,使得App能夠捕捉用戶輸入和在屏幕上顯示內容MapKit框架:iOS3.0引入該框架,該框架提供一個可被嵌入到應用程序的地圖界面,該界面包含一個可以滾動的地圖視圖AddressBookUI框架:iOS3.0引入該框架,可以利用該框架撰寫電子郵件,并將其放入到用戶的發(fā)件箱排隊等候發(fā)送MessageUI框架:顯示創(chuàng)建或者編輯聯(lián)系人的標準系統(tǒng)界面1.2.2Media層包含圖形、音頻、視頻等技術。QuartzCore框架:包含CoreAnimation是高級動畫制作和混合技術,它使用經(jīng)過優(yōu)化的渲染路徑實現(xiàn)復雜的動畫和視覺效果MediaPlayer框架:應用程序播放視頻和音頻內容AVFoundation框架:該框架包含的Object_C類可用于播放音頻內容CoreGraphics框架:(CoreGraphics.framework)包含Quartz2D繪圖API接口。該框架基于C接口,提供繪圖功能1.2.3CoreServices層應用程序提供基礎系統(tǒng)服務??赡軕贸绦虿⒉恢苯邮褂眠@些服務。但它們是系統(tǒng)很多部分懶以建構的基礎。Foundation框架:為CoreFoundation框架的許多功能提供Object_C封裝CoreFoundation框架:是一組C語言接口,它們?yōu)閕OS應用程序提供基本數(shù)據(jù)管理和服務功能CoreLocation框架:可用于定位某個設備經(jīng)緯度其他框架:CFNetWork框架、CoreData框架、CoreMedia框架、CoreTelephony框架、EventKit框架、MobileCoreServices框架、QuickLook框架、StoreKit框架、SystemConfiguration框架1.2.4CoreOS層Core層的底層功能是很多其他技術的構建基礎。通常情況下,這些功能不會直接應用與應用程序,而是應用與其他框架。但是,在直接處理安全事務或和某個外設通訊的時候,則必須要應用到該層框架Accelerate框架:iOS4.0引入了Accelerate框架,該框架的接口可用于執(zhí)行數(shù)字、大數(shù)字以及DSP算法ExternalAccessory框架:iOS3.0引入了ExternalAccessory框架,通過它來支持iOS設備與綁定附件通信。附件可以通過一個30針的基座接口和設備連接,也可以通過藍牙連接Security框架:iOS系統(tǒng)不但提供內建的安全功能,還提供Security框架用于保證應用程序所管理之數(shù)據(jù)的安全。該框架提供的接口可用于管理證書、公鑰、私鑰以及信任策略。它支持生成加密的安全偽隨機數(shù)。同時,它也支持對證書和Keychain迷藥進行保存,是用戶敏感數(shù)據(jù)的安全倉庫1.3Object_C的介紹Objective-C是非常“實際”的語言。它使用一個用C寫成、很小的運行庫,只會令應用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運作相反,ObjC寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內存來開啟一個窗口的情況相反。擴展的關鍵字:@interface,類型聲明,類似于c++中的class,區(qū)別在于Objectc中的聲明與實現(xiàn)是強制分開的,@interface關鍵字用于類型的聲明,包括數(shù)據(jù)成員、方法聲明、屬性等。方法的參數(shù)傳遞采用中綴符的形式,利用“:”分割參數(shù)名和被傳遞參數(shù),類型的聲明以@interface開頭,以@end結束。@implementation,對應于@interface的類型聲明,@implementation表示一個類型的實現(xiàn)過程,同樣以@end結束。@class,是一個前向引用聲明,類似于C++中的friend友元聲明,其作用是告訴編譯器其后面的字段代表一個類型名稱,盡管不知道類型的具體實現(xiàn),但是只需要將其作為一個類型名稱處理即可。通常在使用復合的結構時可以采用@class來減少頭文件的相互引用,如果出現(xiàn)循環(huán)依賴,則需要依靠@class來避免引用的死循環(huán)。@property,提供了外界對成員變量的訪問接口,其本質是為某一個屬性提供set和get操作。@synthesize,與@property對應,將一個外在屬性與成員變量相關聯(lián),定義在@implementation中,如果屬性名與變量名一致則可以省略變量名。Object_C采用引用計數(shù)的方法進行內存管理,由于所有的對象都集成與NSObject,因此所有的對象都可以接受NSObject的三個方法:retain方法將對象的引用計數(shù)加一并返回該對象,release將引用計數(shù)減一,retainCount方法返回對象當前的引用計數(shù)。當采用new、alloc、copy方法創(chuàng)建一個對象時,它的引用計數(shù)被置為1,如果程序中對該對象進行操作,則應根據(jù)需要,通過調用retain和release方法來保證該對象在不需要的時候被清除。當一個對象的引用計數(shù)被置為0后,系統(tǒng)會自動向對象發(fā)送一個dealloc消息,將其占有的資源釋放。通常情況下,如果一個對象的初始化過程調用了其他資源,則應該重寫改對象的dealloc過程,保證在對象的銷毀期正確釋放這些資源。類別是為現(xiàn)有的類提供一個新的方法的方法,即使沒有一個類的源代碼,仍然可以向類中添加一個方法以方便使用。類別的主要目的有3個:將類的實現(xiàn)分散到多個不同的文件或框架中,創(chuàng)建對私有方法的前向引用,向對象添加非正式協(xié)議。ObjectC中的協(xié)議類似于java中的接口,通過@protocol關鍵字定義一個或多個需要遵從協(xié)議的對象實現(xiàn)的方法??傮w設計2.1系統(tǒng)各個功能模塊總體設計iOS開發(fā)是基于Object_C語言,使用iOSSDK在Xcode開發(fā)環(huán)境下進行開發(fā),其應用與iOS系統(tǒng)的移動設備上,本課題主要是本地應用,加入少量網(wǎng)絡解析和分享功能。2.1.1功能總體設計根據(jù)系統(tǒng)功能分析,可以分為五大模塊:視頻解說、視頻緩存、直播、Dota2、設置。圖2-1功能總體設計圖2.1.2主要頁面設計頁面一覽表顯示出了本程序的主要頁面以及設計的類名,概要的描述了頁面的主要功能。表2-1-2頁面一覽表NO頁面名稱設計類名頁面概要1程序啟動頁面RootViewController程序運行后,最開始進入的界面2視頻解說頁面VideoViewController可查看各個解說的視頻3視頻緩存頁面VideoCacheViewController下載存儲4直播頁面TvViewController觀看當前能看到的視頻5Dota2頁面DotaViewControllerDota2的英雄簡介和物品簡介6設置頁面SettingViewController2.1.3功能一覽表功能一覽表顯示出了項目的主要功能的實現(xiàn),以及所需技術或所需添加的第三方SDK,簡要的描述了功能概要。表2-1-3功能一覽表NO功能名稱功能概要公共方法涉及頁面1視頻播放調用網(wǎng)上的視頻文件播放,使用自定義的AVPlayer否直播頁面和視頻解說頁面2網(wǎng)絡平臺分享使用微信的第三方接口否Dota2頁面2.2iOS的View的生命周期ViewController的職責,對內管理與之關聯(lián)的View,對外跟其他的ViewController通信和協(xié)調。對于與之關聯(lián)的View,ViewController總是在需要的時候才加載視圖,并在不需要的時候卸載視圖,所以也同時擔當了管理應用資源的責任。理解ViewController的生命周期,能夠有效的管理應用資源,ViewController的生命周期圖:圖2-2UIView生命周期圖 第三章詳細設計3.1基礎類設計基礎類中設計了一些公用方法功能,以及一些界面的實例化,主要有網(wǎng)絡,網(wǎng)絡監(jiān)測,頁面坐標大小設置。微信分享微信分享,存在Dota2模塊中的英雄詳情頁面和物品詳情頁面,英雄詳情頁面,主要分享英雄的圖片以及英雄的簡介,而物品詳情頁面分享的是物品的圖片以及物品的簡介,分享到微信朋友圈,沒有設置鏈接。 微信分享的AppKey:[WXApiregisterApp:@"wxd930ea5d5a258f4f"];微信分享的驗證:-(void)onResp:(BaseResp*)resp{if([respisKindOfClass:[SendMessageToWXRespclass]]){NSString*strMsg;if(resp.errCode==0){strMsg=@"分享到微信朋友圈成功";}else{strMsg=@"分享到微信朋友圈失敗";}UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:strMsgmessage:nildelegate:nilcancelButtonTitle:@"確定"otherButtonTitles:nil,nil];[alertshow];}}微信分享:WXMediaMessage*message=[WXMediaMessagemessage];message.title=myLab.text;//把myLabel的內容添加到消息中[messagesetThumbImage:[UIImageimageNamed:@"icon@2x.png"]];//設置發(fā)送的圖片樣式WXWebpageObject*ext=[WXWebpageObjectobject];ext.webpageUrl=@"";//測試鏈接message.mediaObject=ext;SendMessageToWXReq*req=[[SendMessageToWXReqalloc]init];req.bText=NO;req.message=message;req.scene=WXSceneTimeline;//分享場景為朋友圈[WXApisendReq:req];網(wǎng)絡監(jiān)測網(wǎng)絡監(jiān)測,監(jiān)測有沒有網(wǎng)絡,如果沒有網(wǎng)絡則網(wǎng)絡不請求數(shù)據(jù),只要有網(wǎng)絡不管是3G還是Wifi都進行網(wǎng)絡請求。+(BOOL)connectedToNetwork{Reachability*r=[ReachabilityreachabilityWithHostName:@""];//通過百度測試網(wǎng)絡BOOLisReachable=YES;switch([rcurrentReachabilityStatus]){//當前的鏈接狀態(tài)caseNotReachable://沒有網(wǎng)絡連接NSLog(@"沒有網(wǎng)絡");isReachable=NO;[[NSUserDefaultsstandardUserDefaults]setObject:[NSNumbernumberWithBool:isReachable]forKey:@"isConnected"];[[NSUserDefaultsstandardUserDefaults]synchronize];break;caseReachableViaWWAN://使用3G網(wǎng)絡NSLog(@"正在使用3G網(wǎng)絡");break;caseReachableViaWiFi://使用WiFi網(wǎng)絡NSLog(@"正在使用wifi網(wǎng)絡");break;}returnisReachable;returnYES;}3.2項目所需系統(tǒng)類庫 CoreGraphicss.framework(CoreGraphics.framework)包含Quartz2D繪圖API接口。該框架基于C接口,提供繪圖功能。所有Xcode創(chuàng)建的工程都自帶的一個類庫。Foundation.framework和UIKit.frameworkios中,Cocoa的框架中最重要最基本的兩個框架是Foundation和UIkit,和界面無關的基本類的屬于Foundation框架,UIKit框架是和界面相關的。3) AVFoundation.framework該框架包含的Object_C類可用于播放音頻內容。4) QuartzCore.frameworkQuartz核心框架(QuartzCore.framework)包含CoreAnimation接口,CoreAnimation是一種高級動畫和合成技術。MediaPlayer.framework用于視頻的播放框架。Libsqlite3.dylib數(shù)據(jù)庫的框架。7) MobileCoreServices.framework;MobileCoreServices框架iOS3.0引入了MobileCoreServices框架(MobileCoreServices.framework)。此框架定義統(tǒng)一類型標識符(UTIs)使用的底層類型。8)CFNetwork.framework;CFNetwork只是對BSDsocket的進行了輕量級的封裝,但在iOS中使用CFNetwork有一個顯著的好處,那就是CFNetwork與系統(tǒng)級別的設置(如:天線設置)以及run-loop結合得很好。每一個線程都有自己的run-loop,因此我們可以CFNetwork當中事件源加入到run-loop中,這樣就可以在線程的run-loop中處理網(wǎng)絡事件了。BTW,大名鼎鼎的ASIHttpRequest庫就是基于CFNetwork封裝的。3.3第三方SDK數(shù)據(jù)庫解析FMDB微信分享libWeChatSDK.a,WXApi.h,WXApiObject.h網(wǎng)絡監(jiān)測Reachability3.4App運行首頁面3.4.1視頻解說圖3-4-1-1視頻解說人員列表首頁面是整個程序的根視圖,可以進入功能界面,并包括整個程序的設置頁面,點擊頁面中最下面的圖標可以進入別的頁面。表3-4-1-2頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1VideoViewController視頻解說員的名字列表UIViewController是2VideoCachViewController下載視頻的詳情UIViewController是3TvViewController直播的介紹列表UIViewController是4DotaViewControllerDota2英雄和物品綜合頁面UIViewController是5SettingVIewController用戶設置頁面UIViewController是表3-4-1-3頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2ViewWillAppearViewWillAppearViewWillAppear設置UITabBar分為5個大模塊3AppDelegate系統(tǒng)自帶頁面跳轉分別跳轉到各個模塊關鍵代碼:UITabBar創(chuàng)建關鍵代碼:NSString*path=[[NSBundlemainBundle]pathForResource:@"Data_TabBar"ofType:@"plist"];//設置plist文件的路徑NSDictionary*dic=[NSDictionarydictionaryWithContentsOfFile:path];//把plist文件轉為字典NSMutableArray*controllerArray=[[NSMutableArrayalloc]init];//初始化可變數(shù)組for(inti=0;i<dic.count;i++)//遍歷字典{NSString*key=[NSStringstringWithFormat:@"item%d",i];NSDictionary*dict=[dicobjectForKey:key];NSString*className=[dictobjectForKey:CLASS_NAME_KEY];Classclass=NSClassFromString(className);if(class){RootViewController*rvc=[[classalloc]initWithDictionary:dict];UINavigationController*nc=[[UINavigationControlleralloc]initWithRootViewController:rvc];[controllerArrayaddObject:nc];//把導航條添加到數(shù)組中}}UITabBarController*tbc=[[[UITabBarControlleralloc]init]autorelease];//初始化TabBartbc.viewControllers=controllerArray;self.window.rootViewController=tbc;//把TabBar添加到底層頁面上視頻解說跳轉視頻詳情頁面代碼:VideoItem*item=[self.mDataArrayobjectAtIndex:indexPath.row];VideoDetailViewController*vdvc=[[VideoDetailViewControlleralloc]init];vdvc.uid=item.id;//傳參=;[vdvcsetHidesBottomBarWhenPushed:YES];//[self.navigationControllerpushViewController:vdvcanimated:YES];//頁面跳轉3.4.2視頻解說詳情頁面圖3-4-2-1視頻解說詳情頁面視頻解說詳情頁面實現(xiàn)上拉加載,可以瀏覽此解說的所有近期視頻。表3-4-2-2視屏解說詳情頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1VideoDetailItem視頻解說的模型NSObject是2VideoDetailCell視頻解說列表UITableViewCell是3VideoDetailViewController視頻解說頁面UIViewController是表3-4-2-3視頻解說詳情頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2didselecttouch跳轉頁面跳轉到下一個頁面關鍵代碼:if(scrollView.contentOffset.y+scrollView.frame.size.height >=scrollView.contentSize.height){if(isRefresh==NO){isRefresh=YES;_currentPage+=10;NSString*url=[NSStringstringWithFormat: Video_Detail_Url,_uid,_currentPage];[[LCHttpManagersharedManager]addGetTask:url Tag:Video_Detail_tag];//網(wǎng)絡請求[selfaddMessage:urlselector:@selector(updateData:)];}}3.4.3視頻播放圖3-4-3-1視頻播放主要是視頻播放功能。表3-4-3-2視頻播放頁面參數(shù)、功能表 項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1PlayView視頻播放界面上面的ViewUIView是2PlayViewBottom視頻播放界面底部的ViewUIView是3PlayMediaViewController播放界面UIViewController是表3-4-3-3視頻播放頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2playStarttouch播放按鈕開始播放視頻3clickButtontouch返回按鈕返回視頻解說詳情頁面關鍵代碼:AVURLAsset*asset=[AVURLAssetassetWithURL:url];[assetloadValuesAsynchronouslyForKeys:[NSArrayarrayWithObject:@"tracks"]completionHandler:^{AVKeyValueStatusstatus=[assetstatusOfValueForKey:@"tracks"error:nil];if(status==AVKeyValueStatusLoaded){//判斷狀態(tài)AVPlayerItem*playerItem=[AVPlayerItemplayerItemWithAsset:asset];_player=[[AVPlayeralloc]initWithPlayerItem:playerItem];[_playerViewsetPlayer:_player];//關聯(lián)播放器和屏幕[_playeraddPeriodicTimeObserverForInterval:CMTimeMake(1,1)queue:dispatch_queue_create(0,0)usingBlock:^(CMTimetime){//設置進度CMTime幀數(shù)幀率CMTimecurrentTime=_player.currentItem.currentTime;//當前時間CMTimeduration=_player.currentItem.duration;if(CMTimeGetSeconds(duration)>0.0){Floatpro=CMTimeGetSeconds(currentTime)/CMTimeGetSeconds(duration);//進度dispatch_async(dispatch_get_main_queue(),^{[_proSildersetValue:proanimated:YES];[_playerViewTop.timeLabelreloadInputViews]; });}}3.5視頻緩存3-8-1視頻緩存頁面視頻緩存是緩存視頻下載完成以及沒有完成的下載管理頁面。表3-5-1-2視頻緩存頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1MediaItem視頻緩存模型NSObject是2CacheCell視頻緩存CellUITableViewCell是3VideoCacheViewController視頻緩存頁面UIViewController是表3-5-1-3視頻緩存頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2didselecttouch刪除按鈕刪除下載的所有關鍵代碼:-(void)removeAllUser{BOOLres=[_dbopen];//打開數(shù)據(jù)庫if(res==NO){NSLog(@"打開失敗");}FMResultSet*set=[_dbexecuteQuery:@"select*fromUser"];//通過用戶名刪除所有數(shù)據(jù)庫while([setnext]){//遍歷刪除NSString*titleName=[setstringForColumn:@"titleName"];if(titleName){res=[_dbexecuteUpdate:@"deletefromUserwheretitleName=?",titleName];}}3.6直播3-6-1直播的列表表3-6-2直播列表參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1TvItem直播模型NSObject是2TvCell直播列表CellUITableViewCell是3TvViewController直播頁面UIViewController是表3-6-3直播頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2didselecttouch頁面跳轉跳轉到直播播放頁面(直播視頻播放同視頻播放頁面的播放)3.7Dota2英雄介紹和物品介紹3-7-1Dota2的列表3.7.1Dota2英雄介紹圖3-7-1-1Dota2英雄介紹主要把英雄分為3中類型:力量英雄、敏捷英雄、智力英雄??梢渣c擊任意Cell查看表3-7-1-2英雄列表頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1HeroDetailViewController英雄列表UIViewController是表3-7-1-3英雄列表頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2buttonClicktouch切換英雄類型按鈕切換英雄類型3didselecttouch跳轉頁面跳轉到英雄詳情頁面圖3-7-1-4Dota2英雄的詳細介紹英雄的初始屬性,英雄的背景介紹以及英雄的技能的冷卻時間,技能各個等級的傷害。表3-7-1-5英雄詳情列表頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1BaseAttributeCell英雄基礎屬性所在CellUITableViewCell是2HeroItem英雄簡介模型NSObject是3BaseAttribsItem英雄基礎屬性模型NSObject是4HeroIntroductionCell英雄背景介紹所在CellUITableViewCell是5SkillItem英雄技能模型NSObject是6SkillDetailCell英雄技能所在的CellUITableViewCell是7HeroDetailViewController英雄詳情介紹頁面UIVIewController是8WXApi微信分享第三方NSObject是圖3-7-1-6英雄詳情列表頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2sharedtouch分享按鈕微信分享英雄圖片和背景介紹關鍵代碼:自適應Cell的代碼:HeroItem*item=[self.mDataArrayobjectAtIndex:0];CGSizesize=[item.biosizeWithFont:[UIFontsystemFontOfSize:18.0] constrainedToSize:CGSizeMake(300,1000) lineBreakMode:UILineBreakModeCharacterWrap];returnsize.height+30;//自適應每個Cell的高分享代碼:WXMediaMessage*message=[WXMediaMessagemessage];HeroItem*item=[self.mDataArrayobjectAtIndex:0];message.title=item.bio;//把英雄背景簡介添加到消息中[messagesetThumbImage:[UIImageimageNamed:item.u]];//把圖品添加到消息中WXWebpageObject*ext=[WXWebpageObjectobject];ext.webpageUrl=@"";//測試鏈接message.mediaObject=ext;SendMessageToWXReq*req=[[[SendMessageToWXReqalloc]init]autorelease];req.bText=NO;req.message=message;req.scene=WXSceneTimeline;[WXApisendReq:req];3.7.2Dota2物品的介紹圖3-7-2-1Dota2物品的介紹模仿Dota2中物品商店的道具擺放。可以左右、上下拖動。圖3-7-2-2Dota2物品的詳細介紹詳細介紹了每個道具的名稱、所需價格以及具體的作用。比如:蝴蝶這個道具就是攻擊以及閃避為一體的極品道具。表3-7-2-3物品頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1Items物品簡介模型NSObject是2ItemsView物品詳情介紹所在的ViewUIView是3RelicListViewController物品列表頁面UIViewController是表3-7-2-4物品頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2sharedtouch分享按鈕微信分享物品圖片和物品介紹關鍵代碼:JSON解析代碼:NSString*path=[[NSBundlemainBundle]pathForResource:@"item" ofType:@"json"];NSURL*url=[NSURLfileURLWithPath:path];NSString*jsonStr=[NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncodingerror:nil];NSData*jsonData=[jsonStrdataUsingEncoding:NSUTF8StringEncoding];NSDictionary*dict=[NSJSONSerializationJSONObject WithData:jsonDataoptions:0error:nil];分享代碼:(與上面的英雄分享類似)3.8設置對系統(tǒng)進行設置,可以查看工程所占的空間,以及剩余空間,可以查詢Dota在11對戰(zhàn)平臺的天梯分數(shù)和天梯相關的數(shù)據(jù)??梢园l(fā)送反饋意見,給我評分等一系列功能。圖3-8-1設置頁面介紹表3-8-2設置頁面參數(shù)、功能表項目NO.頁面項目類型(繼承的類)項目名摘要類型必須1SettingViewController設置界面UITableViewCell是2SettingCell設置CellUITableViewCell是3AddCell設置Cell列表UITableViewCell是4SettingContentCell設置CellUITableViewCell是5SettingReturnCell設置CellUITableViewCell是圖3-8-3設置頁面動作事件表項目NO.動作處理名處理內容項目動作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件3didselecttouch跳轉頁面跳轉到下一級頁面關鍵代碼:-(NSNumber*)freeDiskSpace//檢測空閑內存的空間大小{NSDictionary*fattributes=[[NSFileManagerdefaultManager]fileSystemAttributesAtPath:NSHomeDirectory()];return[fattributesobjectForKey:NSFileSystemFreeSize];}-(NSNumber*)totalDiskSpace//檢測總的內存的空間大小{NSDictionary*fattributes=[[NSFileManagerdefaultManager]fileSystemAttributesAtPath:NSHomeDirectory()];return[fattributesobjectForKey:NSFileSystemSize];}3.9系統(tǒng)測試系統(tǒng)測試時保證系統(tǒng)質量和可靠性的關鍵步驟,是對系統(tǒng)開發(fā)過程中的系統(tǒng)分析、系統(tǒng)設計以及實施的最后復查。根據(jù)測試的概念和目的,進行信息系統(tǒng)測試。3.9.1功能模塊測試在視頻播放模塊,測試視頻播放是否流暢,是否能夠進行播放。在解析Json中,數(shù)據(jù)是否可以從網(wǎng)絡獲取,以及回調數(shù)據(jù)是否回調成功。上拉刷新,下拉加載是否實現(xiàn)功能。在完成逐個模塊測試后,開始對系統(tǒng)進行驗收測試,運行該系統(tǒng),在運行過程中查找出現(xiàn)的錯誤3.9.2功能整體測試在安裝好配置環(huán)境的電腦上測試,剛開始出現(xiàn)出現(xiàn)屏幕混亂,經(jīng)過反復修改,現(xiàn)在已經(jīng)能正常播放視頻。用Xcode上自帶的監(jiān)測內存工具Instrument,檢測出多處內存泄露問題,都已修改。最后經(jīng)過反復測試,修改,基本功能實現(xiàn)。第四章結論和致謝結論本次畢業(yè)設計的主要方向是視頻播放及在iOS環(huán)境下實現(xiàn)。在整個畢業(yè)設計過程中,我既學到了許多知識,同時又鍛煉了自己的實際動手能力。但由于本人水平有限在整個過程中不可避免地遇到了各種各樣的問題,而且還存在著許多不足之處??偨Y起來有以下幾點:對iOS開發(fā)環(huán)境的基本知識和使用方法有了一定的了解和掌握。尤其是基于Object_C的應用程序框架,它是進行彩色圖像處理的關鍵。對視頻處理的內容有了更加深入的認識。由于能力所限在程序開發(fā)過程中遇到了很多問題,使得系統(tǒng)在進行操作時受限。下一步規(guī)劃:實現(xiàn)邊下載.看以及Dota2物品合成功能以及英雄推薦裝.和對每個英雄的加點。通過這次的課程論文,我深深的感受到了自身的不足。
教訓反思:
(1).學習與實踐的結合不當。當我進行程序開發(fā)的時候,發(fā)現(xiàn)以前學習的知識點到用時卻忘得一干二凈了,也只好重新學習基本知識了。如果以前把知識學得透徹點,理解深刻點,也許在開發(fā)過程中可以縮短時間,提高效率。反思自我,歸其原因:不是當時的學習不夠認真,而是缺乏對知識點的運用實踐;對于像我這樣“半路出家”的編程人員來說,只是理解知識點是遠遠不夠的,如果當時沒有經(jīng)過編譯、運行、調試的過程,很快就會忘記的。
(2).學習目標不專一。我們都知道在學習的時候是最忌諱這個還沒學明白就去學那個的,結果當然是哪個也沒學明白。這個沒學好,就想用另一個,造成學習不深入,學習效果不好。以后一點要記住此教訓。致謝踉踉蹌蹌地忙碌了幾個月,本設計在劉博老師的悉心指導和嚴格要求下已完成。由于能力和時間的關系,總是覺得有很多不盡人意的地方,譬如功能不全、外觀粗糙等問題。可是,我又會有點自戀式地安慰自己:做一件事情,不必過于在乎最終的結果,可貴的是過程中的收獲。這次做論文的經(jīng)歷也會使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的自己學習的過程和研究的過程,沒有學習就不可能有研究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次的經(jīng)歷能讓我在以后學習中激勵我繼續(xù)進步。本設計在劉博老師的悉心指導和嚴格要求下業(yè)已完成,從課題選擇、方案論證到具體設計和調試,無不凝聚著劉老師的心血和汗水,在四年的本科學習和生活期間,也始終感受著導師的精心指導和無私的關懷,我受益匪淺。在此向劉博老師表示深深的感謝和崇高的敬意。不積跬步何以至千里,本設計能夠順利的完成,也歸功于各位任課老師的認真負責,使我能夠很好的掌握和運用專業(yè)知識,并在設計中得以體現(xiàn)。正是有了他們的悉心幫助和支持,才使我的畢業(yè)論文工作順利完成,在此向,計算機系的全體老師表示由衷的謝意。感謝他們四年來的辛勤栽培。參考文獻
[1]
Dave
Mak(美)
Jack
Nutting(美)
Jeff
LaMarche(美)著.楊越
孫文磊等譯.ios5基礎教程[M].北京:人民郵電出版社.
2013:3
[2]
Mark
Dalrymple(美)
Scott
Knaster(美)著.楊越
等譯.Objective-C基礎教程[M].北京:人民郵電出版社.
2012:7
[3]
Stephen
G.Kochan
著.林翼
范俊
朱奕欣
譯.Objective-C程序設計(第四版)[M].北京:電子工業(yè)出版社,2012:12
[4]
虞斌著.
Ios軟件開發(fā)揭秘:iPhone&iPad企業(yè)應用和游戲開發(fā)[M].北京:電子工業(yè)出版社,2011:1.
[5]
克萊爾(美)著.李強譯.Objective-C2.0Mac和ios開發(fā)實踐指南[M].北京:機械工業(yè)出版社,2011:1.
[6]
Brian
W.Kernighan
,Deninis
M
Rirchie(美)著,徐寶文,李志(譯)The
C
Programming
Language[M].北京:機械工業(yè)出版社2003:2.
[7]
徐松林,黃猛著.cocos2D-x手機游戲開發(fā)[M].北京:人民郵電出版社.
[8]
Ron
patton(美)著.王鈺,曹躍譯.軟件測試[M].北京:機械工業(yè)出版社,2006:4.
[9]
王水著.軟件工程[M].河南:河南科學技術出版社,2008:8.
[10]
吳潔明著.軟件工程實例教程[M].北京:清華大學出版社,2010:11.
[11]
郭東恩著.數(shù)據(jù)庫原理及應用[M].河南:河南科學技術出版社,2008:4.
[12]
Dan
Pilone著.Head
First
iPhone
Development[M].北京:東南大學出版社,2012:1.
[13]
薩丹著.iPhone開發(fā)秘籍[M].北京:人民郵電出版社,2010:1.
[14]
喬納森(美)著.AppStore掘金[M].北京:人民郵電出版社,2010:1.
[15]
哈靈頓(美)著.iOS
4實戰(zhàn)[M].北京:人民郵電出版社,2012:1.
[16]
王志剛.編著應用程序開發(fā)攻略之iPhone特色傳感器應用[M].北京:電子工業(yè)出版社,2011:2.
[17]
Gene
Backlin(美)著.岳紅
凌沖譯.iPhone&iPad高級編程[M].北京:清華大學出版社,2012:1.
[18]
Wei-Meng
Lee(美)著.張龍譯.IOS
4編程入門經(jīng)典[M].北京:清華大學出版社,2012:1.基于C8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統(tǒng)的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構件開發(fā)的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉變壓器-數(shù)字轉換器的研究基于單片機的光纖Bragg光柵解調系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術研究基于單片機的膛壁溫度報警系統(tǒng)設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉電弧傳感角焊縫跟蹤單片機控制系統(tǒng)HYPERLINK"/detai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于人工智能的精準營銷策略在商貿企業(yè)中的實施
- 游戲化教學對學生規(guī)則意識的促進作用
- 2025年醫(yī)療AI輔助診斷產(chǎn)品注冊審批流程中的倫理審查研究報告
- 2025年養(yǎng)老機構醫(yī)養(yǎng)結合政策環(huán)境與市場前景分析報告
- 2025年休閑農業(yè)與鄉(xiāng)村旅游融合發(fā)展的安全風險管理與應急預案報告
- 2025年信托行業(yè)轉型路徑與資產(chǎn)管理業(yè)務模式研究報告
- 教育游戲化創(chuàng)新挑戰(zhàn)設計以提升學習成就感
- 教育資源均等化中的政策路徑研究
- 教育心理學在改善教育環(huán)境中的應用
- 2025年中國低溫冷凍干燥歐芹行業(yè)投資前景及策略咨詢研究報告
- 物業(yè)小飯桌管理制度
- 2025年湖南省普通高中學業(yè)水平考試合格性考試模擬試題(長郡版高一生物)(原卷版)
- 2025春國家開放大學《思想道德與法治》終考大作業(yè)答案
- 醫(yī)師職業(yè)素養(yǎng)課件
- 電網(wǎng)工程設備材料信息參考價2025年第一季度
- 2024年安徽省初中學業(yè)水平考試生物試題含答案
- Python試題庫(附參考答案)
- 2024年浙江省中考英語試題卷(含答案解析)
- 移動取消寬帶委托書
- 胃腸外科病人圍手術期全程營養(yǎng)管理中國專家共識2021版PPT課件
- 年產(chǎn)量50萬噸苯乙烯工藝設計
評論
0/150
提交評論