2011-03-13 129 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: