Отображать прозрачный цветной ViewController над другим ViewController в iOS 7

До iOS 7, в соответствии с этим популярным вопросом Stackoverflow , чтобы показать ViewController с ясным фоном, было сделать следующее в главном ViewController:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

Однако, как я недавно обнаружил с iOS 7 (и, как прокомментировали другие, к основному ответу), вышеупомянутое решение больше не работает, а вместо этого просто показывает черный контроллер модели. Я знаю, что прозрачность в основном используется в iOS 7, так что прозрачный контроллер представлений очень вероятен. Я еще не обнаружил обходной путь этой проблемы, и мне было интересно, знает ли кто, как решить эту проблему. Спасибо!

Ответ 1

Я просто выполнил первоначальное решение и применил некоторые настройки по умолчанию и пользовательские настройки в Interface Builder и, похоже, работает.

Важный раздел (очень похожий на код вопроса):

- (IBAction)click:(id)sender {
    NSLog(@"click");


    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"TopOverVc"];

    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];
}
  • Также PLS найдет снимок IB: enter image description here

  • И результат симулятора (после нажатия кнопки):

enter image description here

Надеюсь, я не ошибался в вашем вопросе;) Счастливое кодирование!

Ответ 2

Для iOS 7 подкласс SecondViewController и попробуйте установить цвет фона представления в viewDidLoad SecondViewController

self.view.backgroundColor = [UIColor clearColor];

Ответ 3

Почему бы не использовать этот

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];

    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

 vc.view.backgroundColor = [UIColor clearColor];

Попробуйте изменить цвет BG View после загрузки. вначале меняя вид и представление. Цикл "Просмотр жизни" не выполняется таким образом