iOS: initwithframe什么時候會被調(diào)用?

(轉(zhuǎn)帖)

有時候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么?

那就通過查資料弄明白。

1.initWithFrame方法是什么?

initWithFrame方法用來初始化并返回一個新的視圖對象,根據(jù)指定的CGRect(尺寸)。

當然,其他UI對象,也有initWithFrame方法,但是,我們以UIView為例,來搞清楚initWithFrame方法。

2.什么時候用initWithFrame方法?

簡單的說,我們用編程方式申明,創(chuàng)建UIView對象時,使用initWithFrame方法。

在此,我們必須搞清楚,兩種方式來進行初始化UIView。

1.使用 Interface Builder 方式。

這種方式,就是使用nib文件。通常我們說的“拖控件” 的方式。

實際編程中,我們?nèi)绻肐nterface Builder 方式創(chuàng)建了UIView對象。(也就是,用拖控件的方式)

那么,initWithFrame方法方法是不會被調(diào)用的。因為nib文件已經(jīng)知道如何初始化該View。(因為,我們在拖該view的時候,就定義好了長、寬、背景等屬性)。

這時候,會調(diào)用initWithCoder方法,我們可以用initWithCoder方法來重新定義我們在nib中已經(jīng)設(shè)置的各項屬性。

2.使用編程方式。

就是我們聲明一個UIView的子類,進行“手工”編寫代碼的方式。

實際編程中,我們使用編程方式下,來創(chuàng)建一個UIView或者創(chuàng)建UIView的子類。這時候,將調(diào)用initWithFrame方法,來實例化UIView。

特別注意,如果在子類中重載initWithFrame方法,必須先調(diào)用父類的initWithFrame方法。在對自定義的UIView子類進行初始化操作。

比如:

- (id)initWithFrame:(CGRect)frame{

self= [superinitWithFrame:frame];//先調(diào)用父類的initWithFrame方法

if(self) {

//再自定義該類(UIView子類)的初始化操作。

_scrollView= [[UIScrollViewalloc]initWithFrame:self.bounds];

[_scrollViewsetFrame:CGRectMake(0,0,320,480)];

_scrollView.contentSize=CGSizeMake(320*3,480);

[selfaddSubview:_scrollView];

?????? }

return self;

}

在這里,我想,應(yīng)該對initWithFrame方法略知一二了。

那么,用Interface Builder 方式創(chuàng)建的nib文件是什么?

對于應(yīng)用程序,資源是一種數(shù)據(jù)文件,伴隨可程序執(zhí)行程序的一種數(shù)據(jù)文件。(可以理解為可執(zhí)行程序的,一種不可缺少的組陳部分)。

資源文件,是一種可移動的,由適合的工具編寫的一種特殊的代碼。

如:plish文件,txt文件,圖像,視頻等文件。都可以被xCode識別和引用。

一個應(yīng)用程序可以包含多種形式的資源文件。

當然,nib文件也不例外,僅僅是一種資源文件。

通過Interface Builder 方式,可以創(chuàng)建nib文件,存儲應(yīng)用程序的UI對象。供應(yīng)用程序來讀取。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容