隨筆-348  評論-598  文章-0  trackbacks-0

          環(huán)境得搭建請看Part1,簡單得應(yīng)用開發(fā)請參考下面兩個(gè)帖子
          iPhone 實(shí)機(jī)開發(fā) Part 1 - HelloWorld: http://www.weiphone.com/viewthread.php?tid=222380&extra=&page=1
          iPhone 實(shí)機(jī)開發(fā) Part 2 - 移動的 View:http://www.weiphone.com/viewthread.php?tid=224718&extra=&page=1

          其中我遇到了0xe800003a,codesign warning :provisioning is not application in SDK device - iphone os 2.2 ignoring還有因?yàn)楹灻麊栴}而無法編譯得問題。
          其中前兩個(gè)問題是因?yàn)槟愕膍obileInstallation版本太低得緣故,替換成2.2就可以了,這邊是下載地址:http://www.weiphone.com/thread-206698-1-1.html
          因?yàn)楹灻麊栴}而無法編譯通過得問題是因?yàn)樵诰幾g得時(shí)候當(dāng)詢問你是否允許簽署該簽名時(shí),你選擇了“總是允許”,不可以這樣做,只能選擇“允許”。

          下面的內(nèi)容轉(zhuǎn)自Weiphone網(wǎng)

          最近小弟開始在研究 iPhone 的開發(fā),無奈找到的資料都是舊的,也不知道怎麼放到 iPhone 上,應(yīng)該很多人都跟我有同樣的困擾吧!經(jīng)過幾天的研究總算寫出第一個(gè) HelloWorld,而且可以不用付99元美金就可以放到實(shí)機(jī)上執(zhí)行! 今天先和大家分享怎麼放到手機(jī)上,以及基本的 Xcode 使用:
          我的環(huán)境如下:
          IBMX60+iDeneb 10.5.5
          iPhone 港版16G+FW2.2+越獄
          iPhone SDK 2.2 final
          MobileInstallation 已替換(這很重要,不然沒法放到 IP 上,可以參考 weiphone 的這個(gè)帖子:http://www.weiphone.com/thread-206698-1-1.html)
          注意: SDK 版本最好和 IP 版本一致!

          好啦,同學(xué)們,課程開始啦!

          1. 產(chǎn)生證書
          由於 XCode 後面的版本都要求應(yīng)用程式必須經(jīng)過簽署,也因此你必須要
          多花99美元加入 Developer Program (真是黑呀),反正我又不放到 App Store 賣錢,乾脆自己簽個(gè)證書來用不就好了

          打開 Key Access 這個(gè)工具程式(在應(yīng)用程式->工具程式內(nèi)),並建立一個(gè) "iPhone Developer" 名稱的證書(這個(gè)名稱不要改,否則你得在專案內(nèi)改變)








          類型選擇"編碼簽名"




          輸入憑證資訊








          最後選擇存放在"系統(tǒng)"內(nèi)(不是 "登入",否則會找不到)



          這樣就大功告成了,你已經(jīng)省下$99了!

          2. 打開 XCode 建立 View Based Application






          2. 專案建立好了後,打開 Project Setting,並在 User-Defined Settings 輸入:
          PROVISIONING_PROFILE_ALLOWED = NO
          PROVISIONING_PROFILE_REQUIRED = NO




          3. 打開 Info.plist,這個(gè)檔案主要存放應(yīng)用程式的相關(guān)描述,按右鍵 Add Row,新增 SignerIdentity = "Apple iPhone OS Application Signing" (要一樣的,亂輸好像不行)




          4. 打開 MainWindow.xib 檔案,並雙擊 Window 這個(gè)圖標(biāo),我們可以看到 iPhone 內(nèi)唯一的一個(gè) Window




          5. 加入我們自己的 View,在 Class Identity(切換到最右邊的 Tab) 輸入 MyView 按下回車鍵




          6. 同樣的我們拉進(jìn)一個(gè) UILabel 和 UIButton,並調(diào)整一下 Label 的屬性,這邊 Autosizing 的調(diào)整還蠻容易懂的,大家可以試著調(diào)整看看就知道了




          7. 畫面弄好了,但是還沒有把我們的 View 和 ViewController 建立連接,點(diǎn)選 HelloWorld View Controller 後可以在菜單內(nèi)的 Tools->Connections Inspector 看到和 View Controller 連接的 Outlet(也就是類裡面的變量),連接的方法是把 outlet 內(nèi)的view 拖拉到我們實(shí)際建立的 View




          8. 接著我們在建立好的 View 新增一個(gè) outlet(lbl) 和 action(clickMe),這樣我們才可以改變 Label 這個(gè)物件,並分別把 outlet 連接到 HelloWorld 這個(gè)實(shí)際的 Label,action 連接到 "點(diǎn)我" 這個(gè)按鈕,並選擇 Touch Down 的事件,稍後我們會用到這個(gè)事件來改變 Label






          9. 連接關(guān)係都建立好了,我們要產(chǎn)生實(shí)體的類,XCode 會幫我們把必要的 code 產(chǎn)生,產(chǎn)生的方法是在 File->Write Class Files




          10.接下來我們加上一些代碼,分別打開MyView.h(注意要在 MyView 後面輸入 UIView,Xcode 不會加上)和MyView.m並輸入下面代碼







          值得一提的是你可以在寫的過程中按 CTRL+"<" 看到提示

          11. 選擇要使用的設(shè)備,在此我們選擇 Device - iPhone OS 2.2,XCode 會幫我們簽署,按下"允許"(不能按"總是允許")就可以輸出到你的iPhone了(第一次跑可能會出現(xiàn) Security policy error,再跑一次
          就不會出現(xiàn)了)




          12. 要刪除模擬器或?qū)嶓w機(jī)上的 Ap, 只要按住圖標(biāo)不放就可以了




          13. 來個(gè)實(shí)體和虛擬機(jī)的合照吧,點(diǎn)"按我"可以改變 Hello World 的顏色

          P1010190.JPG (72.1 KB)
          2008-12-13 13:53



          下課了~





          可能還有些同學(xué)沒有完成第一課的進(jìn)度,沒關(guān)系,歡迎這些同學(xué)用 QQ 和我聯(lián)系(QQ:865099857),希望日後有機(jī)會能夠與大家一起合作,目前我人回臺灣了,不過大部分時(shí)間會在深圳,明年希望有機(jī)會和深圳的 IP 迷們一起聚會討論. 抱歉我使用繁體中文,雖然我看得懂簡體字,不過不是所有的字都能認(rèn)識,為避免造成筆誤,或是用語上的不同,我還是使用自己習(xí)慣的繁體,相關(guān)用語上我盡量使 用大家可以接受的,如果有發(fā)現(xiàn)奇怪的用語的,請大陸的朋友不吝指正.

                 在第一課,我們學(xué)會了怎麼自己產(chǎn)生證書,拿它來簽署我們寫的無聊程式(好吧!我承認(rèn)那個(gè) HelloWorld 實(shí)在沒什麼用處). 我們也知道怎麼把 UI 和 變量連結(jié)起來,但是可能很多人對於裏面那些名詞,包括 View,Controller,Delegate 搞得一頭霧水,在第二課開始之前,我們有必要把這些東西搞懂:

          View:
          這個(gè)名詞相信大多數(shù)的朋友都知道了,你可以在 View 上面畫畫,可以在上頭放一些控件,甚至可以把一個(gè) View 放到另外一個(gè) View 裏面,所有的 View 都來自於 UIView 這個(gè)類,而 UIView 又來自於 UIResponder,如果你看一下 Apple 的文檔,大概就可以知道 UIResponder 主要工作在於處理事件的. View 的外框我們稱為 frame,我們透過這個(gè) frame 來定義 View 的大小位置(例如:[view setFrame:frame]),至于要把一個(gè) View 加到另一個(gè) View 則可以用 [view addSubView:subView]

          Controller:
          在 XCode 產(chǎn)生代碼你會發(fā)現(xiàn)有一個(gè)繼承自 UIViewController 的類.甚至打開 MainWindow.xib 也可以看到它的蹤影. 也許有同學(xué)會以為這個(gè)和 MVC 裏面的 "C" 是同一個(gè)東東,其實(shí) UIViewController 只是幫你控制 View 的 Layout,例如當(dāng)你旋轉(zhuǎn) iPhone 時(shí),Controller 要幫你處理 View 的位置,另外像 View 與其他控件如 Toolbar 間的位置控制也是他的傑作. 當(dāng)然Controller 並不是必要的,你也是可以用 View 就來完成同樣的事.

          Delegate:
          Delegate 這個(gè)名詞相信大家都常看到吧,這東西有點(diǎn)像是現(xiàn)代孝順兒子的父母一樣,父母親擔(dān)任 Delegate(代理)幫兒子寫家庭作業(yè). 所有與用戶的互動都會交給 Delegate 來處理,這樣子好處是可以把畫面與事件的處理分開,通常我們是以 Controller 來擔(dān)任 Delegate 的角色.

                 好了,看到這邊是不是有點(diǎn)了解又不太了解呢? 是的,我們只解釋了這些名詞,但是一個(gè) iPhone 的程式是怎麼開始動起來的,這時(shí)候建議大家先產(chǎn)生一個(gè)應(yīng)用程式看看,並且打開 MainWindow.xib 找到 File's Owner 後看看他的 Delegate 是什麼? 我們尋著線索找下去應(yīng)該是 XXXAppDelegate,打開後大致上可以看到以下代碼片段:


          - (void)applicationDidFinishLaunching:(UIApplication *)application {        
              [window addSubview:viewController.view];
              [window makeKeyAndVisible];
          }


          - (void)dealloc {
              [viewController release];
              [window release];
              [super dealloc];
          }


          首先映入眼簾的是 UIApplication 這個(gè)類,我們都知道 iPhone 要求同時(shí)間只能有一個(gè) Application 執(zhí)行,因此每個(gè)應(yīng)用程式都會對應(yīng)到一個(gè) UIApplication,我們可以用 [UIApplication sharedInstance] 來取得所對應(yīng)的應(yīng)用程式實(shí)例(instance),當(dāng)你執(zhí)行你的應(yīng)用程式後applicationDidFinishLaunching 就會被呼叫到(記得我們上面談到 Delegate 這個(gè)可憐的父母吧,事件傳給了他,由 Delegate 來處理事件)接著我們把 view 加到 window(其實(shí)他也是個(gè) view),然後讓這個(gè) window 變成可見的. 好了,如果你有興趣,最好能夠把 MainWindow.xib 內(nèi)的每一個(gè)圖標(biāo)打開來看看(File's Owner,First Responder,XXXController...),然後追蹤一下他們的 delegate,相信你能了解的更多.


              前面講了這麼多無非是希望同學(xué)們在看下面的文章時(shí)不會雞同鴨講的,我們今天要講的主題就是 View,還會談到如何把一個(gè) View 動態(tài)加到另一個(gè) View 裏面,如何使用圖片,設(shè)定應(yīng)用程式的圖標(biāo),以及 touch 事件的處理等等.

              今天的例子多了些動態(tài)效果,主要是讓你在雙點(diǎn)擊屏幕時(shí)會出現(xiàn)一朵花,如果你把手指放在花上面,還可以拖拉著到處跑,而且拉動的時(shí)候花還會變亮,放開後花會變暗,也許它還是很無聊的東西,不過這個(gè)例子比起 HelloWorld 好玩多了:

          1. 產(chǎn)生一個(gè) View-Based Application,並存為 DragView




          2. 打開 MainWindow.xib,並點(diǎn)選 Loaded From "DragViewViewController.nib" 以開啟真正的 UIView,切換到 Class Identity 後輸入MainView(名稱可自訂)按回車鍵,接著 Write Class Files 以產(chǎn)生實(shí)體的類檔案






          3. 打開 MainView.h 並在後面加上 UIView (我一直不了解為什麼 XCode 不幫我們加上?)



          4. 從 Library 裏面拉一個(gè) UIImageView 進(jìn)來



          5. 點(diǎn)選這個(gè) UIImageView 並在菜單上打開 Inspector,在 Class Identity 改為 DraggedView (記得按回車鍵)




          6. 同樣的 Write Class Files 以產(chǎn)生實(shí)體的類檔案



          7. 記得修改一下 DraggedView.h 加上 UIImageView (很容易忘記的),並加上 start 這個(gè)變量,它會記錄我們開始接觸的那一點(diǎn):



          好了,到目前為止,畫面算是弄好了,大家可以先在模擬器跑跑看會不會發(fā)生編譯錯(cuò)誤... 接下來我們要介紹在 UIView 裏面的 touch 的事件:

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

          這三個(gè)照字面上意思解釋應(yīng)該不難了解,分別代表接觸點(diǎn)開始,移動,結(jié)束的事件,後面的 touches 代表接觸的點(diǎn)(因?yàn)槭嵌帱c(diǎn)接觸所以可能包括多個(gè)點(diǎn)),event 代表接觸的事件


          8. 打開 MainView.m 輸入以下代碼,這個(gè) MainView 是我們最底層的 View,還記得我們講到的 frame 吧,在這邊派上用場了,值得注意的是我這邊特別是用到建構(gòu)子(Constructor),默認(rèn)的形態(tài)是 -(void) init 且不帶參數(shù)的,我們在 MainView 被產(chǎn)生時(shí)把他的背景設(shè)定為黑色的:



          9. 打開 DraggedView.m 輸入以下代碼,我們在 touchesBegan 時(shí)先記錄開始的位置,然後用 setAlpha 讓這個(gè) View 變亮(<=1.0f),在 touchesMoved 時(shí)計(jì)算移動後的位置,用 setFrame 來改變圖片的位置,這樣子看起來圖片好像跟著我們動了




          10. 現(xiàn)在還不能執(zhí)行,因?yàn)槲覀兊膱D片還沒有加到 Resource 裏面,隨便找一張你喜歡的圖把它拉到 Resources 裏面,勾選 Copy items into...




          11. 這個(gè)圖片還有其他用途,可以用來作為我們的應(yīng)用程式圖標(biāo),打開 Info.plist,在 Icon file 輸入 images.jpg



          12. 最後為了讓這個(gè)應(yīng)用程式可以在 iPhone 上跑,我們修改了 Project Setting 和 Info.plist (詳細(xì)情形可以看第一課)




          13. 看看是不是可以跑起來了,隨便在任意地方雙敲擊兩下看看是不是有朵花跑出來,再用手指移動這些花看看,哇!這次總算像是個(gè) iPhone 的應(yīng)用程式了(雖然那張圖處理的不是很好)!




          跟實(shí)體機(jī)器比較看看...(呵呵,我是用臺灣大哥大的,信號強(qiáng)呀!)





          ---------------------------------------------------------
          專注移動開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2009-06-14 19:47 TiGERTiAN 閱讀(2491) 評論(0)  編輯  收藏 所屬分類: iPhone
          專注移動開發(fā)--Windows Mobile, Android, iPhone, J2ME, BlackBerry, Symbian, Windows Phone

          慢慢混,慢慢學(xué)
          <2009年6月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(43)

          隨筆分類(402)

          隨筆檔案(306)

          相冊

          我的好友們

          搜索

          •  

          積分與排名

          • 積分 - 812999
          • 排名 - 50

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 怀安县| 白沙| 正宁县| 马公市| 奎屯市| 黄石市| 宝坻区| 东阳市| 开封市| 甘洛县| 贺兰县| 同德县| 临泽县| 达拉特旗| 旬邑县| 自贡市| 平昌县| 湟源县| 海南省| 卫辉市| 本溪市| 昌图县| 青河县| 凌云县| 灌云县| 井陉县| 沅江市| 关岭| 永福县| 花莲县| 浦江县| 营山县| 巴里| 临泉县| 晋中市| 新余市| 淮阳县| 雅江县| 遵化市| 靖州| 大厂|