2011-03-13 134 views
0

我在我的loadView方法中有以下代碼,無法理解爲什麼我看不到兩個不同的彩色塊。我認爲第二個'self.view ='與第二個視圖重疊,所以我只能看到綠色的視圖。但是,即使我將視圖alpha設置爲0.5,我仍然看不到藍色塊,但綠色塊變得更加透明。iPhone視圖不可見

我在這裏錯過了一些非常愚蠢的東西嗎?

- (void)loadView { 
CGRect newFrame; 
newFrame.origin = CGPointMake(100, 100); 
newFrame.size = CGSizeMake(100, 40); 
UIView *myView = [[UIView alloc] initWithFrame:newFrame]; 
myView.backgroundColor = [UIColor blueColor]; 
//myView.alpha = 0.5; 
self.view = myView; 

CGRect newFrame2; 
newFrame2.origin = CGPointMake(100, 200); 
newFrame2.size = CGSizeMake(100, 40); 
UIView *myView2 = [[UIView alloc] initWithFrame:newFrame2]; 
myView2.backgroundColor = [UIColor greenColor]; 
//myView2.alpha = 0.5; 

self.view = myView2; 

}

回答

1

您將self.view設置爲myView,然後只需幾行,將其重置爲myView2。第二個賦值替換第一個賦值,就好像您已經分配了整數變量i = 42,然後是i = 100

查看UIView的addSubview:方法。

+0

謝謝。我嘗試在第一個self.view = myView之後設置一個斷點。但沒有出現在屏幕上。我期待看到藍色方框,然後一旦我經過休息時間,將視圖更改爲綠色,但由於無法使用該功能,我不確定發生了什麼。 – Mike 2011-03-13 13:19:41

+0

一旦程序返回主循環(位於框架內),通常會更新顯示。否則,每次改變顯示器的操作都會執行昂貴的重繪操作,即使下一行需要重繪時也是如此。 – Anomie 2011-03-13 14:30:44

+0

有道理。謝謝!我能夠使用addSubview:它現在可以正常工作。 [[self view] addSubview:myView2]; – Mike 2011-03-14 01:45:44

0

self.view只能在一個時間保持一個視圖,所以在代碼:

self.view = MyView的;

然後

self.view = myView2;

你基本上用新的「myView2」取代了分配給self.view的「myView」,所以你不會看到第一個,只有第二個。

0

你只是在隨後的調用中使用self.view替換視圖。您只會看到第二個視圖,因爲它是您分配給當前視圖的最後一個視圖。

嘗試使用addSubview: