国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

iPhone靜態庫應用之封裝控件庫教程

移動開發 iOS
本文介紹的是iPhone靜態庫應用之封裝控件庫教程,我們使用iPhone靜態庫把自定義組件CheckButton 進行進一步的封裝,來看內容。

iPhone靜態庫應用之封裝控件庫教程是本文要介紹的內容,由于iPhone控件的極度匱乏和自定義組件在重用上的限制,在過去的項目中我們積累了大量的“純代碼”組件——因為IB本身的限制,我們無法把這些組件封裝為IB組件庫(本來我們想通過分發xib文件的方式重用這些組件,但最終發現這根本不可能,蘋果的Plug-in編程不支持iPhone)。

最終我們想到了靜態庫。雖然這仍然還是一種比較原始的復用方式,但起碼我們可以隱藏組件的源代碼。下面, 我們使用iPhone靜態庫把自定義組件CheckButton 進行進一步的封裝。(組件的實現參考前一篇博文《自定義控件復選框和單選框的實現》)

一、實現靜態庫

新建工程, 選擇 Library 下的 “ Cocoa Touch Static Library ” 。給工程命名,例如:yhyLibrary。                 

復制CheckButton組件的4個源文件:CheckButton.h、CheckButton.m、RadioGroup.h、RadioGroup.m到Classes目錄下,同時把CheckButton的4個資源文件:check.png、uncheck.png、radio.png、unradio.png,復制到工程文件夾。

按下 ⌘ +b編譯,在Products目錄下即產生一個 .a文件。

二、 新建資源束

靜態庫中并不能包含資源文件,雖然我們已經把4個資源文件(.png文件)拷貝到靜態庫工程中,但實際上這些.png是不會添加到target的,也就是說編譯結果中并不包含這些資源,因此如果此時調用靜態庫,所有的資源(字符串、圖片)都是缺失的。

我們可以把資源建立成單獨的束(Bundle)。

新建工程“ Mac OS X  -> Framework & Library -> Bundle ”,命名為:yhyLibraryBundle。

然后把上面4個.png文件拷進Resouces中去。編譯,生成yhyLibraryBundle.bundle文件。

返回靜態庫工程,新建一個類:Utils 。

編輯Utils.h:

  1. #define MYBUNDLE_NAME @ "yhyLibraryBundle.bundle"   
  2. #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]   
  3. #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]   
  4. NSString * getMyBundlePath( NSString * filename);  

編輯Utils.m:

  1. #import "Utils.h"   
  2. NSString* getMyBundlePath( NSString * filename)   
  3. {   
  4. NSBundle * libBundle = MYBUNDLE ;   
  5. if ( libBundle && filename ){   
  6. NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent : filename];   
  7. NSLog ( @"%@" ,s);   
  8. return s;   
  9. }   
  10. return nil ;   
  11. }  

函數getMyBundlePath可以取得束yhyLibraryBundle中具體資源的絕對文件路徑,如:

  1. /Users/kmyhy/Library/Application Support/iPhone Simulator/4.2/Applications/8213652F-A47E-456A-A7BB-4CD40892B66D/yhyLibTest.app/
  2. yhyLibraryBundle.bundle/Contents/Resources/radio.png  

同時,修改CheckButton.m中的代碼,導入Utils.h頭文件,把其中獲取圖片的代碼由imageNamed修改為imageWithContentsOfFile,如:

  1. [ icon setImage :[ UIImage imageWithContentsOfFile : getMyBundlePath ( checkname )]];  

即通過絕對路徑讀取圖片資源。

除了這種方法,我們還可以有一個簡單辦法,就是把4個資源文件直接拷貝到你調用靜態庫的應用工程中(不需要修改靜態庫代碼)。

三、靜態庫調用

1、添加靜態庫

新建Window-based Application工程,給工程命名,如yhyLibraryTest。

右鍵點 Frameworks->Add->Existing Files.. ,把靜態庫工程的yhyLibrary.xcodeproj文件 添加到當前工程(不要選擇 Copy items ) 。

選中添加進來的yhyLibrary.xcodeproj文件,勾選“include to target”選項,如下圖,打上***一個小勾:

iPhone靜態庫應用之封裝控件庫教程

2、添加Direct Dependencies(即引用工程)

類似于Visual Studio中的引用工程,目的是便于在本工程中直接編輯所引用的靜態庫工程,以便對靜態庫進行修改。

在“ Targets ”目錄下選擇“ FirstLibraryTest ”,點擊“info”按鈕,調出目標的屬性窗口,切換到“General”欄,點擊“ Direct Dependencies ”下方的“ + ”按鈕,將工程靜態庫libyhyLibrary添加到Direct Dependencies中,結果如下圖:

iPhone靜態庫應用之封裝控件庫教程

3、添加頭文件搜索路徑

打開工程的info窗口,在Build欄中找到Header Search Paths,添加字符串“../yhyLibrary”。

4、 引用資源束

在target的Copy Bundle Resources上右鍵,選擇“Add->Existing File…”,把前面生成的yhyLibraryBundle.bundle束添加到工程。

5、調用靜態庫中的類

編輯 application:( UIApplication *)application didFinishLaunchingWithOptions: 方法中的代碼:

  1. // 單選按鈕組   
  2. RadioGroup * rg =[[ RadioGroup alloc ] init ];   
  3. // 第 1 個單選按鈕   
  4. CheckButton * cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 60 , 260 , 32 )];   
  5. // 把單選按鈕加入按鈕組   
  6. [ rg add :cb];   
  7. cb. label . text = @"★" ;   
  8. cb. value =[[ NSNumber alloc ] initWithInt : 1 ];   
  9. // 把按鈕設置為單選按鈕樣式   
  10. cb. style = CheckButtonStyleRadio ;   
  11. // 加入視圖   
  12. [ self . window addSubview :cb];   
  13. [cb release ]; //add 后,會自動持有,可以釋放   
  14. // 第 2 個單選按鈕   
  15. cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 100 , 260 , 32 )];   
  16. [ rg add :cb];   
  17. cb. label . text = @"★★" ;   
  18. cb. value =[[ NSNumber alloc ] initWithInt : 2 ];   
  19. cb. style = CheckButtonStyleRadio ;   
  20. [ self . window addSubview :cb];   
  21. [cb release ];   
  22. // 第 3 個單選按鈕   
  23. cb=[[ CheckButton alloc ] initWithFrame : CGRectMake ( 20 , 140 , 260 , 32 )];   
  24. [ rg add :cb];   
  25. cb. label . text = @"★★★" ;   
  26. cb. value =[[ NSNumber alloc ] initWithInt : 3 ];   
  27. cb. style = CheckButtonStyleRadio ;   
  28. [ self . window addSubview :cb];   
  29. [cb release ];  

運行結果如下:

iPhone靜態庫應用之封裝控件庫教程

6、分發靜態庫

將生成的.a文件和.bundle文件打包分發給其他人。

小結:iPhone靜態庫應用之封裝控件庫教程的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: CSDN博客
相關推薦

2011-08-10 10:23:20

iPhoneArchivingNSCoder

2011-07-18 15:52:50

iPhone 靜態庫

2011-08-18 13:37:57

iPhone項目靜態庫

2011-08-16 19:02:23

iPhone開發繪圖

2021-07-11 06:45:18

Linux內核靜態

2011-08-15 18:02:32

iPhone開發表視圖

2011-08-11 10:16:23

iPhoneUIView視圖

2011-08-11 10:27:37

iPhoneUIView視圖

2011-08-05 16:31:47

iPhone 數據庫

2011-08-11 11:51:07

iPhone鍵盤

2011-08-15 10:15:00

iPhone開發警告框

2011-08-12 11:31:46

iPhoneUIView動畫

2011-08-02 14:15:05

XCode 靜態 鏈接庫

2011-07-08 14:58:16

iPhone Xcode iOS

2011-07-25 14:14:49

iPhone SQLITE Pldatabase

2011-08-19 14:27:29

iPhone開發

2011-07-27 10:16:41

iPhone SQLite 數據庫

2011-06-01 14:20:37

Android

2011-08-09 13:10:32

iPhone地圖開發

2011-06-09 11:11:35

QT 靜態庫 動態庫
點贊
收藏

51CTO技術棧公眾號

中文字幕中文字幕中文字幕亚洲无线 | 有码在线播放| 国产欧美日韩网站| 日韩美女一级视频| 国产精品久久毛片a| 免费一级特黄特色毛片久久看| 久久xxxx| 欧美激情论坛| 老司机一区二区三区| 147欧美人体大胆444| 久久亚洲国产| 亚洲aⅴ日韩av电影在线观看| 日韩.com| 亚洲自拍偷拍第一页| 狠狠噜噜久久| 91精品国产免费久久综合| 精品女厕厕露p撒尿| 国产午夜精品一区二区三区欧美| 91精品视频网站| 国产精品扒开做爽爽爽的视频| 亚洲国产aⅴ天堂久久| 亚洲qvod图片区电影| 精品视频网站| 91系列在线观看| 欧美日韩综合| 国产亚洲精品美女久久久| 这里有精品可以观看| 曰本色欧美视频在线| 天天综合91| 亚洲人精品午夜| 亚洲网站情趣视频| 久久99精品久久久久久国产越南| 欧美黄色直播| 久久99国产精品免费| 黄页网站在线观看视频| 国产精品看片你懂得| 亚洲大胆精品| 日韩亚洲欧美成人一区| 俄罗斯av网站| 国产日韩在线不卡| 男人本色网站| 热久久久久久久| 欧美激情在线观看视频| 蜜臀久久99精品久久一区二区 | 国产精品久久久久影院色老大| 第四色亚洲色图| 亚洲国产一区二区在线观看| 国产精品18毛片一区二区| 日韩国产精品久久久| 久操网在线观看| 亚洲人成网站精品片在线观看| 日韩在线免费看| 亚洲第一视频网站| 激情小说亚洲色图| 久久久久久久久四区三区| 国产69精品久久777的优势| 国产女主播在线| 精品国产凹凸成av人网站| 国产精品玖玖玖在线资源| 日韩va亚洲va欧洲va国产| 成人福利一区二区| 色88888久久久久久影院野外 | 色婷婷激情一区二区三区| 98色花堂精品视频在线观看| 欧美日韩国产123| 亚洲二区在线| 青青草精品毛片| 男人久久天堂| 日本久久久久久久| 日韩成人一区二区三区在线观看| 岳毛多又紧做起爽| 欧美日韩视频在线第一区| 老司机精品视频网| 欧美大片在线观看一区二区| 黄网站色大毛片| 精品日韩欧美在线| 韩国精品福利一区二区三区| 九九久久99| 国产欧美一区二区精品久导航| 国产成人精品免费看在线播放| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲激情视频在线观看| 亚洲婷婷影院| 欧美一级爱爱视频| 久久久久国内| 免费人成短视频在线观看网站| 亚洲精品在线电影| 精品久久美女| 日本精品免费在线观看| 欧美一区二区三区在| 亚洲ab电影| 男人添女人荫蒂免费视频| 欧美日韩激情在线| 精品在线播放| 日韩中文字幕二区| 日韩av网址在线| 99热这里只有精品8| 领导边摸边吃奶边做爽在线观看| 日韩视频永久免费观看| 蜜臀va亚洲va欧美va天堂| 欧美日韩精品免费在线观看视频| 国产精品免费aⅴ片在线观看| 美女91在线看| 免费成人在线观看av| 精品国产乱码久久久久久天美 | 国模私拍视频一区| 国产精品色婷婷在线观看| 国产精品一 二 三| 亚洲另类春色国产| 在线色视频网| 久久久久久久久综合| 成人高清av在线| 亚洲一二三四| 一区高清视频| 日韩午夜在线播放| 男人添女荫道口图片| 精品久久久久久久久中文字幕| 一根才成人网| 国产99在线免费| 自拍av一区二区三区| 国产一区二区三区影视| 日韩三级电影网站| 欧美尿孔扩张虐视频| 欧美成人免费全部| 蜜臀国产一区二区三区在线播放 | www.国产区| 国产亚洲在线播放| 久久精品久久久精品美女| 国产剧情在线| 日韩高清免费观看| 国产日韩综合| 18+激情视频在线| 精品一区久久久| 成人国产亚洲欧美成人综合网 | 国产精选久久久久久| 国产精品久久久久婷婷| 国产成人精品一区二区三区视频| 色撸撸在线观看| 国产丝袜一区视频在线观看| 精品一区二区三区欧美| 特黄毛片在线观看| 亚洲精品偷拍视频| 最近更新的2019中文字幕| thepron国产精品| 成人3d漫画免费无遮挡软件| 欧美精品激情blacked18| 国产精品久久毛片av大全日韩| 日韩av网址大全| 在线观看麻豆视频| 成人国产在线视频| 欧美男人的天堂一二区| 精品一区二区成人精品| 免费观看v片在线观看| 成人做爽爽免费视频| 在线免费亚洲电影| 美女mm1313爽爽久久久蜜臀| 欧美gay视频| 两根大肉大捧一进一出好爽视频| 欧美夫妻性生活xx| 亚洲尤物精选| 丝袜美腿一区| 天天激情综合| 日韩一区二区三区在线观看| 日韩高清不卡一区| 欧美暴力调教| 免费一级淫片| 久久综合九色99| 一本一本久久a久久精品综合小说| www日韩大片| 亚洲成人日韩| 亚洲欧洲自拍| 丁香婷婷自拍| 日韩精品视频中文在线观看| av一区二区三区在线| 亚洲裸色大胆大尺寸艺术写真| 91香蕉视频污| 国产大陆a不卡| 色综合久久影院| 久久久91精品| 99久久.com| 日本欧美黄色片| 国产午夜伦鲁鲁| 天天做天天躁天天躁| ...av二区三区久久精品| 精品免费久久久久久久| 97精品国产91久久久久久| 色8久久人人97超碰香蕉987| 激情五月婷婷综合网| 国产成人av毛片| 国产精品va在线观看视色| 在线观看av日韩| 欧美探花视频资源| 99久久精品国产毛片| 久久中文字幕av一区二区不卡| 性国产高清在线观看| 成人自拍偷拍| 久久精品99国产精品酒店日本| 色综合久久久久综合体桃花网| thepron国产精品| 亚洲一区成人|