關於 uiview 的基礎知識
首先要弄懂幾個基本的概念。
一)三個結構體:cgpoint、cgsize、cgrect
1. cgpoint
1. /* points. */
2.
3. struct cgpoint ;
7. typedef struct cgpoint cgpoint;
8.
2. cgsize
1. /* sizes. */
2.
3. struct cgsize ;
7. typedef struct cgsize cgsize;
3.cgrect
1. /* rectangles. */
2.
3. struct cgrect ;
7. typedef struct cgrect cgrect;
這三個結構體均在乙個標頭檔案裡:cggeometry.h
二)幾個方法
1.cgrectmake
1. cg_inline cgrect
2. cgrectmake(cgfloat x, cgfloat y, cgfloat width, cgfloat height)
3.
這個方法就是make乙個rect,定好origin(起點,左上角),寬與高,就可以畫出乙個位置與大小確定的rect(矩形)。
這個函式被宣告為內聯函式,一是因為它比較小,二是因為在畫介面時我們要求一定的效率。這個函式還是藏在剛剛那個標頭檔案裡面:cggeometry.h
三)幾個基本介面元素:window(視窗)、檢視(view)
要在螢幕上顯示內容首先要建立乙個視窗承載內容,要建立乙個視窗,需要乙個邊框(frame),含有邊框資訊的底層 結構就cgrect。
每個能夠在螢幕上顯示自己的物件都有乙個邊框,定義了他的顯示區域,不過許多高層的檢視類會自動計算這一資訊。其他的那些類則在檢視初始化時通過乙個initwithframe的初始化方法設定。
再來認識乙個類:uiscreen。uiscreen類代表了螢幕,通過這個類我們可以獲取一些想要的東東。
1. cgrect screenbounds = [ [uiscreen mainscreen]bounds];//返回的是帶有狀態列的rect
2. cgrect viewbounds = [ [uiscreen mainscreen]applicationframe];//不包含狀態列的rect
3. //screenbounds 與 viewbounds 均是相對於裝置螢幕來說的
4. //所以 screenbounds.origin.x== 0.0 ; screenbounds.oringin.y = 0.0;
5. screenbounds.size.width == 320; screenbounds.size.height == 480(或者其他解析度有所差異)
6. //所以 screenbounds.origin.x== 0.0 ; screenbounds.oringin.y = 20.0;(因為狀態列的高度是20畫素) screenbounds.size.width == 320; screenbounds.size.height == 480
uiview
下面來認識一下uiview類,這個類繼承自uiresponder,看這個名字我們就知道它是負責顯示的畫布,如果說把window比作畫框的話。我們就是不斷地在畫框上移除、更換或者疊加畫布,或者在畫布上疊加其他畫布,大小當然由繪畫者來決定了。有了畫布,我們就可以在上面任意施為了。
1. uiview* myview =[[ uiview alloc]initwithframe:cgrectmake(0.0,0.0,200.0,400.0)];//這裡建立了一塊畫布,定義了相對于父視窗的位置, 以及大小。
uiwindow
uiwindow繼承自uiview,關於這一點可能有點邏輯障礙,畫框怎麼繼承自畫布呢?不要過於去專牛角尖,畫框的形狀不就是跟畫布一樣嗎?拿一塊畫布然後用一些方法把它加強,是不是可以當乙個畫框用呢?這也是為什麼乙個view可以直接加到另乙個view上去的原因了。
系統的初始化過程(applicationdidfinishlauchingwithoptions):
1. self.window = [[[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]] autorelease];
2. self.window.backgroundcolor = [uicolor graycolor];//給window設定乙個背景色
3. [self.window makekeyandvisible];//讓window顯示出來
**練習:
1)新建乙個工程選擇emptyapplication 名字為lll 在applicationdidfinishlaunchingwithoptions裡面,你會發現系統已經建好乙個畫框了,我們現在就用系統幫我們建好的畫框,你當然也可以自己建乙個畫框,不過沒這個必要了,乙個應用程式只能有乙個畫框(uiwindow)。
1. - (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions
2.
是不是看到五顏六色的塊了?你可以精確計算一下大小與位置,多幾種變化,類似與 css+ div 進行 網頁中的塊定位
第四章 繼承
一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...
第四章 物件
三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...
第四章 其他
sizeof和strlen 區別sizeof以位元組為單位給出資料的大小,strlen 函式以字元為單位給出字串的長度。使用strlen 函式要加 include標頭檔案。sizeof計算字元時會將標誌字串結束的不可見的空字元計算在內。定義符號常量 方法一 define name value 優點 ...