添加覆盖导航栏的UIImageView

时间:2012-01-15 00:06:10

标签: objective-c ios uiview uiimageview

我想我在这里缺少一些简单的东西。我需要创建一个覆盖整个屏幕的半透明UIImageView,包括导航工具栏。我该怎么做?

这就是我要做的......

enter image description here

2 个答案:

答案 0 :(得分:17)

这是一个可能的解决方案:

UIImage *image=[UIImage imageNamed:@"whatever.png"];
UIImageView *overlay=[[UIImageView alloc] initWithImage:image];
overlay.alpha=0.5;
[[[[UIApplication sharedApplication] delegate] window] addSubview:overlay];

编辑:

  • 您可能不会为叠加层设置Alpha值,而是使用具有嵌入式透明度级别的透明PNG。不过,这是一种可能性。
  • 不使用ARC时,您应该[overlay release]

答案 1 :(得分:1)

要稍微关注上述答案,您只需要清楚视图如何剪辑到他们“拥有”设备屏幕的哪些部分。

关键点是,在导航视图中,导航栏本身不是[myController view]的一部分 - 您的视图控制器的视图就是栏下面的所有内容,您在该视图中执行的任何操作都会剪切到下面的矩形酒吧。

但是,该栏是[myAppDelegate window]的一部分。窗口基本上是设备的整个屏幕,而视图是负责管理其特定边界的子部分。因此,调用[[myAppDelegate window] addSubView:]会显示在[[myViewController view] addSubView:]不会显示的栏上方。