国产成人精品a视频一区www_国产区视频在线观看_99色视频_欲色av_亚洲一区电影_亚洲综合视频一区

iPhone wap瀏覽器之界面架構篇

來源:網絡

點擊:1522

A+ A-

所屬頻道:新聞中心

關鍵詞: iPhone,wap瀏覽器,界面架構

      在筆者的上篇文章《自己動手寫iPhone wap瀏覽器之BSD Socket引擎篇》中已經成功解析出來了wml頁面中的tag,如果讀者仔細的話可能會看到里面中文的tag顯示為亂碼,這是因為在iPhone上默認的中文編碼格式是UTF-8,而通過BSD Socket請求過來的是ASCII碼,所以需要通過轉換為UTF-8格式,如下:

      [[NSString alloc] initWithBytes:aChild-》Value() length:strlen(aChild-》Value()) encoding:NSUTF8StringEncoding]

      經過轉換編碼之后,在屏幕上顯示的打印內容如下:

      parse xml succeed

      aChild value = STATUS OK

      aChild value = card

      TiXmlNode::ELEMENT name = title, attr value = 百度一下,你就知道

      aChild value = p

      aChild value = img

      TiXmlNode::ELEMENT name = src, attr value = /r/wise/wapsearchindex/logoindexsmall.gif

      TiXmlNode::ELEMENT name = alt, attr value = 百度首頁

      aChild value = br

      aChild value = input

      TiXmlNode::ELEMENT name = name, attr value = word

      TiXmlNode::ELEMENT name = emptyok, attr value = true

      aChild value = br

      aChild value = anchor

      aChild value = 搜網頁

      TiXmlNode::TEXT Value = 搜網頁

      接下來的任務就是渲染這些解析出來的tag并顯示在界面上了,本篇里筆者重點講述如果搭建一個可擴展的、健壯的界面架構。

      在所有平臺的界面架構中,筆者一直推崇MVC,MVC的著重點在于把界面顯示和數據處理分離開來以提供可擴展的界面架構平臺。基于這個思想,筆者建立了如下的架構圖:

      

      圖1.Tag界面架構圖

      在Xml模塊處理完xml數據并提取出tag后,交給CXmlControl進行處理,CXmlControl在這里充當Control的角色,它負責在處理完tag(標簽)后生成相應的消息以顯示在界面上。

      其中CXmlControl繼承自UIView類,它負責顯示界面并響應用戶的按鍵消息,而具體的邏輯處理則是在CXmlControlImpl類中進行的,CXmlControlImpl這個類負責管理生成的tag(標簽)以及tag(標簽)的界面Layout(布局),如下:

      @class CXmlControlImpl;

      @interface CXmlControl : UIView {

      @public

      CXmlControlImpl* iImpl;

      }

      -(void) addElements:(CXmlElementImpl*)iElemntAdded;

      -(CXmlElement*) InsertContent:(CXmlElement*)aTarget aPosition:(NSInteger)aPosition aSource:(const NSString*)aSource aFlags:(NSInteger)aFlags;

      -(CXmlElement*) AppendContent:(const NSString*)aSource aFlags:(NSInteger)aFlags;

      -(void) Refresh;

      -(void) RefreshAndDraw;

      -(void) ClearContent;

      -(void) RemoveElement:(CXmlElement*)aElement;

      -(CXmlElement*) Element:(const NSString*)aId aIndex:(NSInteger)aIndex;

      -(CXmlElement*) ElementByTag:(const NSString*)aTagName aIndex:(NSInteger)aIndex;

      -(CXmlElement*) FocusedElement;

      -(void) SetFocusTo:(CXmlElement*)aElement;

      -(void) ScrollToView:(CXmlElement*)aElement;

      -(CXmlElement*) Body;

      -(void) SetEventObserver:(id《MXmlCtlEventObserver》)aObserver;

      -(CXmlElementImpl*) Impl;

      -(CGContextRef) SystemGc;

      -(void) Draw:(const CGRect)aRect;

      -(CWritableBitmap*) OffScreenBitmap;

      -(void) SetOffScreenBitmap:(CWritableBitmap*)aBitmap;

      -(void) DrawOffscreen;

      -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

      -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

      -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

      @end

      Tag(標簽)類的基類為CXmlElement,它抽象了標簽的基本屬性和操作,在每一個派生自此基類的tag(標簽)類如CXmlTextElement、CXmlImgElement中都維護一個全局的布局類CHcMeasureStatus,每一個tag(標簽)類都負責自己的布局和自己的繪制操作,完成布局操作和繪制操作后為改變CHcMearuseStatus的狀態和屬性并傳遞給CXmlControl類。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 亚洲欧美中文日韩v在线观看 | 欧美日本不卡 | 日本免费视频在线观看 | 女女百合高h喷汁呻吟视频 女女野外嗯啊高潮h百合扶她 | 日本欧美在线观看 | 黄色网址免费大全 | 久久精品国产99国产精品 | 免费的一级黄色片 | 午夜影视av | 国产精品视频免费看 | 国产成人啪精品午夜在线观看 | 精品国产影院 | 91视频专区 | 成人av影片 | 国产精品福利免费 | 玖玖玖精品视频 | 人成亚洲 | 中文字幕亚洲欧美日韩在线不卡 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 久久靖品 | 中文字幕精品视频在线观看 | 99爱视频在线观看 | 日韩国产一区二区 | 精品久久久精品 | 成人在线视频观看 | 蜜桃久久一区二区三区 | 精品国产乱码久久久久久免费 | h在线观看 | 成人在线一区二区 | 免费视频一二三区 | 蜜臀一区 | 欧美一区二区三区在线看 | 欧美全黄 | 成人免费视频观看视频 | 欧美在线| 亚洲精品乱码久久久久久不卡 | 97成人资源 | 成人黄色在线观看 | 99爱视频 | 在线免费色视频 | 999久久久国产精品 heyzo在线观看 |