freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于ios影視信息手機(jī)客戶端的設(shè)計與實現(xiàn)(編輯修改稿)

2025-02-14 14:54 本頁面
 

【文章內(nèi)容簡介】 來決定。l UIWebView在iPhone上用來顯示網(wǎng)站要顯示的信息,開發(fā)者可以重寫網(wǎng)頁數(shù)據(jù)的格式,也可以用js返回所要用到的數(shù)據(jù)。 界面的繪制界面區(qū)域的視圖繪制較為簡單。只需要根據(jù)當(dāng)前需求分析,來對每一個也頁面進(jìn)行繪制。先生成一個控制器(UIViewController),形成插座控件,待請求完成時加載數(shù)據(jù)。如果沒有生成nib文件,再從源視圖像位圖中選擇適當(dāng)?shù)膮^(qū)域?qū)⑵涮砑拥絻?nèi)存位圖中,當(dāng)所有這些圖像方塊都繪制到內(nèi)存位圖后,再一次性地將整體圖像從內(nèi)存位圖拷貝到屏幕去。繪制流程如圖35所示。 數(shù)據(jù)輸入與傳遞該軟件通過用戶對界面的操作,實現(xiàn)數(shù)據(jù)的傳遞,而在此項目中當(dāng)點擊影評頁首頁頭圖和列表時,保存一個當(dāng)前點擊影評的ID將及傳至影評詳情頁。而詳情頁則根據(jù)此ID進(jìn)行數(shù)據(jù)請求,將解析后的數(shù)據(jù)顯示到當(dāng)前頁面,而在詳情頁中,點擊圖片用JS導(dǎo)出圖片鏈接,將此鏈接對應(yīng)的圖片從緩存中取出,對其進(jìn)行操作,而點擊詳情頁下部導(dǎo)航條時則從cookie中取取用戶數(shù)據(jù),看是否登錄,然后根據(jù)登錄狀態(tài),進(jìn)行邏輯分析和判斷。是否生成nib文件將控件加入xib中完 成YN在控制器中加入控件開始生成控制器圖35 界面繪制流程圖 數(shù)據(jù)的保存和顯示前面實現(xiàn)的眾多功能都是圍繞著位置這一關(guān)鍵來運作的,數(shù)據(jù)的保存分為兩種,一種是臨時緩存,臨時緩存很簡單,SDK封裝好的模塊我們可以直接拿來用,在數(shù)據(jù)請求完成時可以直接保存到緩存區(qū)。另一種則是保存到沙盒路徑既永久保存,此時根據(jù)用戶名在沙盒中創(chuàng)建一個文件,用單利模式創(chuàng)建一個用戶數(shù)據(jù)模型,每次要用時從數(shù)據(jù)模型中讀取數(shù)據(jù),當(dāng)修改用戶信息時則對其進(jìn)行保存。而數(shù)據(jù)的顯示我們只需將從文件中讀到的數(shù)據(jù),或者是從緩存中取到的數(shù)據(jù)加到相應(yīng)的控件數(shù)據(jù)上,控件將顯示出我們所設(shè)計的效果。 自動登錄自動登錄是由軟件自動完成的。用戶在上次登錄程序中登錄了賬戶而沒有對其進(jìn)行注銷而直接退出程序,這時程序會自動將未退出的賬號記錄下來保存在本地,而當(dāng)下次啟動此應(yīng)用時,先從文件中去讀數(shù)據(jù),看上次用戶退出時是否處在登錄狀態(tài),若是將用戶名和密碼取出,自動請求登錄接口,完成自動登錄。 本章小結(jié)本章主要是對各功能模塊的需求做了詳細(xì)的分析。接著劃分系統(tǒng)的模塊,對用戶登錄做了詳細(xì)的分析,設(shè)計智能手機(jī)的多點觸摸,對系統(tǒng)的各個功能頁面進(jìn)行詳細(xì)構(gòu)造,完成UI圖的繪制及數(shù)據(jù)的顯示及保存設(shè)置,完成自動登錄的邏輯設(shè)計。4 功能模塊的具體實現(xiàn) 數(shù)據(jù)請求 ASIHTTPReques是一款極其強(qiáng)勁的HTTP訪問開源項目。而數(shù)據(jù)的請求可以分為同步和異步請求,同步意為著線程阻塞,在主線程中使用此方法會使應(yīng)用停住而不響應(yīng)任何用戶事件[10]。所以,在應(yīng)用程序設(shè)計時,大多被用在專門的子線程增加用戶體驗,或用異步請求代替。異步請求更加精準(zhǔn)豐富的控制。異步請求的好處是不阻塞當(dāng)前線程,但相對于同步請求略為復(fù)雜,至少要添加兩個回調(diào)方法來獲取異步事件不過可以設(shè)置在隊列中,同步請求的連接數(shù)。往隊列里添加的請求實例數(shù)大于maxConcurrentOperationCount時,請求實例將被置為等待,直到前面至少有一個請求完成并出列才被放到隊列里執(zhí)行。 (IBAction)grabURLInTheBackground:(id)sender {if(![selfqueue]){[selfsetQueue:[[[NSOperationQueuealloc]init]autorelease]]。}NSURL*url=[NSURLURLWithString:@]。ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url]。[requestsetDelegate:self]。[request setDidFinishSelector:@selector(requestDone:)]。[requestsetDidFailSelector:@selector(requestWentWrong:)]。[[selfqueue]addOperation:request]。} 網(wǎng)絡(luò)判斷網(wǎng)絡(luò)判斷是指用戶能否連接到網(wǎng)絡(luò)進(jìn)行請求數(shù)據(jù),為了保證數(shù)據(jù)的可靠性,需要對用戶進(jìn)行網(wǎng)絡(luò)連接失敗和超時進(jìn)行判斷,當(dāng)進(jìn)行數(shù)據(jù)請求時,如果請求失敗,服務(wù)器會返回一個錯誤信息Error,而IOSSDK對請求這一塊進(jìn)行了很好的封裝,返回一個結(jié)構(gòu)體,而其中的1則代表網(wǎng)絡(luò)連接失敗,2則是連接30秒超時,代碼如下:define NET_ERROR_CONNET_FAILURE @網(wǎng)絡(luò)連接失敗,請檢查網(wǎng)絡(luò)define NET_ERROR_TIME_OUT @網(wǎng)絡(luò)連接超時 (void)reque requestWentWrong:(ASIHTTPRequest *)request{ NSError* error = 。 [self notifyDelegateWith:nil andError:error]。 NSInteger code = 。 switch (code) { case ASIConnectionFailureErrorType: //1 [CommUtils showMessageWithStr:NET_ERROR_CONNET_FAILURE]。break。 case ASIRequestTimedOutErrorType: //2[CommUtils showMessageWithStr: NET_ERROR_TIME_OUT]。 break。 default: break。 }} 數(shù)據(jù)的解析用戶請求回來的數(shù)據(jù)都是JSON字符串,JSON可以表示數(shù)組和復(fù)雜的對象,而不僅僅是鍵和值的簡單列表。JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序,用戶只有經(jīng)過解析后才能使用,關(guān)鍵代碼如下:define RELEASE_SAFELY(__POINTER){if(__POINTER){[__POINTER release]。__POINTER = nil。}} //安全釋放數(shù)據(jù)模型解析; (void) requestDone :(ASIHTTPRequest *)request{ NSError* error = nil。 NSData* data = 。 //請求回來數(shù)據(jù) CJSONDeserializer* jsonParser = [CJSONDeserializer deserializer]。 NSArray* reviewJsonArray = [jsonParser deserializeAsArray:data error:amp。error]。 if (error) {return。} NSMutableArray* resp = [[NSMutableArray alloc] init]。 for(NSDictionary* reviewDict in reviewJsonArray) { TReview* review = [[TReview alloc] init]。 = [[reviewDict objectForKey:@rating] doubleValue]。 = [[reviewDict objectForKey:KJson_id] integerValue]。 = [reviewDict objectForKey:KJson_image]。 = [reviewDict objectForKey:KJson_nickname]。 = [reviewDict objectForKey:KJson_userImage]。 = [reviewDict objectForKey:KJson_title]。 = [reviewDict objectForKey:KJson_summary]。 RELEASE_SAFELY(review)。 } [self notifyDelegateWith:resp andError:error]。 RELEASE_SAFELY(resp)。} 代理的實現(xiàn) 由于UIWebView繼承UIScrollView,而UIScrollView無法捕獲UITouch事件,故當(dāng)觸摸UIWebview時,系統(tǒng)將沒有任何反應(yīng),無法實現(xiàn)全屏,用代理注冊手勢,用來捕獲事件。UIGestureRecognizerDelegate//注冊手勢//將手勢加入要操作的控件UITapGestureRecognizer*singleTap=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(Display)]。[_contentWebaddGestureRecognizer:singleTap]。 //這個可以加到任何控件上=self。=NO。[singleTaprelease]。 (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer{returnYES} 算法描述與實現(xiàn)Quartz 是 Cocoa 全部圖表算法[11]的核心。它是圖表算法數(shù)據(jù)結(jié)構(gòu)和畫圖的基礎(chǔ),也是 Mac OS X 的窗口服務(wù)器。Cocoa 圖表算法的基本概念,包括:矩形,點,顏色和系統(tǒng)坐標(biāo)。(1)矩形和點在Quartz 的所有繪圖包括矩形。在 Cocoa,你可以用 NSRect 結(jié)構(gòu)去描述一個矩形的位置和尺寸:typedef struct {NSPoint origin。 //起點NSSize size。 //長寬 } NSRect。原點是畫矩形開始的地方。點由 NSPoint 來描述,有坐標(biāo) x 和 y:typedef struct {float x。 //橫坐標(biāo)float y。 //縱坐標(biāo)} NSPoint。矩形的大小區(qū)域是一個NSSize,包含了長和寬。沒有辦法去描述一個 NSSize 實例,它必須作為矩形的一部分來使用。typedef struct {float width。 //寬度float height。 //高度} NSSize。Cocoa 里畫圖的區(qū)域被作為一個矩形。Quartz 調(diào)用這個畫圖區(qū)“bounds”。一個 NSPoint 點就能描繪 bounds 視圖的任何位置。標(biāo)準(zhǔn)的 Quartz 系統(tǒng)坐標(biāo)是基于 PDF 模式,也就是說畫圖要從左下角開始,如圖41所示。圖 41 坐標(biāo)系的描述圖矩形和點比較的一些函數(shù)NSEqualRects //矩形是否相同NSEqualPoints //原點是否相同NSEqualSizes //大小是否相同NSContainsRect //是否包含另一個矩形NSIntersectsRect //兩矩形重疊的部分NSPointInRect //點是否在當(dāng)前矩形中NSMouseInRect //鼠標(biāo)位置是否在當(dāng)前矩形中NSIsEmptyRect //當(dāng)前矩形是否為空這些函數(shù)能在 文件找到。(2) 畫圖NSRects 和 NSPoints 只是描述幾何體,他們并不能執(zhí)行畫圖。我們在drawRect:方法里編寫代碼來更新視圖。然后在事件處理循環(huán)內(nèi),CocoaTouch調(diào)用視圖的drawRect:讓它更新。我們用路徑來描述矩形、圓及其他想要畫的形狀,路徑可以描邊,填充或既描邊又填充。描畫一個路徑會導(dǎo)致它根據(jù)圖形環(huán)境的狀態(tài)畫出來,填充則會讓路徑內(nèi)部的區(qū)域被涂滿,在Core里,有4個圖元用于表達(dá)路徑:點、線段、弧、和曲線。點是二維空間中的一個位置,不過不要把它想象成像素,一個點完全不占空間,所以畫一個點不會再屏幕上顯示任何東西,你可以在路徑中加入很多的點,想加多少加多少。要想得到能被顯示出來的東西,得用其他某種圖元,他們由點構(gòu)成。線段由兩個點定義:起點和終點。線段可以“描繪”出來,這意味著圖形環(huán)境上所設(shè)的屬性都會用來畫出兩點之間的線段。線段沒有面積,所以他們不被填充。相反??梢杂靡唤M線段或曲線組成一個形狀,閉合路徑然后將其填充。弧由一個點(圓心)、半徑,起始角和結(jié)束角定義。因為弧是占有一定面積的路徑,所以可以被填充或描邊,或者兩者一起。最后,曲線表示的是在“貝賽爾(Bezier)曲線”。用四個點定義一個曲線,兩個點描述斷點,另外兩個描述每一端的切線。曲線有
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1