2011-12-21 76 views
5

使用以下代碼創建視圖。以編程方式創建uiview?

- (void)loadView { 

paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 430)]; 
[paintView setBackgroundColor:[UIColor yellowColor]]; 
self.view = paintView; 
[paintView release]; 

但我的問題是整個屏幕填充黃色,但我想用指定的幀。 我在基於視圖的應用程序中創建這個視圖..我做錯了什麼,重寫原始視圖?

+0

但我從50在y軸的開始。 – NoviceDeveloper 2011-12-21 10:36:07

+0

爲什麼你將paintView分配給self.view self.view = paintView; – Aadil 2011-12-21 10:41:36

回答

20

你可以用下面的方法做到這一點。

- (void)loadView { 
    /// make a empty view to self.view 
    /// after calling [super loadView], self.view won't be nil anymore. 
    [super loadView]; 

    paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 430)]; 
    [paintView setBackgroundColor:[UIColor yellowColor]]; 
    [self.view addSubview:paintView]; 
    [paintView release]; 
    }; 
+0

你的這個方法的自定義實現不應該調用超級如果你想執行任何額外的視圖初始化,請在viewDidLoad方法中執行 – 2014-03-01 19:11:29

+0

@Alexey,也許在你的情況下,你不需要實現自定義的'loadView',並且這個答案有些古怪,在iOS SDK 4/5中,這個答案是正確的,[super loadView]會爲'self.view'生成一個空視圖, 。現在在iOS 7下,我不知道它是否有效 – AechoLiu 2014-03-04 06:29:59

+1

代碼中有一個錯字,所以不會讓我編輯答案,方法是「addSubview」而不是「addSu」 bView」。 – 2014-05-11 20:37:17

0

取代self.view =paintView; 通過

[self.view addSubview: paintView]; 
+0

沒有成功....應用程序崩潰:( – NoviceDeveloper 2011-12-21 10:49:33

+2

你錯過了[超級loadView]在你的loadview,添加這個,那麼你的應用程序將不會崩潰 – iCoder4777 2011-12-21 10:56:27

+0

yup .. done..thnks – NoviceDeveloper 2011-12-21 10:58:48

0

我要變線3號中的loadView方法,你應該添加在主視圖中的子視圖上,而不是直接assiging它。

[self.view addSubview:paintview]; 
0
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,35)]; 
newView.backgroundColor=[UIColor clearColor]; 
UITextView *mytext = [[UITextView alloc] initWithFrame:CGRectMake(5.0, 0.0, 100.0, 28.0)]; 
mytext.backgroundColor = [UIColor clearColor]; 
mytext.textColor = [UIColor blackColor]; 
mytext.editable = NO; 
mytext.font = [UIFont systemFontOfSize:15]; 
mytext.text = @"Mytext"; 
mytext.scrollEnabled=NO; 
[mytext release]; 
[newView addSubview:mytext]; 
[self.view addSubview:newView];