本文想簡單介紹一下NSBundle讀取圖檔到視圖上,讀取plist檔案,讀取txt檔案顯示在lable上;
關于bundle作用在網上參考了兩個部落格,介紹如下:
bundle是一個目錄,其中包含了程式會使用到的資源. 這些資源包含了如圖像,聲音,編譯好的代碼,nib檔案(使用者也會把bundle稱為plug-in). 對應bundle,cocoa提供了類NSBundle.
我們的程式是一個bundle. 在Finder中,一個應用程式看上去和其他檔案沒有什麼差別. 但是實際上它是一個包含了nib檔案,編譯代碼,以及其他資源的目錄. 我們把這個目錄叫做程式的main bundle
bundle中的有些資源可以本地化.例如,對于foo.nib,我們可以有兩個版本: 一個針對英語使用者,一個針對法語使用者. 在bundle中就會有兩個子目錄:English.lproj和French.lproj,我們把各自版本的foo.nib檔案放到其中. 當程式需要加載foo.nib檔案時,bundle會自動根據所設定的語言來加載.
NSBundle束,是一種特定的檔案類型,其中的内容遵循特定的結構。
NSBundle的一個主要作用是 擷取Resources檔案夾中的資源。
NSBundle 對象代表了檔案系統中的一個位置,這個位置存放的是我們程式的代碼和資源。NSBundel 對象同時本地化程式資源,動态加載和解除安裝可執行代碼,及本地化支援。有三種束,分别是面向應用程的、面向架構的和面向插件的;
1.建立一個新工程叫NSBundleDemo; File->New->Project ->single View Application -> next
擷取圖檔到view視圖上,首先向工程中拖動一張test.png照片,保證Copy items into destination group's folder.被選上,意思講圖檔複制到工程裡,如果這一項沒被選上相當于對圖檔的一個引用,當工程被拷貝到另一個環境下,出現檔案缺失,就不能正常運作;
// 定義一個NSBundle對象擷取得到應用程式的main bundle
NSBundle *mainBundle = [NSBundle mainBundle];
// 用對象mainBundle擷取圖檔路徑
NSString *imagePath = [mainBundlepathForResource:@"test"ofType:@"png"];
完整代碼:
注意我設定的frame坐标,并不是全屏顯示;效果截圖:
這是mainBundle擷取imagepath的路徑:imagepath:/Users/rjxy/Library/Application Support/iPhone Simulator/5.1/Applications/C32F9BE2-B07C-4D83-A1CB-7D10D074773E/NSBundleDemo.app/test.png
補充下,key4是testInfo.plist檔案中對應的一個鍵值;testInfo.plist檔案是我自己添加上去的,添加也可以直接拖動一個plist檔案到工程中,也可以在工程中建立一個,具體方法可參照上面給出的部落格位址了解一下;
3.mainBundle讀取txt檔案,然後把它顯示在lable上,當然在此之前需要添加一個有内容txt檔案;讀取txt檔案和上兩個例子一樣,再次想說一下如何顯示在label上,如果txt中内容太多需要換行的操作;
(1)label.lineBreakMode =UILineBreakModeCharacterWrap;是設定換行的時候以什麼為機關,此處設定是以字元為機關,還有一單詞文機關的,UILineBreakMode定義在一個枚舉類型中,想深入了解如何換行,可以更換UILineBreakMode中枚舉種類進行測試下,此處不做測試;
typedef enum {
UILineBreakModeWordWrap = 0,
UILineBreakModeCharacterWrap,
UILineBreakModeClip,
UILineBreakModeHeadTruncation,
UILineBreakModeTailTruncation,
UILineBreakModeMiddleTruncation,
} UILineBreakMode;
以單詞為機關換行,以機關為機關截斷。
以字元為機關換行,以字元為機關截斷。
以單詞為機關換行。以字元為機關截斷。
以單詞為機關換行。如果是單行,則開始部分有省略号。如果是多行,則中間有省略号,省略号後面有4個字元。
以單詞為機關換行。無論是單行還是多行,都是末尾有省略号。
以單詞為機關換行。無論是單行還是多行,都是中間有省略号,省略号後面隻有2個字元。
(2)label.numberOfLines =0;可以自動适應顯示,如果等于1顯示一行,對于10顯示10行,但是label隻是一個靜态标簽,如果你的txt檔案中内容超多超多,不可能全部顯示出來,最多顯示view視圖大小;假如說我們要想把可多可多的txt檔案類容顯示完怎麼辦呢,我們可以先在view上加一個scroll view視圖,他是一個可以上下左右滾動的視圖,然後設定把label設定大一些,放在scroll view之上;不過我們唱顯示比較多的文字時并不是顯示在label上,而是一個專門用于顯示文字的Text viewk,他可以實作上下滾動顯示所有文字内容;
4.viewDidLoad代碼
5.運作結果截圖,txt中内容并未顯示完全:
本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208761,如需轉載請自行聯系原作者