2013-04-05 33 views
0

我想呈现一个UIView,同时使屏幕的其余部分变暗。但是,我有困难。这是我的代码:目前UIView在黑暗UIWindow

UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 

self.viewToDarken = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; 
[self.viewToDarken setBackgroundColor:[UIColor blackColor]]; 
[self.viewToDarken setAlpha:0.0f]; 
[window insertSubview:self.viewToDarken aboveSubview:self.hostView]; 

[self.hostView addSubview:self]; 


[UIView animateWithDuration:0.25f 
         delay:0.0 
        options:UIViewAnimationCurveLinear 
       animations:^(void) { 
        [self setFrame:[self destinationFrame]]; 
        if (self.viewToDarken) self.viewToDarken.alpha = 0.7f; 
       }completion:^(BOOL finished) { 
        [self notifyDidShow]; 
       }]; 

但是,我不能得到的视图变暗的放入我加入视图(个体经营)以下。任何想法为什么这不起作用?

谢谢!

+0

会是self.view,而不是自我?你可以试试.. – iphonic 2013-04-05 05:03:37

+0

不,这不是一个视图控制器其视图 – 2013-04-05 05:04:14

+0

然后,我认为它应该是[self addSubview:self.hostView]; – iphonic 2013-04-05 05:05:40

回答

0

您要添加的viewToDarken上述self.hostView然后加入selfhostView所以当然自会低于viewToDarken。您需要在self.hostView以下添加viewToDarken

你现在有什么是:

hostView +自我(图)(下) - > viewToDarken

你需要

viewToDarken(下) - > hostView +自我(图)

你应该有:

[window insertSubview:self.viewToDarken belowSubview:self.hostView]; 
0

您这里有3次; selfhostViewviewToDarken。您正在插入viewToDarken以上的hostView,然后您将self添加到hostView。由于selfhostView的子视图,因此它将低于hostView以下的任何视图。

您可能反而想要将viewToDarken添加到hostView。或者你可以将其插入的hostView像这样的背后:

​​3210

无论怎样你这样做,你将需要坐标系来考虑。请务必查看-[UIView convertRect:fromView:]

而且,而是采用绝对的“魔术”号为框架,用window.bounds:

self.viewToDarken = [[UIView alloc] initWithFrame:window.bounds];