Cocoa介面設計之WebKit和CSS合作實現換膚執行個體

來源:互聯網
上載者:User

Cocoa介面設計之WebKit和CSS作實現換膚執行個體是本文要介紹的內容,這是一個很不可思議的東西,真的很有趣,超有想法。一改傳統的直接繼承View子類去支援不同皮膚的控制項的形式,而是變了一種思維,直接通過添加一個WebKit,通過修改CSS去改變控制項的樣子。這樣做的好處是CSS非常容易修改,而效果看起來還非常棒!下面是本文。

又來了一堆Cocoa原始碼:這次向你們展示的是如何通過CSS把你的程式做成可更換皮膚的形式。你可以下載代碼。地址:http://mattgemmell.com/files/source/skinnableapp.zip

可換膚程式是一個簡單的Cocoa應用程式,這個程式展示了如何使用嵌入式的WebKit WebView簡單地在你的應用程式上增加“換膚”特效。示範包括把你的應用程式介面通過可更改的CSS檔案變為各種其他效果,還示範了如何在Cocoa和HTML文檔中間互動資料。通過這種方式,為你的應用程式增加不同的“主題”或者“皮膚”變成了很方便的一件事,你可以隨意定製自己Cocoa應用程式的介面。

這個例子展示給你:

- 如何動態切換CSS主題

- 如何從Objective-C裡向WebView新增內容

- 如何從HTML文檔中擷取資料

- 如何替換現存的HTML文檔

- 如何允許HTML控制項如表單元素或者連結)調用Cocoa物件中包含的方法

代碼在Mac OS X 10.5Leopard)中編寫,項目需要Xcode 3,但是代碼本身可以在Tiger上運行。你可以直接在這裡下載,也可以從Matt的公開subversion源碼庫中提取,地址是svn.cocoasourcecode.com

這裡有幾個程式的,CSS做的不怎麼漂亮,請還是關注代碼吧:):
‍‍
更新:現在禁止了在WebView中選擇文字,而且去掉了文本選擇形式的滑鼠指標,這樣看起來更像是Cocoa的介面了。

幾個關鍵點:原文並未提及

 
  1. [webView setDrawsBackground:NO];  
  2. [webView setUIDelegate:self];  
  3. [webView setFrameLoadDelegate:self]; 

這裡需要設定兩個託管,才可以使用事件。

 
  1. [[webView windowScriptObject] setValue:self forKey:@"AppController"];  

配置webView,以便javascript可以與其對話。

1 你可以在Javascript中與webView進行對話,調用方法為:"window.AppController"

2 你必須特別聲明允許從JavaScript中調用的方法,下文將給出解釋。

3 我們在這個類中從Javascript調用的方法為-showMessage:,我們在JavaScript中使用window.AppController.showMessage_() 注意最後的冒號變成了底線。

這個文檔中給出了方法名字的解釋,請參閱:

http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/ObjCFromJavaScript.html

 
  1. (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector  

方法中,為了安全起見,你必須特別允許允許從JavaScript中執行的方法。做如下調用:

 
  1.  if (aSelector == @selector(showMessage:))   
  2.  {  
  3.       return NO;   
  4.  }  
  5. return YES; 

那麼只有showMessage:這個方法可以在JavaScript中被調用,其他的方法都不允許調用。

小結:Cocoa介面設計之WebKitCSS合作實現換膚執行個體的內容介紹完了,希望本文對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.