溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

有關View的幾個基礎知識點-IOS開發(fā)

發(fā)布時間:2020-07-12 07:17:55 來源:網(wǎng)絡 閱讀:891 作者:江山風雨 欄目:移動開發(fā)

開發(fā)環(huán)境如下:

有關View的幾個基礎知識點-IOS開發(fā)

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

一)三個結(jié)構體:CGPoint、CGSize、CGRect

這三個結(jié)構體均在一個頭文件里:

#include <CoreGraphics/CGGeometry.h>

打開文件如下:

有關View的幾個基礎知識點-IOS開發(fā)

其中 CGRect 的偏移量是相對父窗口的。

二)三個方法:CGPointMake、CGSizeMake、CGRectMake

這三個函數(shù)還是在剛剛那個頭文件里面:

#include <CoreGraphics/CGGeometry.h>

打開文件如下:

有關View的幾個基礎知識點-IOS開發(fā)


備注:可見

#include <CoreGraphics/CGGeometry.h>

這個文件里有宏定義:

CG_EXTERN

CG_INLINE

追根溯源,可以發(fā)現(xiàn)在文件

#include <CoreGraphics/CGBase.h>

文件中有宏定義:

有關View的幾個基礎知識點-IOS開發(fā)

有關View的幾個基礎知識點-IOS開發(fā)

可見上述這三個函數(shù)是不是內(nèi)聯(lián)函數(shù),要看是哪種編譯器。通過如下輸出可判定是哪知編譯器:

有關View的幾個基礎知識點-IOS開發(fā)


三)幾個基本界面元素:window(窗口)、視圖(view)

要在屏幕上顯示內(nèi)容首先要創(chuàng)建一個窗口(window)承載內(nèi)容,要創(chuàng)建一個窗口,需要一個邊框(frame),含有邊框信息的底層 結(jié)構就CGRect。每個能夠在屏幕上顯示自己的對象都有一個邊框(frame),定義了他的顯示區(qū)域,不過許多高層的視圖類(UIView)會自動計算這一信息。其他的那些類則在視圖初始化時通過一個initWithFrame的初始化方法來設置。

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

有關View的幾個基礎知識點-IOS開發(fā)


UIView

下面來認識一下UIView類。這個類繼承自UIResponder,看這個名字我們就知道它是負責顯示的畫布。如果說把window比作畫框的話,我們就是不斷地在畫框上移除、更換或者疊加畫布,或者在畫布上疊加其他畫布,大小當然由繪畫者來決定了。有了畫布,我們就可以在上面任意操作了。

這個類在

#include <CoreGraphics/UIView.h>

里面。

下面我們先學習一些基礎的東西。

首先進入其頭文件里面,查看其 frame 和 bounds 屬性。

有關View的幾個基礎知識點-IOS開發(fā)

這里我們要弄清楚frame和bounds這兩個屬性的區(qū)別:

-(CGRect)frame{

return CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height);

}


-(CGRect)bounds{

return CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);

}

可見:

frame: view在父view坐標系統(tǒng)中的位置和大小。(參照點是,父親的坐標系統(tǒng))

bounds:view在自身坐標系統(tǒng)中的位置和大小。 (參照點是,自身坐標系統(tǒng))


創(chuàng)建畫布的基本方式如下:

CGRect CGone = CGRectMake(0.0, 0.0, 320, 100); //畫個矩形,初始化位置與大小

UIView *v_one = [[UIView alloc] initWithFrame:CGone];//初始化view

我們可以把這塊畫布加到其他畫布上。

[self.window addSubview:v_one];//直接加到畫框上


UIWindow

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

看一下系統(tǒng)的初始化過程:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

self.window.backgroundColor = [UIColor whiteColor];//給window設置一個背景色

[self.window makeKeyAndVisible];//讓window顯示出來

return YES;

}



實戰(zhàn)演練:

1)新建一個工程選擇 Empty Application 名字為FirstTest。
2)在application didFinishLaunchingWithOptions里面,你會發(fā)現(xiàn)系統(tǒng)已經(jīng)建好一個畫框了,我們現(xiàn)在就用系統(tǒng)幫我們建好的畫框,你當然也可以自己建一個畫框,不過沒這個必要了。

有關View的幾個基礎知識點-IOS開發(fā)


輸出效果如下:

有關View的幾個基礎知識點-IOS開發(fā)


本文參考連接:http://blog.csdn.net/iukey/article/details/7083165


附件:http://down.51cto.com/data/2363690
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI