有關View的幾個基礎知識點 IOS開發

2021-08-26 13:12:30 字數 2157 閱讀 1619

我一般情況下不會使用inte***ce builder去畫介面,而是用純**去建立介面,不是裝b,而是剛從vi轉到xcode不久,不太習慣inte***ce builder而已。當然如果需要我也會使用它。乙個東西的存在沒有絕對的好與壞,只是存在時間與空間決定了它的價值。

(忘了講了,我的環境是xcode4.2)

首先要弄懂幾個基本的概念。

一)三個結構體:cgpoint、cgsize、cgrect

1. cgpoint

/* points. */ struct cgpoint ; typedef struct cgpoint cgpoint;看到這個想必你已經懂了,不再解釋。

2. cgsize

/* sizes. */ struct cgsize ; typedef struct cgsize cgsize;不解釋。

3.cgrect

/* rectangles. */ struct cgrect ; typedef struct cgrect cgrect;同樣 不解釋。

這三個結構體均在乙個標頭檔案裡:cggeometry.h

二)幾個方法

1.cgrectmake

cg_inline cgrect cgrectmake(cgfloat x, cgfloat y, cgfloat width, cgfloat height)

沒錯,這個方法就是make乙個rect,定好origin(起點,左上角),寬與高,就可以畫出乙個位置與大小確定的rect(矩形)這個函式被宣告為內聯函式,一是因為它比較小,二是因為在畫介面時我們要求一定的效率。這個函式還是藏在剛剛那個標頭檔案裡面:cggeometry.h

三)幾個基本介面元素:window(視窗)、檢視(view)

要在螢幕上顯示內容首先要建立乙個視窗承載內容,要建立乙個視窗,需要乙個邊框(frame),含有邊框資訊的底層 結構就cgrect。每個能夠在螢幕上顯示自己的物件都有乙個邊框,定義了他的顯示區域,不過許多高層的檢視類會自動計算這一資訊。其他的那些類則在檢視初始化時通過乙個initwithframe的初始化方法來設定。

再來認識乙個類:uiscreen。uiscreen類代表了螢幕,通過這個類我們可以獲取一些想要的東東。

uiview

下面來認識一下uiview類,這個類繼承自uiresponder,看這個名字我們就知道它是負責顯示的畫布,如果說把window比作畫框的話。我們就是不斷地在畫框上移除、更換或者疊加畫布,或者在畫布上疊加其他畫布,大小當然 由繪畫者來決定了。有了畫布,我們就可以在上面任意施為了。很多簡單的東西我會把庫裡面的內容貼出來,如果東西太多貼出來就不太好,朋友們自己去庫檔案裡面看吧。這個類在uiview.h裡面。下面我們先學習一些基礎的東西,其他的東東會在以後慢慢展開。

uiview* myview =[[ uiview alloc]initwithframe:cgrectmake(0.0,0.0,200.0,400.0)];//這裡建立了一塊畫布,定義了相對于父視窗的位置, 以及大小。我們可以把這塊畫布加到其他畫布上,具體方法後面會講到。我們還可以在這塊畫布上畫上其它好玩的東東,具體情形後面會一一講解。

uiwindow

uiwindow繼承自uiview,關於這一點可能有點邏輯障礙,畫框怎麼繼承自畫布呢?不要過於去專牛角尖,畫框的形狀不就是跟畫布一樣嗎?拿一塊畫布然後用一些方法把它加強,是不是可以當乙個畫框用呢?這也是為什麼 乙個view可以直接加到另乙個view上去的原因了。

self.window = [[[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]] autorelease]; self.window.backgroundcolor = [uicolor graycolor];//給window設定乙個背景色 [self.window makekeyandvisible];//讓window顯示出來

實戰演練:

沒結束我會用乙個綜合的 例子來總結我的學習成果,徹底理解所學,我覺得既然選擇寫**,就要理解原理,否則只知其然不知其所以然是不能做乙個好的程式設計師的。

是不是看到五顏六色的塊了?哈哈,是不是很有成就感呢?確實不值得有啥成就感,你可以精確計算一下大小與位置,多幾種變化,彷彿回到當初div+css的時候了,確實很有趣,這個程式的不足之處在於我們未能在每個色塊上面標註色塊標記,別急,下節課就有了。

基礎知識點

1 inline block布局 2 table布局 3 justify的末行不對齊 4 兩個圖示之間有空格 換行 5 背景中的的 路徑的 全部斜槓都為 不是 命令列下的這種 doctype html html head meta charset utf 8 title xx title head ...

erlang基礎知識點

1 變數是不可改變的,必須以首字母大寫開頭 2 字串就是小寫字母,或者單引號引起來的字串 3 賦值可以使用匹配模式 4 資料結構有元組,取值用匹配模式來取值 就能取到x,b的值 5 資料結列表 ss,aa,取值是用 head foot 的形式取值 頭和尾的形式匹配 6 字串只能用雙引號表示 7 函式...

ios基礎知識點

1.記憶體管理 用記憶體引用計數來進行管理 alloc,retain,copy會使記憶體引用計數立即 1 當物件使用結束後要對它進行釋放 release 立即 1 autorelease 未來 1 autorelease的物件會把這個物件放置到離它最近的自動釋放池裡,自動釋放池釋放的時候才會把自動釋...