01a-02a - Basic Subview Rects

iPhone SDK開發範例大全第二章之一(1/14):2009年08月22日星期六

iPhone SDK開發範例大全即iPhone Developer's CookBook的中文譯本,程式可由erica網站下載。第二章講View(視圖),程式共有十四個:

本文講第一個程式01a-02a - Basic Subview Rects:

(A)這個程式會在application area顯示出三個Rectangle object, 每個Rectangle向內縮32點。跑完結果如下圖,畫出三個Rectangle的正是 iPhone左邊的程式 loadView:

(B)接著看一下整個程式:總共只有一個main(),一個HelloController Class,一個SampleAppDelegate Class。如同在iPhone SDK開發範例大全第一章 ( iPhone Blog的iPhone SDK開發範例大全第一章 )所講的, 程式先進入 main()的 UIApplicationMain,再由此跳入 SampleAppDelegate Class內的 applicationDidFinishLaunching,再由其 [window addSubview:hello.view]; 這一行;跳入 HelloController Class內的 loadView 及 shouldAutorotateToInterfaceOrientation,再回到 SampleAppDelegate Class內的 applicationDidFinishLaunching,跳出 applicationDidFinishLaunching後就進入iPhone OS,並在iPhone上出現本程式畫面,並一直loop等著user action。

(C)在HelloController Class裡還有一個很大的程式,叫做WillRotateToInterfaceOrientation,似乎都沒用到?

這時,選擇MAC上的iPhone simulator,按下command 加<-- (左) ,

iPhone simulator會向左轉如下第一圖,注意!!先看最下方黑線,此時break在HelloController Class中的shouldAutototateToInterfaceOrientation。再看iPhone simulator左邊有兩個笑臉,奇怪了!status bar沒跟著轉!!回Xcode,按下run/continue!

出現下面第二圖,注意!!看下方黑線,此時 break在 HelloController Class中的 WillRotateToInterfaceOrientation的第一行,終於來了!!但是 iPhone simulator並未正常。

接著看下面第三圖 , 注意!!看下方黑線,break在HelloController Class中的 WillRotateToInterfaceOrientation的最後一行。但是 iPhone simulator並未正常。

接著看下面第四圖 , 注意 iPhone simulator正常了。status bar已在上方了。在此請注意:

iPhone simulator下方一堆星號區,這是debugger畫面,目前完全空白,表示現在又進入 iPhone OS的 loop, 如果break在自己的程式內的話,這裡會有一堆字,我猜是run time stack的資訊。

至此,第二章View(視圖)程式看完了。可以回頭去看看書上57~66頁的說明。特別應去看63~64頁的 loadView及65~66頁的 WillRotateToInterfaceOrientation。

圖一、二、三:未完成,status bar不對。

圖四:正確完成。