最近讀cocoaui原始碼有感,cocoaui原始碼有感

來源:互聯網
上載者:User

最近讀cocoaui原始碼有感,cocoaui原始碼有感

  上半年為了做一個ios的應用,引入了cocoaui庫,主要是用來布局ios介面,發現簡化了不少代碼和工作量。因為在寫第一個ios應用的時候,用的代碼布局,在適配4s和6的機型時候,幾乎被搞死,大量的約束定義充斥在代碼中,慘不忍睹。

  cocoaui的作者是ssdb的作者ideawu,在微博裡面比較活躍,有問題at他一般很快就會有回應。ssdb是一個類似於redis的nosql資料庫;像這樣一個在用戶端和伺服器領域都有建樹的人還是很少的。我等普普通通的程式員,距離這種大神還是有一些距離,不過不能氣餒,瞭解他們才能接近他們。除了羨慕他們解決問題的能力,還是要學習他們解決問題的思路,以及這種解決了問題還分享的精神。

  記得大學的時候,每次學習新的語言的時候,總借用第三方庫做一個詞典,一個天氣預報,計算機或者類似於遊覽器這樣小工具等。比如詞典使用百度詞典api,遊覽器使用的webview,不過那個時候真的想過實現一個遊覽器,自己解析html+css。大學時候做xml的解析還是差很多的,最終也是一行代碼也沒有寫,其實想想有很多xml解析庫可以借鑒來使用的。

  說說cocoaui的思路,在布局ios應用介面的時候,即沒有使用xib,也沒有使用storyboard;而是借用web的html+css來做ios的介面布局。整體思路就是借用libxml2庫去解析的html標籤,並且將其轉換成對應的uibutton,uilabel,uiimage,uiview,放置到介面中,至於他們在介面的中的位置,則是通過解析css,然後去設定border,margin,padding,width,height,corlor,text;關於css的解析,作者寫了兩篇文章介紹,http://www.ideawu.net/blog/archives/912.html http://www.ideawu.net/blog/archives/868.html,有興趣可以拜讀一下,思路很清晰。

  大家都在說ios的約束布局不適合人理解,可是大部分人還是去適應了。可是cocoaui的作者繞過ios的約束布局,借用web的div+css去實現流式布局,這真是給了我們一個很好的選擇,同時也提供了一個解決問題的思路,不要陷入其中,而是跳出來從新選擇其他的方式。當然能寫cocoaui也是需要很深的技術功底的,比如css的解析。

  按照這個思路,我們可以從新定義android的布局方式,不知道大家有沒有想過android的布局檔案是很邋遢的,或者說很囉嗦,很冗餘。如果是一個小型應用;xml的設定檔大小几乎相當於整個代碼檔案的大小了。我們按照cocoaui的思路,也可以定義html+css的方式去布局。

  1:在activity裡面,引入xml檔案。

  2:使用dom4j去解析xml中的html標籤,並且將這些標籤轉換成android的控制項,比如input(type=button)的轉換成Button,input(type=input)轉換為edittext,span轉換成textview,div轉換成layout。

  3:解析css檔案,定義控制項在介面中的位置,比如遇到margin:0 10 0 0,就去擷取button的LinearLayout.LayoutParams,然後調用setMargins函數去設定button的margin,遇到padding:10 0 0 0,同理;遇到color;就去設定button的backgroundColor就可以;等等,就不一一列舉。

  這樣是不是就從新定義了android的布局問題,我們甚至可以使用引用css的方式,去定義公用的css方式,這樣能更能簡化布局檔案。也就解決了androidxml布局冗餘的問題。

  當然了,這隻是一個思路,talk is cheap,show code!

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.