initWithFrame方法的理解(转)
生活随笔
收集整理的這篇文章主要介紹了
initWithFrame方法的理解(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么?
那就通過查資料弄明白。? 1.?initWithFrame方法是什么? initWithFrame方法用來初始化并返回一個新的視圖對象,根據指定的CGRect(尺寸)。 當然,其他UI對象,也有initWithFrame方法,但是,我們以UIView為例,來搞清楚initWithFrame方法。 2.什么時候用initWithFrame方法? 簡單的說,我們用編程方式申明,創建UIView對象時,使用initWithFrame方法。 在此,我們必須搞清楚,兩種方式來進行初始化UIView。 1.使用 Interface Builder 方式。 這種方式,就是使用nib文件。通常我們說的“拖控件” 的方式。 實際編程中,我們如果用Interface Builder 方式創建了UIView對象。(也就是,用拖控件的方式) 那么,initWithFrame方法方法是不會被調用的。因為nib文件已經知道如何初始化該View。(因為,我們在拖該view的時候,就定義好了長、寬、背景等屬性)。 這時候,會調用initWithCoder方法,我們可以用initWithCoder方法來重新定義我們在nib中已經設置的各項屬性。 2.使用編程方式。 就是我們聲明一個UIView的子類,進行“手工”編寫代碼的方式。 實際編程中,我們使用編程方式下,來創建一個UIView或者創建UIView的子類。這時候,將調用initWithFrame方法,來實例化UIView。 特別注意,如果在子類中重載initWithFrame方法,必須先調用父類的initWithFrame方法。在對自定義的UIView子類進行初始化操作。 比如:
- (id)initWithFrame:(CGRect)frame{
? ? self = [super initWithFrame:frame];// 先調用父類的initWithFrame方法
? ? if (self) {
?? ? ? ?
? ? ? ? // 再自定義該類(UIView子類)的初始化操作。
? ? ? ? _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
? ? ? ? [_scrollView setFrame:CGRectMake(0, 0, 320, 480)];
? ? ? ? _scrollView.contentSize = CGSizeMake(320*3, 480);
?? ? ? ?
? ? ? ? [self addSubview:_scrollView];
? ? }
? ? return self;
}
轉載于:https://www.cnblogs.com/yzjxdz/p/4840678.html
總結
以上是生活随笔為你收集整理的initWithFrame方法的理解(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV2学习笔记(十四):基于Op
- 下一篇: 动态规划——棋盘