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

正文內(nèi)容

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

2025-02-14 14:54 本頁(yè)面
 

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