【问题标题】:Present UIView over darkened UIWindow在变暗的 UIWindow 上显示 UIView
【发布时间】:2013-04-05 04:59:55
【问题描述】:

我正在尝试呈现 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];
                 }];

但是,我无法让视图变暗以放置在我添加的视图下方(自我)。任何想法为什么这不起作用?

谢谢!

【问题讨论】:

  • 会是 self.view 而不是 self 吗?你可以试试..
  • 不,这不是视图控制器,而是视图
  • 那我觉得应该是[self addSubview:self.hostView];

标签: ios objective-c uiview uiwindow


【解决方案1】:

您将在self.hostView 上方添加viewToDarken,然后将self 添加到hostView,所以当然self 将低于viewToDarken。您需要在self.hostView 下方添加viewToDarken

你现在拥有的是:

hostView + self(view)(下)-> viewToDarken

你需要

viewToDarken(下)-> hostView + self(view)

你应该有:

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

【讨论】:

    【解决方案2】:

    您在这里有 3 个视图; selfhostViewviewToDarken。您在hostView 上方插入viewToDarken,然后将self 添加到hostView。因为selfhostView 的子视图,所以它会在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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多