我试图呈现一个UIView,同时使屏幕的其余部分变暗。但是,我遇到了困难。这是我的代码:
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 :(得分:0)
您正在viewToDarken
上方添加self.hostView
,然后将self
添加到hostView
,因此当然自我将低于viewToDarken
。您需要在viewToDarken
下方添加self.hostView
。
你现在拥有的是:
hostView + self(查看)(下方) - > viewToDarken
你需要
viewToDarken(下方) - > hostView + self(查看)
你应该:
[window insertSubview:self.viewToDarken belowSubview:self.hostView];
答案 1 :(得分:0)
这里有3个视图; self
,hostView
和viewToDarken
。您正在viewToDarken
上方插入hostView
,然后将self
添加到hostView。由于self
是hostView
的子视图,因此它会低于hostView
所在的任何视图。
您可能希望将viewToDarken
添加到hostView
。或者您可以将其插入hostView
之后,如此:
[self.hostView.superview insertSubview:self.viewToDarken belowSubview:self.hostView];
无论您采用哪种方式,您都需要考虑坐标系。请务必查看-[UIView convertRect:fromView:]
。
此外,不要使用帧的绝对“魔术”数字,而是使用window.bounds:
self.viewToDarken = [[UIView alloc] initWithFrame:window.bounds];