добавить UIImageView, который охватывает панель навигации - PullRequest
8 голосов
/ 15 января 2012

Я думаю, что мне здесь не хватает чего-то простого. Мне нужно создать полупрозрачный UIImageView, который охватывает весь экран, включая панель инструментов навигации. Как мне это сделать?

Это то, что я пытаюсь сделать ...

enter image description here

Ответы [ 2 ]

17 голосов
/ 15 января 2012

Это возможное решение:

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

РЕДАКТИРОВАТЬ:

  • Вполне вероятно, что вы не будете устанавливать альфа-значение для наложения, а использовать прозрачныйPNG со встроенными уровнями прозрачности.Тем не менее, это возможно.
  • Если вы не используете ARC, вам следует [overlay release].
1 голос
/ 15 января 2012

Чтобы немного сфокусировать приведенный выше ответ, вам просто нужно понять, как представления привязываются к тем частям экрана устройства, которым они «владеют».

Ключевым моментом является то, что в навигационном представлении сама панель навигации не является частью вашего [myController view] - представление контроллера вашего представления - это все, что находится под панелью, и все, что вы делаете в этом виде, обрезается до прямоугольника ниже этой панели.

Бар, однако, является частью вашего [myAppDelegate window]. Окно - это, по сути, весь экран вашего устройства, в то время как представления являются подразделами, отвечающими за управление их конкретными границами. Поэтому вызов [[myAppDelegate window] addSubView:] будет отображаться над строкой, где [[myViewController view] addSubView:] не будет.

...